Strange audio noise when using new sound device API

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

After switching our software to the new sound device API, I've been  
getting reports on a strange audio noise being heard sometimes when  
the program starts up. In a normal case this is the sound part of the  
log (on my system):

2009-04-03 15:19:24.605000 (5)       pa_dev.c: Opened device Built-in  
Microphone(Core Audio)/Built-in Output(Core Audio) for recording and  
playback, sample rate=32000, ch=1, bits=16, 640 samples per frame,  
input latency=0 ms, output latency=0 ms
2009-04-03 15:19:24.605000 (5)    ec0x157e430: Creating AEC
2009-04-03 15:19:24.606000 (4)    ec0x157e430: AEC created,  
clock_rate=32000, channel=1, samples per frame=640, tail length=200  
ms, latency=20 ms
2009-04-03 15:19:24.606000 (5)       pa_dev.c: Starting Built-in  
Microphone stream..
2009-04-03 15:19:24.608000 (5)       pa_dev.c: Done, status=0
2009-04-03 15:19:24.622000 (5)       pa_dev.c: Player thread started
2009-04-03 15:19:24.636000 (5)    ec0x157e430: Latency bufferring  
complete
2009-04-03 15:19:24.637000 (5)       pa_dev.c: Recorder thread started

In the case where the noise is heard, this is the log (on the reported  
system):

2009-04-03 10:15:17.050000 (5) pa_dev.c: Opened device Built-in  
Microphone(Core Audio)/Built-in Output(Core Audio) for recording and  
playback, sample rate=32000, ch=1, bits=16, 640 samples per frame,  
input latency=0 ms, output latency=0 ms
2009-04-03 10:15:17.050000 (5) ec0x14f27f0: Creating AEC
2009-04-03 10:15:17.051000 (4) ec0x14f27f0: AEC created,  
clock_rate=32000, channel=1, samples per frame=640, tail length=200  
ms, latency=20 ms
2009-04-03 10:15:17.051000 (5) pa_dev.c: Starting Built-in Microphone  
stream..
2009-04-03 10:15:17.466000 (5) pa_dev.c: Player thread started
2009-04-03 10:15:17.479000 (5) ec0x14f27f0: Latency bufferring complete
2009-04-03 10:15:17.626000 (5) ec0x14f27f0: 1279 samples reduced,  
buf_cnt=3201
2009-04-03 10:15:17.639000 (5) ec0x14f27f0: 526 samples reduced,  
buf_cnt=3315
2009-04-03 10:15:17.666000 (5) ec0x14f27f0: 274 samples reduced,  
buf_cnt=3681
2009-04-03 10:15:17.679000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3521
2009-04-03 10:15:17.706000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3361
2009-04-03 10:15:17.719000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3201
2009-04-03 10:15:17.746000 (5) ec0x14f27f0: 526 samples reduced,  
buf_cnt=3315
2009-04-03 10:15:17.759000 (5) ec0x14f27f0: 274 samples reduced,  
buf_cnt=3681
2009-04-03 10:15:17.786000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3521
2009-04-03 10:15:17.799000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3361
2009-04-03 10:15:17.826000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3201
2009-04-03 10:15:17.839000 (5) ec0x14f27f0: 526 samples reduced,  
buf_cnt=3315
2009-04-03 10:15:17.866000 (5) ec0x14f27f0: 274 samples reduced,  
buf_cnt=3681
2009-04-03 10:15:17.879000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3521
2009-04-03 10:15:17.906000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3361
2009-04-03 10:15:17.919000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3201
2009-04-03 10:15:17.946000 (5) ec0x14f27f0: 526 samples reduced,  
buf_cnt=3315
2009-04-03 10:15:17.959000 (5) ec0x14f27f0: 274 samples reduced,  
buf_cnt=3681
2009-04-03 10:15:17.986000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3521
2009-04-03 10:15:17.999000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3361
2009-04-03 10:15:18.026000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3201
2009-04-03 10:15:18.039000 (5) ec0x14f27f0: 526 samples reduced,  
buf_cnt=3315
2009-04-03 10:15:18.066000 (5) ec0x14f27f0: 274 samples reduced,  
buf_cnt=3681
2009-04-03 10:15:18.079000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3521
2009-04-03 10:15:18.106000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3361
2009-04-03 10:15:18.119000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3201
2009-04-03 10:15:18.146000 (5) ec0x14f27f0: 526 samples reduced,  
buf_cnt=3315
2009-04-03 10:15:18.159000 (5) ec0x14f27f0: 274 samples reduced,  
buf_cnt=3681
2009-04-03 10:15:18.186000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3521
2009-04-03 10:15:18.199000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3361
2009-04-03 10:15:18.226000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3201
2009-04-03 10:15:18.239000 (5) ec0x14f27f0: 526 samples reduced,  
buf_cnt=3315
2009-04-03 10:15:18.266000 (5) ec0x14f27f0: 274 samples reduced,  
buf_cnt=3681
2009-04-03 10:15:18.279000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3521
2009-04-03 10:15:18.306000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3361
2009-04-03 10:15:18.319000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3201
2009-04-03 10:15:18.346000 (5) ec0x14f27f0: 526 samples reduced,  
buf_cnt=3315
2009-04-03 10:15:18.359000 (5) ec0x14f27f0: 274 samples reduced,  
buf_cnt=3681
2009-04-03 10:15:18.386000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3521
2009-04-03 10:15:18.399000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3361
2009-04-03 10:15:18.426000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3201
2009-04-03 10:15:18.439000 (5) ec0x14f27f0: 526 samples reduced,  
buf_cnt=3315
2009-04-03 10:15:18.465000 (5) pa_dev.c: Done, status=0
2009-04-03 10:15:18.465000 (5) ec0x14f27f0: 274 samples reduced,  
buf_cnt=3681
2009-04-03 10:15:18.479000 (5) ec0x14f27f0: 800 samples reduced,  
buf_cnt=3521
2009-04-03 10:15:18.494000 (5) pa_dev.c: Recorder thread started

It seems that the echo canceller is started before Portaudio is done  
sometimes. According to the wiki page about the new audio device API,  
I've done the following to setup the audio device with (software) EC  
directly:

             param.flags = PJMEDIA_AUD_DEV_CAP_EC |  
PJMEDIA_AUD_DEV_CAP_EC_TAIL
             param.ec_enabled = 1

If I omit this and do pjmedia_snd_port_set_ec() later instead, the  
echo cancellation is enabled at that point.

According to the wiki I should be able to do the first though. Is this  
correct? Maybe this is some sort of race condition, as it doesn't  
always happen and only on some systems?

Thanks in advance for the help and good work on the new API. ;)

Ruud Klaver
AG Projects



[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux