Voice Quality: PortAudio vs WIN32 Direct Sound

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

 



Hi Amit,

that's probably true, as PortAudio may try to compensate for delayed 
frames by calling the callback in successive, thus causing the 
jitter. We don't have this feature in dsound.c.

Have you tried PA with WMME backend? I got better jitter with PA WMME.

cheers,
  -benny

Amit Sharma wrote:
> Benny,
>    We have noticed a huge difference in voice quality (almost factor of 
> 10 for jitter) between using portaudio and win32 direct sound 
> implementation in pjmedia. Using port audio implementation gives us 
> choppy sound. I ran the sndtest.exe with both implementations and the 
> results are as below. No significant difference is observed for 
> portaudio after turning the PJMEDIA_PREFER_DIRECT_SOUND flag also.
> 
>      Is there a way to tune the portaudio implementation so that we can 
> have better voice quality ? I understand that the dsound.c backend is 
> unstable so we would ideally want to stay away from using the win32 
> direct sound implementation
>   
>  
>  -------------------------PortAudio 
> implementation-----------------------------------
>  
>  11:45:37.994 os_core_win32. pjlib 0.7.0-trunk for win32 initialized
>  11:45:38.073      pasound.c PA message: Pa_GetDeviceInfo: Num input 
> channels re
> ported as 65535! Changed to 2.
> 
>  11:45:38.073      pasound.c PA message: Pa_GetDeviceInfo: Num output 
> channels r
> eported as 65535! Changed to 2.
> 
>  11:45:38.229      pasound.c PortAudio sound library initialized, status=0
>  11:45:38.229      pasound.c PortAudio host api count=3
>  11:45:38.229      pasound.c Sound device count=8
>  11:45:38.229          pjlib WinNT IOCP I/O Queue created (008F62F4)
>  11:45:38.229      sndtest.c Found 8 devices:
>  11:45:38.244      sndtest.c  0: Microsoft Sound Mapper - Input 
> (capture=2, play
> back=0)
>  11:45:38.244      sndtest.c  1: SoundMAX HD Audio (capture=2, playback=0)
>  11:45:38.244      sndtest.c  2: Microsoft Sound Mapper - Output 
> (capture=0, pla
> yback=2)
>  11:45:38.244      sndtest.c  3: SoundMAX HD Audio (capture=0, playback=2)
>  11:45:38.244      sndtest.c  4: Primary Sound Capture Driver 
> (capture=2, playba
> ck=0)
>  11:45:38.244      sndtest.c  5: SoundMAX HD Audio (capture=2, playback=0)
>  11:45:38.244      sndtest.c  6: Primary Sound Driver (capture=0, 
> playback=2)
>  11:45:38.244      sndtest.c  7: SoundMAX HD Audio (capture=0, playback=2)
>  11:45:38.401      sndtest.c Testing playback device Primary Sound Driver
>  11:45:38.401      sndtest.c Testing capture device Primary Sound 
> Capture Driver
>  11:45:38.604      sndtest.c  Please wait while test is in progress (~11 
> secs)..
>  11:45:49.651      sndtest.c  Dumping results:
>  11:45:49.666      sndtest.c   Parameters: clock rate=8000Hz, 80 
> samples/frame
>  11:45:49.666      sndtest.c   Playback stream report:
>  11:45:49.666      sndtest.c     Duration: 9s.990
>  11:45:49.666      sndtest.c    Frame interval: min=0.003ms, max=37.503ms
>  11:45:49.666      sndtest.c    Jitter: min=9.982ms, avg=23.711ms, 
> max=37.498ms
>  11:45:49.666      sndtest.c   Capture stream report:
>  11:45:49.666      sndtest.c    Duration: 9s.990
>  11:45:49.666      sndtest.c    Frame interval: min=0.003ms, max=36.672ms
>  11:45:49.666      sndtest.c    Jitter: min=9.970ms, avg=23.711ms, 
> max=36.667ms
>  11:45: 49.666      sndtest.c   Checking for clock drifts:
>  11:45:49.666      sndtest.c    No clock drifts is detected
>  11:45:49.666      sndtest.c  Test completed with some warnings
>   -------------------------PortAudio 
> implementation-----------------------------------
> 
> 
> -----------------------------Win32 Direct 
> Sound---------------------------------------
>  11:51:54.401 os_core_win32. pjlib 0.7.0-trunk for win32 initialized
>  11:51:54.619       dsound.c DirectSound initialized, found 3 devices:
>  11:51:54.619       dsound.c  dev_id 0: Primary Sound Capture Driver  
> (in=2, out
> =2)
>  11:51:54.619       dsound.c  dev_id 1: SoundMAX HD Audio  (in=0, out=2)
>  11:51:54.619       dsound.c  dev_id 2: SoundMAX HD Audio  (in=2, out=0)
>  11:51:54.619          pjlib WinNT IOCP I/O Queue created (00975EBC)
>  11:51:54.619      sndtest.c Found 3 devices:
>  11:51:54.619      sndtest.c  0: Primary Sound Capture Driver 
> (capture=2, playba
> ck=2)
>  11:51: 54.619      sndtest.c  1: SoundMAX HD Audio (capture=0, playback=2)
>  11:51:54.619      sndtest.c  2: SoundMAX HD Audio (capture=2, playback=0)
>  11:51:55.057      sndtest.c  Please wait while test is in progress (~11 
> secs)..
> 
>  11:52:06.166      sndtest.c  Dumping results:
>  11:52:06.166      sndtest.c   Parameters: clock rate=8000Hz, 80 
> samples/frame
>  11:52:06.166      sndtest.c   Playback stream report:
>  11:52:06.166      sndtest.c     Duration: 10s.000
>  11:52:06.166      sndtest.c    Frame interval: min=0.008ms, max=19.914ms
>  11:52:06.166      sndtest.c    Jitter: min=0.963ms, avg=3.453ms, 
> max=19.880ms
>  11:52:06.166      sndtest.c   Capture stream report:
>  11:52:06.166      sndtest.c    Duration: 10s.000
>  11:52:06.166      sndtest.c    Frame interval: min=0.026ms, max=19.179ms
>  11:52:06.166      sndtest.c    Jitter: min=0.516ms, avg=2.362ms, 
> max=19.129ms
>  11:52: 06.166      sndtest.c   Checking for clock drifts:
>  11:52:06.182      sndtest.c    No clock drifts is detected
>  11:52:06.182      sndtest.c  Test completed with some warnings
> 
>  -----------------------------Win32 Direct 
> Sound---------------------------------------
> 
>  Regards,
> -Amit
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Visit our blog: http://blog.pjsip.org
> 
> pjsip mailing list
> pjsip at lists.pjsip.org
> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org


-- 
Benny Prijono
http://www.pjsip.org




[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