avdevice/alsa: fix indefinite stop on closing PCM capture

Fixes: https://bugs.archlinux.org/task/58619

Found-by: Elias (Bleuzen) https://bugs.archlinux.org/user/26956
Signed-off-by: Nicolas George <george@nsup.org>
This commit is contained in:
Takayuki 'January June' Suwa 2019-04-18 10:56:40 +09:00 committed by Lou Logan
parent 22c820f509
commit f9a061a31c
1 changed files with 4 additions and 2 deletions

View File

@ -300,8 +300,10 @@ av_cold int ff_alsa_close(AVFormatContext *s1)
{ {
AlsaData *s = s1->priv_data; AlsaData *s = s1->priv_data;
snd_pcm_nonblock(s->h, 0); if (snd_pcm_stream(s->h) == SND_PCM_STREAM_PLAYBACK) {
snd_pcm_drain(s->h); snd_pcm_nonblock(s->h, 0);
snd_pcm_drain(s->h);
}
av_freep(&s->reorder_buf); av_freep(&s->reorder_buf);
if (CONFIG_ALSA_INDEV) if (CONFIG_ALSA_INDEV)
ff_timefilter_destroy(s->timefilter); ff_timefilter_destroy(s->timefilter);