X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavdevice%2Falsa.c;h=ee282fac1681c8856dc1bfa53ef3e659fd98be8a;hb=90262f3fb4afe4b903888e45cc40e2116cb69683;hp=1b21beb6d51e7416dc7c8bca2d0abfbc82acadf3;hpb=23ce57af3ad684363881cdd66d5724f40963a65c;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; }