[wdmaudiodev] AW: Re: bit transparency from app to WDM audio driver depending from API?

  • From: "Johannes Freyberger" <jfreyberger@xxxxxxxxxxxxxxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Wed, 22 Aug 2018 00:13:35 +0200

Thank you very much. Probably there's no way to detect inside my driver
which API is actually used and whether it's in exclusive mode? If it's only
int->float->int shouldn't it be bit transparent up to 24 bit integers? Or is
there also a dithering added in Windows shared-mode audio engine? And is
there a kind of micro SRC added also if app and driver use the same
samplerate of i.e. 44.1 kHz as it could be some hardware doesn't run exactly
at 44100 but perhaps at 44099.993?

 

Von: wdmaudiodev-bounce@xxxxxxxxxxxxx <wdmaudiodev-bounce@xxxxxxxxxxxxx> Im
Auftrag von Matthew van Eerde (Redacted sender "Matthew.van.Eerde" for
DMARC)
Gesendet: Dienstag, 21. August 2018 22:00
An: wdmaudiodev@xxxxxxxxxxxxx
Betreff: [wdmaudiodev] Re: bit transparency from app to WDM audio driver
depending from API?

 

The Windows shared-mode audio engine operates entirely in floating-point
mode. It also has a limiter. This includes MME shared mode, DirectSound
shared mode, Media Foundation shared mode, and WASAPI shared mode. It does
not include MME exclusive mode, DirectSound exclusive mode, Media Foundation
exclusive mode, or WASAPI exclusive mode.

 

(But please don't use exclusive mode.)

 

  _____  

From: wdmaudiodev-bounce@xxxxxxxxxxxxx
<mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx>  <wdmaudiodev-bounce@xxxxxxxxxxxxx
<mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx> > on behalf of Johannes Freyberger
<jfreyberger@xxxxxxxxxxxxxxxxxxxx <mailto:jfreyberger@xxxxxxxxxxxxxxxxxxxx>


Sent: Tuesday, August 21, 2018 11:47:50 AM
To: wdmaudiodev@xxxxxxxxxxxxx <mailto:wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] bit transparency from app to WDM audio driver
depending from API? 

 

Hi all,

 

I've written a little application (based on PortAudio) which can use the
different APIs (MME, DirectSound, WASAPI or WDM Kernel Streaming) to play
audio to my WDM driver. Now when I play a 16 bit ramp (increasing the
samples one by one), I can watch in my driver that the arriving samples
don't increase one by one, but it's OK for some samples, then suddenly the
same value is received twice and afterwards one value is skipped. This is
not the case when my app uses the WDM Kernel Streaming API, then every
sample shows the expected value. But I can see it for the other three APIs.
I've ensured that there's no dithering in my app and the samples sent by my
app are steadily increasing. This looks to me like there's a SRC or a format
conversion (short->float->short) which adds dithering when I'm using MME,
DirectSound or WASAPI? While I'm aware of the windows mixer (audiodg.exe)
being active for MME and DirectSound, at least for WASAPI I thought it
should be bit transparent? Does the windows mixer always add a SRC or
dithering?

 

Thanks and best regards,

Johannes

Other related posts: