X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavdevice%2Falsa.c;h=ee282fac1681c8856dc1bfa53ef3e659fd98be8a;hb=c67d2a287502845baadf986a9c63e6117a25be3f;hp=1b21beb6d51e7416dc7c8bca2d0abfbc82acadf3;hpb=4f9a8d3fe2f9485ee08848d336ee96f15ec0e7e6;p=ffmpeg diff --git a/libavdevice/alsa.c b/libavdevice/alsa.c index 1b21beb6d51..ee282fac168 100644 --- a/libavdevice/alsa.c +++ b/libavdevice/alsa.c @@ -286,6 +286,10 @@ av_cold int ff_alsa_open(AVFormatContext *ctx, snd_pcm_stream_t mode, } } + s->pkt = av_packet_alloc(); + if (!s->pkt) + goto fail1; + s->h = h; return 0; @@ -300,12 +304,15 @@ av_cold int ff_alsa_close(AVFormatContext *s1) { AlsaData *s = s1->priv_data; - snd_pcm_nonblock(s->h, 0); - snd_pcm_drain(s->h); + if (snd_pcm_stream(s->h) == SND_PCM_STREAM_PLAYBACK) { + snd_pcm_nonblock(s->h, 0); + snd_pcm_drain(s->h); + } av_freep(&s->reorder_buf); if (CONFIG_ALSA_INDEV) ff_timefilter_destroy(s->timefilter); snd_pcm_close(s->h); + av_packet_free(&s->pkt); return 0; }