INTERACT FORUM

More => Old Versions => JRiver Media Center 23 for Windows => Topic started by: RD James on October 09, 2017, 12:06:55 am

Title: 32-bit WDM Driver?
Post by: RD James on October 09, 2017, 12:06:55 am
As I understand it, Windows' audio mixer converts everything to 32-bit floating point internally.
The JRiver WDM driver accepts 16-bit and 24-bit inputs - defaulting to 16-bit.
So the mixer converts audio to 32-bit floating point, then to 16/24 bit, JRiver converts that to 64-bit internally, and outputs it at your playback device's bit depth.
 
If the WDM driver supported a 32-bit input, there should be one fewer conversion taking place.
If it's possible for the driver to use 32-bit floating point, I'm not sure there's any reason to continue supporting 16-bit or 24-bit at all.
Title: Re: 32-bit WDM Driver?
Post by: tyler69 on October 09, 2017, 12:55:51 am
While I find this an quite interesting idea I'm trying to understand the process: do the conversions from 32bit->16bit/24bit happen in the windows domain, so one would have to tell windows mixer to output 32bit (I'm not sure if this would be a setting in playback devices in windows?)?
Title: Re: 32-bit WDM Driver?
Post by: RoderickGI on October 09, 2017, 01:08:13 am
The JRiver WDM driver accepts 16-bit and 24-bit inputs in shared mode, but do we actually know that it only accepts those bit depths when in exclusive mode?

EDIT: I proofread my posts, but sometimes words still end up missing.  :o  Added "do" to make that sentence work.  :-[
Title: Re: 32-bit WDM Driver?
Post by: RD James on October 09, 2017, 12:32:44 pm
I hadn't even considered exclusive mode playback. It is shared mode which converts all playback to 32-bit floating point internally.
If the output device is <32-bit, then the mixer has to downconvert it to 16-bit or 24-bit.
Since JRiver feeds that into their own audio engine, it gets converted to 64-bit and then back down to whatever your output device supports.
 
Currently, it looks like this:
If the WDM driver supported 32-bit floating point:
Here, none of the processing stages reduce precision, except for the final output.
 
I don't know if playback devices are capable of supporting 32-bit floating point though.
"32-bit" is supported, but I don't know if that can be 32-bit integer, 32-bit floating point, or both.
Title: Re: 32-bit WDM Driver?
Post by: blgentry on October 10, 2017, 06:31:55 pm
Is there some audible artifact you hear that you are trying to overcome?  Or just suggesting this based upon the perception that the current way is "not optimal" ?

Brian.
Title: Re: 32-bit WDM Driver?
Post by: RD James on October 10, 2017, 07:03:03 pm
Is there some audible artifact you hear that you are trying to overcome?  Or just suggesting this based upon the perception that the current way is "not optimal" ?
Unlikely to be audible, but it's one fewer conversion taking place.
I was doing some testing in response to this topic (https://yabb.jriver.com/interact/index.php/topic,112524.0.html) and having JRiver dump the audio via the Disk Writer output.
Even matching the sample rate, I was unable to get a bitperfect match to the source audio, and this seemed like a low-effort area for potential improvement.
Title: Re: 32-bit WDM Driver?
Post by: tyler69 on October 10, 2017, 11:54:06 pm
Is there some audible artifact you hear that you are trying to overcome?  Or just suggesting this based upon the perception that the current way is "not optimal" ?

Brian.

It might also reduce latency I guess.