From e2bc6dc546da8c7c31aae0d6b6c1351b2ac3e305 Mon Sep 17 00:00:00 2001 From: Marco Bascetta Date: Tue, 28 Aug 2018 09:44:00 +0200 Subject: [PATCH] audiofilters/alsa: open write handler on preprocess --- src/audiofilters/alsa.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/audiofilters/alsa.c b/src/audiofilters/alsa.c index e071d482..a189dc6e 100644 --- a/src/audiofilters/alsa.c +++ b/src/audiofilters/alsa.c @@ -1134,6 +1134,18 @@ void alsa_write_init(MSFilter *obj){ obj->data=ad; } +void alsa_write_preprocess(MSFilter *obj){ + AlsaWriteData *ad=(AlsaWriteData*)obj->data; + + if (ad->handle==NULL && ad->pcmdev!=NULL && !ad->write_started) { + ad->write_started=TRUE; + ad->handle=alsa_open_w(ad->pcmdev,16,ad->nchannels==2,ad->rate); +#ifdef EPIPE_BUGFIX + alsa_fill_w (ad->handle); +#endif + } +} + void alsa_write_postprocess(MSFilter *obj){ AlsaReadData *ad=(AlsaReadData*)obj->data; if (ad->handle!=NULL) snd_pcm_close(ad->handle); @@ -1181,13 +1193,6 @@ void alsa_write_process(MSFilter *obj){ int size; int samples; int err; - if (ad->handle==NULL && ad->pcmdev!=NULL && !ad->write_started){ - ad->write_started=TRUE; - ad->handle=alsa_open_w(ad->pcmdev,16,ad->nchannels==2,ad->rate); -#ifdef EPIPE_BUGFIX - alsa_fill_w (ad->handle); -#endif - } if (ad->handle==NULL) { ms_queue_flush(obj->inputs[0]); return; @@ -1221,6 +1226,7 @@ MSFilterDesc alsa_write_desc={ .ninputs=1, .noutputs=0, .init=alsa_write_init, + .preprocess=alsa_write_preprocess, .process=alsa_write_process, .postprocess=alsa_write_postprocess, .uninit=alsa_write_uninit, -- 2.11.0