2
我正在研究USB耳机的演示,并对USB的音频端点描述符有疑问。 我有一个工作8-48kHz 16位音频流,我可以选择音频设备的Windows属性中的任何采样频率。我用下面的描述:USB 24位音频描述符
代码:
// Interface 2: Speaker, alternate setting 1. Type 1 format descriptor.
static const UsbAudioStreamingType1DescriptorType UsbIfd2Format =
{
sizeof(UsbAudioStreamingType1DescriptorType), // uint8 bLength;
UDESC_CS_INTERFACE, // uint8 bDescriptorType;
UA_FORMAT_TYPE, // uint8 bDescriptorSubtype;
UA_FORMAT_TYPE_I, // uint8 bFormatType;
AUDIO_LSR_NOC, // uint8 bNrChannels;
AUDIO_LSR_SAMPLE_SIZE, // uint8 bSubFrameSize;
AUDIO_LSR_SAMPLE_SIZE << 3, // uint8 bBitResolution;
0x00, // uint8 bSamFreqType;
(uint8)((AUDIO_LSR_MIN_SAMPLE_FREQUENCY) & 0xFF), // uint8 first byte minumum sample frequency
(uint8)((AUDIO_LSR_MIN_SAMPLE_FREQUENCY >> 8) & 0xFF), // uint8 second byte minumum sample frequency
(uint8)(((0x10000000 | AUDIO_LSR_MIN_SAMPLE_FREQUENCY) >> 16) & 0xFF), // uint8 third byte minumum sample frequency
(uint8)((AUDIO_LSR_MAX_SAMPLE_FREQUENCY) & 0xFF), // uint8 first byte maximum sample frequency
(uint8)((AUDIO_LSR_MAX_SAMPLE_FREQUENCY >> 8) & 0xFF), // uint8 second byte maximum sample frequency
(uint8)(((0x10000000 | AUDIO_LSR_MAX_SAMPLE_FREQUENCY) >> 16) & 0xFF), // uint8 third byte maximum sample frequency
};
// Interface 2: Speaker, alternate setting 1. Audio endpoint descriptor.
static const UsbAudioEndpointDescriptorType UsbIfd2StdEndpoint =
{
sizeof(UsbAudioEndpointDescriptorType), // uint8 bLength;
USB_DT_ENDPOINT, // uint8 bDescriptorType;
USB_DIR_OUT | USB_EP_AUDIO_RX, // uint8 bEndpointAddress;
0x01, // uint8 bmAttributes;
((AUDIO_LSR_MAX_SAMPLE_FREQUENCY/1000) * AUDIO_LSR_SAMPLE_SIZE) * AUDIO_LSR_NOC, // uint16 wMaxPacketSize;
0x01, // uint8 bInterval;
0x00, // uint8 bRefresh;
0x00, // uint8 bSynchAddress;
};
通过这些设置:
// Sample frequencies
#define AUDIO_LSR_MIN_SAMPLE_FREQUENCY 0x01F40 // 8kHz
#define AUDIO_LSR_MAX_SAMPLE_FREQUENCY 0x0BB80 // 48kHz
// Sample size
#define AUDIO_LSR_SAMPLE_SIZE 0x02 // in bytes
// Defines for mono/stereo.
#define AUDIO_LSR_NOC 0x02 // Number Of Channels (stereo)
现在我想将其更改为24位8-48KHZ流。通过将AUDIO_LSR_SAMPLE_SIZE更改为0x03。当我这样做时,窗口属性窗口中的采样频率选择框在48kHz处变灰,所以我不能选择任何其他频率。当我玩这个设备的时候,流是24bit。 我已经尝试卸载驱动程序,但这并没有改变任何东西。
有没有人遇到这个问题,或者没有人有一个想法可能会导致这个问题?