[wdmaudiodev] Re: USB audio record problem

  • From: Matthew van Eerde <Matthew.van.Eerde@xxxxxxxxxxxxx>
  • To: "wdmaudiodev@xxxxxxxxxxxxx" <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Wed, 26 Oct 2011 17:57:11 +0000

How are you aligning the 24 valid bits in the 32-bit containers?  The valid 
bits should be the most significant bits, at least when handed to the app (I 
don't know about on the wire.)  In this capture dump it looks like they're the 
least significant bits.  Apps would interpret this data as:

FFFFFF--  FFFFFF--  000000--  FFFFFF--  000000--  FFFFFF--
000000--  FFFFFF--  000000--  FFFFFF--  000000--  FFFFFF--
FFFFFF--  000000--  000000--  FFFFFF--  FFFFFF--  000000--
FFFFFF--  FFFFFF--  000000--  FFFFFF--  FFFFFF--  000000--

... that is, a bunch of -1s and 0s.

I would expect to see this instead:
FFFF4F--  FFFFBA--  000016--  FFFF76--  0000AD--  FFFFD6--
000078--  FFFFD2--  000021--  FFFFC4--  000011--  FFFF82--
FFFF8E--  000092--  000040--  FFFFFA--  FFFFA4--  000046--
FFFFAA--  FFFFFB--  000018--  FFFFB8--  FFFFF7--  00001C-

... which could easily be valid audio data (at very low amplitude), or could be 

From: wdmaudiodev-bounce@xxxxxxxxxxxxx 
[mailto:wdmaudiodev-bounce@xxxxxxxxxxxxx] On Behalf Of Daniel E. Germann
Sent: Wednesday, October 26, 2011 10:48 AM
To: wdmaudiodev@xxxxxxxxxxxxx
Subject: [wdmaudiodev] Re: USB audio record problem

I changed our USB audio device so that the record side sends 24-bit data in a 
32-bit field to the PC.  I can see what appears to be valid 24-in-32 audio data 
on our USB analyzer.  But I'm still getting data that looks like this in the 
capture buffer:

00000078  FFFFFFD2  00000021  FFFFFFC4  00000011  FFFFFF82
FFFFFF8E  00000092  00000040  FFFFFFFA  FFFFFFA4  00000046

That's using WAVE_FORMAT_EXTENSIBLE with wBitsPerSample set to 32 and 
wValidBitsPerSample set to 24 -- which exactly matches the audio format sent by 
the USB device.

There's clearly something wrong here.  Either I'm missing something in our USB 
Audio Class device implementation (although the device works fine in 24-bit 
mode on Windows 7), or there's something wrong in the wave format descriptors 
in our test program (which also works fine on Windows 7), or there's some kind 
of problem in how Windows XP deals with record data from 24-bit USB audio 
devices.  Playback works fine.  And if I open the record device in 16-bit mode 
(even though it's still sending 24-bit audio), that works, too.  This only 
happens when the device is opened in 24-bit mode.

Can anyone shed some light on this problem?  Does anyone have a USB Audio Class 
input (record) device with 24-bit audio working with the in-the-box drivers on 
Windows XP?


On Fri, 14 Oct 2011 19:55:22 -0500
 "Daniel E. Germann" <deg@xxxxxxxx<mailto:deg@xxxxxxxx>> wrote:
> Hi, Matthew.
> Interesting.  So you're saying that KMixer won't do an
>automatic bit depth conversion in that case?  It
>certainly seems to be doing bit depth conversion for
>16-bit-in-16-bit-container mode.  But it won't do it for
>24-bit-in-32-bit-container mode?  So if I change the USB
>format descriptor to 24-bit-in-32-bit-container mode (and
>make the corresponding alignment changes to the data),
>then all will be well?  I hate to do that because it
>wastes a lot of USB bandwidth.
> And that still doesn't explain why when I open the
>device in 24-bit-in-24-bit-container mode, it doesn't
>work.  That is the one format that ought to work -- it's
>exactly what the device supports.  But all I get in that
>mode are 000000's and FFFFFF's.  The only format I can
>get to work is 16-bit-in-16-bit-container.  Do you have
>any idea why this doesn't work?
> Can any other USB audio device developers shed some
>light here?  Are you all using 24-bit-in-32-bit-container
>mode for your audio?  Is anyone successfully using
>24-bit-in-24-bit-container mode?
> Thank you,
> -Dan
> -----
>From: Matthew van Eerde
> To: <wdmaudiodev@xxxxxxxxxxxxx<mailto:wdmaudiodev@xxxxxxxxxxxxx>>
> Date: Sat, 15 Oct 2011 00:26:42 +0000
> If the device supports only 24-bits-in-24-bit
>containers, I would expect the
> driver to fail any request for 24-bit-in-32-bit
>containers.  If the driver is
> falsely accepting requests for formats that the hardware
>doesn't support, that
> would explain why the audio data is corrupted.
****************** WDMAUDIODEV addresses: Post message: 
mailto:wdmaudiodev@xxxxxxxxxxxxx Subscribe: 
mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe Unsubscribe: 
mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe Moderator: 
mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx URL to WDMAUDIODEV page: 

Other related posts: