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