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

  • From: "Matthew van Eerde" <dmarc-noreply@xxxxxxxxxxxxx> (Redacted sender "Matthew.van.Eerde" for DMARC)
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Tue, 21 Aug 2018 22:50:27 +0000

  *   there’s no way to detect inside my driver which API is actually used and 
whether it’s in exclusive mode


The driver doesn’t know, or care, whether the app (or apps) above it are using 
exclusive mode or shared mode, nor what API (or combination of APIs) they are 
using.


  *   If it’s only int->float->int shouldn’t it be bit transparent up to 24 bit 
integers?

*shrug*


  *   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?

Usually a micro SRC is only inserted if the application in question has to 
connect two clocks.

If it’s just music playback, then the whole clock is driven by the DAC. If the 
effective sample rate is a little slow, then the music just takes a little 
longer to play.

But if the microphone and the speaker are both involved, and the ADC and DACs 
are at different effective sample rates, then yes, a micro SRC is (hopefully!) 
inserted.

________________________________
From: wdmaudiodev-bounce@xxxxxxxxxxxxx <wdmaudiodev-bounce@xxxxxxxxxxxxx> on 
behalf of Johannes Freyberger <jfreyberger@xxxxxxxxxxxxxxxxxxxx>
Sent: Tuesday, August 21, 2018 3:13:35 PM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] AW: Re: bit transparency from app to WDM audio driver 
depending from API?

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: