Does UAC 2.0 support 24bit when Fs < 44.1kHz?

If you have a simple question and just want an answer.
xchips
Active Member
Posts: 51
Joined: Wed Jun 22, 2016 8:08 am

Does UAC 2.0 support 24bit when Fs < 44.1kHz?

Post by xchips »

hi, all.

I'm wondering if UAC 2.0 can support 24bit when Fs < 44.1kHz. I added the lower frequencies cases into the ref design and they can work correctly but only @ 16bit format.
There is no 24bit format when Fs < 44.1kHz, see this image:
UAC 2.0 format list.png
UAC 2.0 format list.png (20.8 KiB) Viewed 8320 times
UAC 2.0 format list.png
UAC 2.0 format list.png (20.8 KiB) Viewed 8320 times
If yes, how to open the 24-bit options please?
If no, can I use UAC 1.0 and add those Fs cases into the USB descriptors and select it? Because I did it before, and unfortunately even I added the lower frequency cases into the
USB descriptor, the device manager still cannot show them in the list, see this image(UAC 1.0):
UAC1.0 format list.png
UAC1.0 format list.png (19.12 KiB) Viewed 8320 times
UAC1.0 format list.png
UAC1.0 format list.png (19.12 KiB) Viewed 8320 times
I don't know what's wrong with my code.

I prefer to use UAC 2.0 to implement those lower frequency cases at 24bit. UAC 1.0 is a plan B.

Any idea will be appreciated.


User avatar
akp
XCore Expert
Posts: 578
Joined: Thu Nov 26, 2015 11:47 pm

Post by akp »

The problem isn't UAC; the problem is Windows won't identify as valid any format using 24bits/sample below 44.1kHz. Who knows why Redmond came up with this stupid idea not to support lower sample rates at high bit depths? I suspect if you plugged it into a Linux machine you would see the sample rates and bit depths you want.
xchips
Active Member
Posts: 51
Joined: Wed Jun 22, 2016 8:08 am

Post by xchips »

@akp
Thank you very much for your help again.
So UAC 2.0, the lower frequency cases at 24-bit issue are all about windows.

btw, do you know why UAC 1.0 only can show 44.1kHz and 48kHz even I added the lower frequency cases into the USB descriptor please ( just like the image shows above)?

Thanks again.
User avatar
akp
XCore Expert
Posts: 578
Joined: Thu Nov 26, 2015 11:47 pm

Post by akp »

Similar problem. Windows won't recognize them as valid with UAC 1 built in driver. To be honest I don't know about UAC 2 because I explored this issue with UAC 1 only. I suppose that you are using Thesycon driver for UAC 2? Perhaps there is a limitation there but I sense the limitation might be somewhere else in Windows sound and not in the driver itself, but that I don't know.

So far as I know your only solution for Windows is to use 44.1kHz or 48kHz as your lowest sample rate that supports 24 bits/sample regardless UAC 1 or 2. Theb you can decimate to a lower rate in Windows itself. Sorry. Obviously it is very poor design whoever did it. Do you mind me asking why you want the lower sample rates? e.g power consumption? and can you use a different platform other than Windows? there might be another way to achieve want you want.
xchips
Active Member
Posts: 51
Joined: Wed Jun 22, 2016 8:08 am

Post by xchips »

@akp,
Thank you.
yes, I'm using Thesycon driver for UAC 2.0.

Theb you can decimate to a lower rate in Windows itself
I had that idea but I think it is too complicated too.

Do you mind me asking why you want the lower sample rates? e.g power consumption?
Just because of my job.

and can you use a different platform other than Windows? there might be another way to achieve want you want.
Yeah, I believe. And unfortunately, I don't have a different platform.

Thanks again.
User avatar
akp
XCore Expert
Posts: 578
Joined: Thu Nov 26, 2015 11:47 pm

Post by akp »

Sounds like you just tell your boss you can't get lower sample rates (with 24 bits/sample I mean). If he or she has a problem with it they can take it up with Bill Gates.

With respect I would say that you need something because of your job is not a good reason. 48ksps at 24 bits/sample will give you everything that lower sample rates can give you and more (i.e. wider audio bandwidth). The cost is more power or shorter recording times, etc. If you know the technical reason you want lower sampling rate then people can give you alternative solutions. If you just want to give a lot of choices to customers, just put in the sample rates and bit depths that Windows will support and the customer will be happy; they don't know any different with any other Windows audio interface.
xchips
Active Member
Posts: 51
Joined: Wed Jun 22, 2016 8:08 am

Post by xchips »

@akp,
Thank you for replying my thread again.

Do you mind me asking why you want the lower sample rates? e.g power consumption?
Just because of my job.
Sorry for the simple answer on this question, we need the lower frequency cases to test our IP, it actually about the power consumption etc.

So I guess I still have to figure out a method to implement those lower frequency cases. I had used STM32 MCU to implement them before, but one Fs needs one firmware.
This time I'm trying to use 1 firmware vs. all lower frequency cases, and this is what I tried to ask for help here.

Thank you for your time again.
User avatar
akp
XCore Expert
Posts: 578
Joined: Thu Nov 26, 2015 11:47 pm

Post by akp »

If your IP runs at a slower clock rate then you could use the sample rate conversion libraries to up sample to 48kHz e.g. there is the SSRC for up sampling by powers of 2 I believe and the DSP lib for up sampling by 3 e.g. 16kHz to 48kHz. Good luck.
xchips
Active Member
Posts: 51
Joined: Wed Jun 22, 2016 8:08 am

Post by xchips »

@akp
Thank you very much for your idea.
I haven't learn that part yet, I will keep it as a plan C for me at the moment.
User avatar
akp
XCore Expert
Posts: 578
Joined: Thu Nov 26, 2015 11:47 pm

Post by akp »

I'm surprised you were able to get the lower FS rates @ 24bits/sample with the STM32 MCU on Windows. My experience with STM32 UAC 1 is what I was drawing on for my comments. This is what I have in my STM32 USB audio code (USB microphone driver) based on my experiments with Windows WASAPI driver, UAC 1:

Code: Select all

/* Following combinations of sampling frequency and bit depth seem to work
 * on Windows using the default driver:
 * 16 bits/sample:  8k, 16k, 32k, 48k, 96k, 192k
 * 24 bits/sample: 48k, 96k
 * Note: channel count must be even to support 24 bits/sample in Windows
 *
 * Clearly it's annoying Windows can't use some valid combinations which would
 * enable more channels at lower sample rate and high resolution (e.g. 8k / 24)
 *
 * Windows doesn't support 8 or 32 bit data so this driver is optimized for 16
 * and 24 bit output, with 16, 24 (packed or RJ in 32 bits), or 32 bit input.
 *
 * Linux or Mac might be different.
 */
Post Reply