測試系統: macOS Sierra 10.12.5bash
UAC2.0上要支持多個採樣率,只要在ClockSource Range Request的反饋(GetRequest)中進行添加便可測試
SAMPLE_FREQ_NUM(2), /* wNumSubRanges */ SAMPLE_FREQ_4B(I2S_AudioFreq_48k), /* dMIN(1) */ SAMPLE_FREQ_4B(I2S_AudioFreq_48k), /* dMAX(1) */ SAMPLE_FREQ_4B(0x00), /* dRES(1) */ SAMPLE_FREQ_4B(I2S_AudioFreq_96k), /* dMIN(2) */ SAMPLE_FREQ_4B(I2S_AudioFreq_96k), /* dMAX(2) */ SAMPLE_FREQ_4B(0x00), /* dRES(2) */
但我遇到一個問題,若是你在端點描述符中申明的最大包大小達不到上述列表採樣率的要求, OSX是不會顯示未達到要求的採樣率選項的。例如,使用下面的端點描述符,96K採樣率的選項就不會出現:spa
/* Endpoint 1 - Standard Descriptor */ AUDIO_20_STANDARD_ENDPOINT_DESC_SIZE, /* bLength */ USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */ AUDIO_OUT_EP, /* bEndpointAddress 3 out endpoint for Audio */ USB_ENDPOINT_TYPE_ADAPTIVE, /* bmAttributes */ AUDIO_PACKET_SZE(I2S_AudioFreq_48k), /* XXXX wMaxPacketSize in Bytes (Freq(Samples)*2(Stereo)*2(HalfWord)) */ 0x01, /* bInterval */ /* 07 byte*/