]> git.sesse.net Git - ffmpeg/blobdiff - libavdevice/alsa.c
Bump Versions before release/4.4 branch
[ffmpeg] / libavdevice / alsa.c
index 1b21beb6d51e7416dc7c8bca2d0abfbc82acadf3..ee282fac1681c8856dc1bfa53ef3e659fd98be8a 100644 (file)
@@ -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;
 }