有那位做过USB 音频输出的?可知道能否配置成直接通过USB输出压缩文件?<br />想先写一个声音输出的,花了老长时间写了下面一个描述符,一运行就会死机,请高手指点.<br />code const complete_configuration ConfigDesc =<br />{<br /> { // Standard configuration descriptor 配置 :三个interfaces<br /> 0x09, // bLength (9)<br /> 0x02, // bDescriptorType (CONFIGURATION)<br /> 0x7100, // wTotallength (145) // 0x71<br /> 0x02, // bNumInterfaces (3) //0x02<br /> 0x01, // bConfigurationValue (1)<br /> 0x00, // iConfiguration (none)<br /> 0x80, // bmAttributes (bus-powered)<br /> 0x32, // bMaxPower (100 mA)<br /> },<br /> { /* Audio control interface 音频控制 接口描述符 */<br /> 0x09, // bLength (9)<br /> 0x04, // bDescriptorType (INTERFACE)<br /> 0x00, // bInterfaceNumber (0)<br /> 0x00, // bAlternateSetting (none)<br /> 0x00, // bNumEndpoints (none)<br /> 0x01, // bInterfaceClass (AUDIO)<br /> 0x01, // bInterfaceSubClass (AUDIO_CONTROL)<br /> 0x00, // bInterfaceProtocol (none)<br /> 0x00 // iInterface (none)<br /> },<br /> // ----------------------------------------------------------------------------------------- <br /> { /* Audio class-specific interface header 音频控制类说明 */<br /> 0x09, // bLength (9)<br /> 0x24, // bDescriptorType (CS_INTERFACE) ----------------------- cs_interface<br /> 0x01, // bDescriptorSubtype (HEADER) ------header<br /> 0x0001, // bcdADC (1.0)<br /> 0x2B00, // wTotalLength (43)<br /> 0x01, // bInCollection (1 streaming interface)<br /> 0x01 // baInterfaceNr (interface 1 is stream)<br /> },<br /> { // Audio class-specific output terminal<br /> 0x09, // bLength (9)<br /> 0x24, // bDescriptorType (CS_INTERFACE)<br /> 0x03, // bDescriptorSubtype (OUTPUT_TERMINAL) ----- output terminal<br /> 0x01, // bTerminalID (3) // 3 //<br /> 0x0101, // wTerminalType (USB streaming)<br /> 0x00, // bAssocTerminal (none)<br /> 0x02, // bSourceID (feature unit 2)<br /> 0x00 // iTerminal (none)<br /> },<br /> { // Audio class-specific feature unit<br /> 0x0D, // bLength (13)<br /> 0x24, // bDescriptorType (CS_INTERFACE)<br /> 0x06, // bDescriptorSubtype (FEATURE_UNIT) ------feature unit<br /> 0x02, // bUnitID (2)<br /> 0x01, // bSourceID (input terminal 1)<br /> 0x02, // bControlSize (2 bytes)<br /> 0x0100, // Master controls<br /> 0x0000, // Channel 0 controls<br /> 0x0000, // Channel 1 controls<br /> 0x00 // iFeature (none)<br /> },<br /> { // Audio class-specific input terminal<br /> 0x0C, // bLength (12)<br /> 0x24, // bDescriptorType (CS_INTERFACE)<br /> 0x02, // bDescriptorSubtype (INPUT_TERMINAL) -----input terminal // 02 //<br /> 0x03, // bTerminalID (1)<br /> 0x1007, // wTerminalType (radio receiver) // 1007 //<br /> 0x00, // bAssocTerminal (none)<br /> 0x02, // bNrChannels (2)<br /> 0x0300, // wChannelConfig (left, right)<br /> 0x00, // iChannelNames (none)<br /> 0x00 // iTerminal (none)<br /> },<br /> <br /> // ----------------------------------------------------------------------------------------- <br /> { /* Audio zero-bandwidth interface */<br /> 0x09, // bLength (9)<br /> 0x04, // bDescriptorType (INTERFACE)<br /> 0x01, // bInterfaceNumber (1)<br /> 0x00, // bAlternateSetting (0)<br /> 0x00, // bNumEndpoints (0)<br /> 0x01, // bInterfaceClass (AUDIO)<br /> 0x02, // bInterfaceSubClass (AUDIO_STREAMING)<br /> 0x00, // bInterfaceProtocol (none)<br /> 0x00 // iInterface (none)<br /> },<br /> { // Audio streaming interface (alternate)<br /> 0x09, // bLength (9)<br /> 0x04, // bDescriptorType (INTERFACE)<br /> 0x01, // bInterfaceNumber (1)<br /> 0x01, // bAlternateSetting (1)<br /> 0x01, // bNumEndpoints (1)<br /> 0x01, // bInterfaceClass (AUDIO)<br /> 0x02, // bInterfaceSubClass (AUDIO_STREAMING)<br /> 0x00, // bInterfaceProtocol (none)<br /> 0x00 // iInterface (none)<br /> },<br /> { // Audio class-specific stream interface --------------- AS interface descriptor<br /> 0x07, // bLength (7)<br /> 0x24, // bDescriptorType (CS_INTERFACE)<br /> 0x01, // bDescriptorSubtype (AS_GENERAL) ---- as general<br /> 0x03, // bTerminalLink (terminal 3)<br /> 0x00, // bDelay (none)<br /> 0x0100 // wFormatTag (PCM format)<br /> },<br /> { // Audio class-specific type I format<br /> 0x0B, // bLength (11)<br /> 0x24, // bDescriptorType (CS_INTERFACE)<br /> 0x02, // bDescriptorSubtype (FORMAT_TYPE) ---- for type<br /> 0x01, // bFormatType (TYPE_I)<br /> 0x02, // bNrChannels (2)<br /> 0x02, // bSubFrameSize (2)<br /> // The next field should be 10, but 16 works with more standard software<br /> 0x10, // bBitResolution (16)<br /> 0x01, // bSamFreqType (1 sampling frequency)<br /> 0x80, // 48,000 Hz (byte 0)<br /> 0xBB, // 48,000 Hz (byte 1)<br /> 0x00 // 48,000 Hz (byte 2)<br /> },<br /> { // Audio streaming isochronous endpoint<br /> 0x09, // bLength (9)<br /> 0x05, // bDescriptorType (ENDPOINT)<br /> 0x03, // bEndpointAddress (EP3 in) //83//<br /> 0x05, // bmAttributes (asynchronous)<br /> 0x0002, // wMaxPacketSize (512)<br /> 0x01, // bInterval (1 millisecond)<br /> 0x00, // bRefresh (0)<br /> 0x00 // bSynchAddress (no synchronization)<br /> },<br /> { // Audio isochronous endpoint<br /> 0x07, // bLength (7)<br /> 0x25, // bDescriptorType (CS_ENDPOINT)<br /> 0x01, // bDescriptorSubtype (EP_GENERAL)<br /> 0x00, // bmAttributes (none)<br /> 0x02, // bLockDelayUnits (PCM samples)<br /> 0x0000 // wLockDelay (0)<br /> }<br />}; // End of ConfigDesc<br /> |
|