[wdmaudiodev] Re: USB audio record problem

  • From: "Daniel E. Germann" <deg@xxxxxxxx>
  • To: <wdmaudiodev@xxxxxxxxxxxxx>
  • Date: Wed, 26 Oct 2011 12:47:42 -0500

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:

FFFFFF4F  FFFFFFBA  00000016  FFFFFF76  000000AD  FFFFFFD6 
00000078  FFFFFFD2  00000021  FFFFFFC4  00000011  FFFFFF82 
FFFFFF8E  00000092  00000040  FFFFFFFA  FFFFFFA4  00000046 
FFFFFFAA  FFFFFFFB  00000018  FFFFFFB8  FFFFFFF7  0000001C 

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?

Thanks,
-Dan


On Fri, 14 Oct 2011 19:55:22 -0500
 "Daniel E. Germann" <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>
> 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: http://www.wdmaudiodev.com/

Other related posts: