[pulseaudio-discuss] Test and Evaluate Echo Cancellation in an Embedded Device

Arun Raghavan arun at arunraghavan.net
Wed Jun 1 10:09:59 UTC 2016



On Sat, 28 May 2016, at 12:05 AM, Caio wrote:
> I forgot the pulseaudio log.
> 
> 
> Jan 01 05:39:46 colibri-imx6 pulseaudio[1230]: E: [alsa-source-HiFi
> wm8962-0] module-echo-cancel.c: Doing resync
> Jan 01 05:39:46 colibri-imx6 pulseaudio[1230]: E: [alsa-source-HiFi
> wm8962-0] module-echo-cancel.c: Playback after capture (-1705478), drop
> sink 109170
> Jan 01 05:39:46 colibri-imx6 pulseaudio[1230]: E: [alsa-source-HiFi
> wm8962-0] module-echo-cancel.c: Playback too far ahead (261821), drop
> source 16756
> Jan 01 05:39:48 colibri-imx6 pulseaudio[1230]: E: [alsa-source-HiFi
> wm8962-0] module-echo-cancel.c: Playback after capture (-168495), drop
> sink
> 10802
> Jan 01 05:48:55 colibri-imx6 pulseaudio[1230]: E: [alsa-source-HiFi
> wm8962-0] module-echo-cancel.c: Doing resync
> Jan 01 05:48:55 colibri-imx6 pulseaudio[1230]: E: [alsa-source-HiFi
> wm8962-0] module-echo-cancel.c: Playback after capture (-2897082), drop
> sink 185432

What is the sink device in this case? It looks like there is a lot of
drift between the two. You could try setting drift_compenasation=1 in
the aec_args for the webrtc canceller.

> 
> 2016-05-27 15:28 GMT-03:00 Caio <caiortp at gmail.com>:
> 
> > Arun,
> >
> > Sorry for the delay.
> >
> > Thanks for the answers.
> >
> > "I'm not sure I follow correctly -- you're saying that if you do things
> > this way, the AEC works fine?"
> >
> > Yes, I follow correcty your instruction is working very good.
> >
> >
> >
> > But Now I'm trying to avoid the "audio underrun" (the audio is cracking).
> > When I use the paplay the audio is ok and the cpu is around 14%, when I
> > start the test the cpu goes to 26% and the audio start to cracking.
> > I'm having difficult to configure the pulseaudio.
> >
> >
> > Thank you very much.
> >
> > The gstreamer log:
> >
> > root at colibri-imx6-jfl:~/wavs# ./teste_pulseaudio_echo.sh input.48.wav
> > Setting pipeline to PAUSED ...
> > 0:00:00.093887667  1258  0x1bac100 WARN                 basesrc
> > /home/icchw/oe-core/build/out-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/gstreamer1.0/1.4.1-r0/gstreamer-1.4.1/libs/gst/base/gstbasesrc.c:3460:gst_base_src_start_complete:<filesrc0>
> > pad not activated yet
> > 0:00:00.094892667  1258  0x1bb5750 FIXME                default
> > /home/icchw/oe-core/build/out-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/gstreamer1.0/1.4.1-r0/gstreamer-1.4.1/gst/gstutils.c:3643:gst_pad_create_stream_id_internal:<wavparse0:src>
> > Creating random stream-id, consider implementing a deterministic way of
> > creating a stream-id
> > Pipeline is live and does not need PREROLL ...
> > Setting pipeline to PLAYING ...
> > New clock: GstPulseSrcClock
> > 0:00:00.098627667  1258  0x1bb5780 FIXME                default
> > /home/icchw/oe-core/build/out-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/gstreamer1.0/1.4.1-r0/gstreamer-1.4.1/gst/gstutils.c:3643:gst_pad_create_stream_id_internal:<pulsesrc0:src>
> > Creating random stream-id, consider implementing a deterministic way of
> > creating a stream-id
> > 0:00:01.350294000  1258  0x1bb5750 WARN           audiobasesink
> > /home/icchw/oe-core/build/out-glibc/work/armv7at2hf-vfp-neon-mx6qdl-angstrom-linux-gnueabi/gstreamer1.0-plugins-base/1.4.1-r0/gst-plugins-base-1.4.1/gst-libs/gst/audio/gstaudiobasesink.c:1288:gst_audio_base_sink_skew_slaving:<pulsesink0>
> > correct clock skew 22728553 > 20000000
> > 0:00:01.904267667  1258  0x1bb5750 WARN           audiobasesink
> > /home/icchw/oe-core/build/out-glibc/work/armv7at2hf-vfp-neon-mx6qdl-angstrom-linux-gnueabi/gstreamer1.0-plugins-base/1.4.1-r0/gst-plugins-base-1.4.1/gst-libs/gst/audio/gstaudiobasesink.c:1288:gst_audio_base_sink_skew_slaving:<pulsesink0>
> > correct clock skew 21428670 > 20000000
> > 0:00:03.019438001  1258  0x1bb5750 WARN           audiobasesink
> > /home/icchw/oe-core/build/out-glibc/work/armv7at2hf-vfp-neon-mx6qdl-angstrom-linux-gnueabi/gstreamer1.0-plugins-base/1.4.1-r0/gst-plugins-base-1.4.1/gst-libs/gst/audio/gstaudiobasesink.c:1288:gst_audio_base_sink_skew_slaving:<pulsesink0>
> > correct clock skew 20980685 > 20000000
> > 0:00:03.947815667  1258  0x1bcb5a0 WARN                   pulse
> > /home/icchw/oe-core/build/out-glibc/work/armv7at2hf-vfp-neon-angstrom-linux-gnueabi/gstreamer1.0-plugins-good/1.4.1-r0/gst-plugins-good-1.4.1/ext/pulse/pulsesink.c:678:gst_pulsering_stream_underflow_cb:<pulsesink0>
> > Got underflow

These underflows sound bad. Does capture work fine without AEC?

-- Arun


More information about the pulseaudio-discuss mailing list