Files
usbx/common/core/inc/ux_class_audio10.h
Bo Chen (from Dev Box) a6087c2efa Update copyright.
2024-01-29 14:21:32 +08:00

1201 lines
48 KiB
C

/***************************************************************************
* Copyright (c) 2024 Microsoft Corporation
*
* This program and the accompanying materials are made available under the
* terms of the MIT License which is available at
* https://opensource.org/licenses/MIT.
*
* SPDX-License-Identifier: MIT
**************************************************************************/
/**************************************************************************/
/**************************************************************************/
/** */
/** USBX Component */
/** */
/** Audio Class */
/** */
/**************************************************************************/
/**************************************************************************/
/**************************************************************************/
/* */
/* COMPONENT DEFINITION RELEASE */
/* */
/* ux_class_audio10.h PORTABLE C */
/* 6.1.12 */
/* AUTHOR */
/* */
/* Chaoqiong Xiao, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This file contains all the header and structures used by the */
/* USBX Audio Class (UAC) 1.0. */
/* */
/* RELEASE HISTORY */
/* */
/* DATE NAME DESCRIPTION */
/* */
/* 07-29-2022 Chaoqiong Xiao Initial Version 6.1.12 */
/* */
/**************************************************************************/
#ifndef UX_CLASS_AUDIO10_H
#define UX_CLASS_AUDIO10_H
/* Define Audio Class Codes. */
#define UX_CLASS_AUDIO10_CLASS 0x01
#define UX_CLASS_AUDIO10_SUBCLASS_UNDEFINED 0x00
#define UX_CLASS_AUDIO10_SUBCLASS_AUDIOCONTROL 0x01
#define UX_CLASS_AUDIO10_SUBCLASS_AUDIOSTREAMING 0x02
#define UX_CLASS_AUDIO10_SUBCLASS_MIDISTREAMING 0x03
#define UX_CLASS_AUDIO10_PROTOCOL_UNDEFINED 0x00
/* Define Audio Class desctiptor types. */
#define UX_CLASS_AUDIO10_CS_UNDEFINED 0x20
#define UX_CLASS_AUDIO10_CS_DEVICE 0x21
#define UX_CLASS_AUDIO10_CS_CONFIGURATION 0x22
#define UX_CLASS_AUDIO10_CS_STRING 0x23
#define UX_CLASS_AUDIO10_CS_INTERFACE 0x24
#define UX_CLASS_AUDIO10_CS_ENDPOINT 0x25
/* Define Audio Class AC interface descriptor subclasses. */
#define UX_CLASS_AUDIO10_AC_UNDEFINED 0x00
#define UX_CLASS_AUDIO10_AC_HEADER 0x01
#define UX_CLASS_AUDIO10_AC_INPUT_TERMINAL 0x02
#define UX_CLASS_AUDIO10_AC_OUTPUT_TERMINAL 0x03
#define UX_CLASS_AUDIO10_AC_MIXER_UNIT 0x04
#define UX_CLASS_AUDIO10_AC_SELECTOR_UNIT 0x05
#define UX_CLASS_AUDIO10_AC_FEATURE_UNIT 0x06
#define UX_CLASS_AUDIO10_AC_PROCESSING_UNIT 0x07
#define UX_CLASS_AUDIO10_AC_EXTENSION_UNIT 0x08
/* Define Audio Class Processing Unit (PU) Process Types (PT). */
#define UX_CLASS_AUDIO10_PROCESS_UNDEFINED 0x00
#define UX_CLASS_AUDIO10_PROCESS_UP_DOWN_MIX 0x01
#define UX_CLASS_AUDIO10_PROCESS_DOLBY_PROLOGIC 0x02
#define UX_CLASS_AUDIO10_PROCESS_3D_STEREO_EXTENDER 0x03
#define UX_CLASS_AUDIO10_PROCESS_REVERBERATION 0x04
#define UX_CLASS_AUDIO10_PROCESS_CHORUS 0x05
#define UX_CLASS_AUDIO10_PROCESS_DYN_RANGE_COMP 0x06
/* Define Audio Class AS interface descriptor subclasses. */
#define UX_CLASS_AUDIO10_AS_UNDEFINED 0x00
#define UX_CLASS_AUDIO10_AS_GENERAL 0x01
#define UX_CLASS_AUDIO10_AS_FORMAT_TYPE 0x02
#define UX_CLASS_AUDIO10_AS_FORMAT_SPECIFIC 0x03
/* Define Audio Class endpoint descriptor subtypes. */
#define UX_CLASS_AUDIO10_EP_UNDEFINED 0x00
#define UX_CLASS_AUDIO10_EP_GENERAL 0x01
/* Define Audio Class request codes. */
#define UX_CLASS_AUDIO10_REQUEST_CODE_UNDEFINED 0x00
#define UX_CLASS_AUDIO10_SET_CUR 0x01
#define UX_CLASS_AUDIO10_GET_CUR 0x81
#define UX_CLASS_AUDIO10_SET_MIN 0x02
#define UX_CLASS_AUDIO10_GET_MIN 0x82
#define UX_CLASS_AUDIO10_SET_MAX 0x03
#define UX_CLASS_AUDIO10_GET_MAX 0x83
#define UX_CLASS_AUDIO10_SET_RES 0x04
#define UX_CLASS_AUDIO10_GET_RES 0x84
#define UX_CLASS_AUDIO10_SET_MEM 0x05
#define UX_CLASS_AUDIO10_GET_MEM 0x85
#define UX_CLASS_AUDIO10_GET_STAT 0xFF
/* Define Audio Class terminal control selectors. */
#define UX_CLASS_AUDIO10_TE_CONTROL_UNDEFINED 0x00
#define UX_CLASS_AUDIO10_TE_COPY_PROTECT_CONTROL 0x01
/* Define Audio Class feature unit control selectors. */
#define UX_CLASS_AUDIO10_FU_CONTROL_UNDEFINED 0x00
#define UX_CLASS_AUDIO10_FU_MUTE_CONTROL 0x01
#define UX_CLASS_AUDIO10_FU_VOLUME_CONTROL 0x02
#define UX_CLASS_AUDIO10_FU_BASS_CONTROL 0x03
#define UX_CLASS_AUDIO10_FU_MID_CONTROL 0x04
#define UX_CLASS_AUDIO10_FU_TREBLE_CONTROL 0x05
#define UX_CLASS_AUDIO10_FU_GRAPHIC_EQUALIZER_CONTROL 0x06
#define UX_CLASS_AUDIO10_FU_AUTOMATIC_GAIN_CONTROL 0x07
#define UX_CLASS_AUDIO10_FU_DELAY_CONTROL 0x08
#define UX_CLASS_AUDIO10_FU_BASS_BOOST_CONTROL 0x09
#define UX_CLASS_AUDIO10_FU_LOUNDNESS_CONTROL 0x0A
/* Define Audio Class processing unit control selectors. */
/* Define Audio Class up/down-mix (UD) processing unit control selectors. */
#define UX_CLASS_AUDIO10_UD_CONTROL_UNDEFINED 0x00
#define UX_CLASS_AUDIO10_UD_ENABLE_CONTROL 0x01
#define UX_CLASS_AUDIO10_UD_MODE_SELECT_CONTROL 0x02
/* Define Audio Class dolby prologic (DP) processing unit control selectors. */
#define UX_CLASS_AUDIO10_DP_CONTROL_UNDEFINED 0x00
#define UX_CLASS_AUDIO10_DP_ENABLE_CONTROL 0x01
#define UX_CLASS_AUDIO10_DP_MODE_SELECT_CONTROL 0x02
/* Define Audio Class 3D stereo extender (3D) processing unit control selectors. */
#define UX_CLASS_AUDIO10_3D_CONTROL_UNDEFINED 0x00
#define UX_CLASS_AUDIO10_3D_ENABLE_CONTROL 0x01
#define UX_CLASS_AUDIO10_3D_SPACIOUSNESS_CONTROL 0x02
/* Define Audio Class reverberation (RV) processing unit control selectors. */
#define UX_CLASS_AUDIO10_RV_CONTROL_UNDEFINED 0x00
#define UX_CLASS_AUDIO10_RV_ENABLE_CONTROL 0x01
#define UX_CLASS_AUDIO10_RV_LEVEL_CONTROL 0x02
#define UX_CLASS_AUDIO10_RV_TIME_CONTROL 0x03
#define UX_CLASS_AUDIO10_RV_FEEDBACK_CONTROL 0x04
/* Define Audio Class chorus (CH) processing unit control selectors. */
#define UX_CLASS_AUDIO10_CHORUS_CONTROL_UNDEFINED 0x00
#define UX_CLASS_AUDIO10_CHORUS_ENABLE_CONTROL 0x01
#define UX_CLASS_AUDIO10_CHORUS_LEVEL_CONTROL 0x02
#define UX_CLASS_AUDIO10_CHORUS_RATE_CONTROL 0x03
#define UX_CLASS_AUDIO10_CHORUS_DEPTH_CONTROL 0x04
/* Define Audio Class dynamic range compressor (DR) processing unit control selectors. */
#define UX_CLASS_AUDIO10_DR_CONTROL_UNDEFINED 0x00
#define UX_CLASS_AUDIO10_DR_ENABLE_CONTROL 0x01
#define UX_CLASS_AUDIO10_DR_COMPRESSION_RATE_CONTROL 0x02
#define UX_CLASS_AUDIO10_DR_MAXAMPL_CONTROL 0x03
#define UX_CLASS_AUDIO10_DR_THRESHOLD_CONTROL 0x04
#define UX_CLASS_AUDIO10_DR_ATTACK_TIME 0x05
#define UX_CLASS_AUDIO10_DR_RELEASE_TIME 0x06
/* Define Audio Class extension unit (XU) control selectors. */
#define UX_CLASS_AUDIO10_XU_CONTROL_UNDEFINED 0x00
#define UX_CLASS_AUDIO10_XU_ENABLE_CONTROL 0x01
/* Define Audio Class endpoint control selectors. */
#define UX_CLASS_AUDIO10_EP_CONTROL_UNDEFINED 0x00
#define UX_CLASS_AUDIO10_EP_SAMPLING_FREQ_CONTROL 0x01
#define UX_CLASS_AUDIO10_EP_PITCH_CONTROL 0x02
/* Define Audio Class format type codes. */
#define UX_CLASS_AUDIO10_FORMAT_TYPE_UNDEFINED 0x00
#define UX_CLASS_AUDIO10_FORMAT_TYPE_I 0x01
#define UX_CLASS_AUDIO10_FORMAT_TYPE_II 0x02
#define UX_CLASS_AUDIO10_FORMAT_TYPE_III 0x03
/* Define Audio Class format tag codes. */
#define UX_CLASS_AUDIO10_FORMAT_TYPE_I_UNDEFINED 0x0000
#define UX_CLASS_AUDIO10_FORMAT_TYPE_I_PCM 0x0001
#define UX_CLASS_AUDIO10_FORMAT_TYPE_I_PCM8 0x0002
#define UX_CLASS_AUDIO10_FORMAT_TYPE_I_IEEE_FLOAT 0x0003
#define UX_CLASS_AUDIO10_FORMAT_TYPE_I_ALAW 0x0004
#define UX_CLASS_AUDIO10_FORMAT_TYPE_I_MULAW 0x0005
#define UX_CLASS_AUDIO10_FORMAT_TYPE_II_UNDEFINED 0x1000
#define UX_CLASS_AUDIO10_FORMAT_TYPE_II_MPEG 0x1001
#define UX_CLASS_AUDIO10_FORMAT_TYPE_II_AC3 0x1002
#define UX_CLASS_AUDIO10_FORMAT_TYPE_III_UNDEFINED 0x2000
#define UX_CLASS_AUDIO10_FORMAT_TYPE_III_IEC1937_AC3 0x2001
#define UX_CLASS_AUDIO10_FORMAT_TYPE_III_IEC1937_MPEG1_L1 0x2002
#define UX_CLASS_AUDIO10_FORMAT_TYPE_III_IEC1937_MPEG1_L2_3 0x2003
#define UX_CLASS_AUDIO10_FORMAT_TYPE_III_IEC1937_MPEG2_NOEXT 0x2003
#define UX_CLASS_AUDIO10_FORMAT_TYPE_III_IEC1937_MPEG2_EXT 0x2004
#define UX_CLASS_AUDIO10_FORMAT_TYPE_III_IEC1937_MPEG2_L1_LS 0x2005
#define UX_CLASS_AUDIO10_FORMAT_TYPE_III_IEC1937_MPEG2_L2_3_LS 0x2006
/* Define Audio Class MPEG (MP) control selectors. */
#define UX_CLASS_AUDIO10_MP_CONTROL_UNDEFINED 0x00
#define UX_CLASS_AUDIO10_MP_DUAL_CHANNEL_CONTROL 0x01
#define UX_CLASS_AUDIO10_MP_SECOND_STEREO_CONTROL 0x02
#define UX_CLASS_AUDIO10_MP_MULTILINGUAL_CONTROL 0x03
#define UX_CLASS_AUDIO10_MP_DYN_RANGE_CONTROL 0x04
#define UX_CLASS_AUDIO10_MP_SCALING_CONTROL 0x05
#define UX_CLASS_AUDIO10_MP_HILO_SCALING_CONTROL 0x06
/* Define Audio Class AC-3 (AC) control selectors. */
#define UX_CLASS_AUDIO10_AC_CONTROL_UNDEFINED 0x00
#define UX_CLASS_AUDIO10_AC_MODE_CONTROL 0x01
#define UX_CLASS_AUDIO10_AC_DYN_RANGE_CONTROL 0x02
#define UX_CLASS_AUDIO10_AC_SCALING_CONTROL 0x03
#define UX_CLASS_AUDIO10_AC_HILO_SCALING_CONTROL 0x04
/* Class descriptor structures (packed).
* Typedefs to be used:
* - for byte : UCHAR/CHAR
* - for word : USHORT/SHORT
* - for double word (dword): ULONG/LONG
* - for 64-bit-width word : ULONG64
* Field offset considerations inside descriptor:
* - Minimum fields alignment: byte (8-bit)
* - Field is not byte and not aligned : field declared as bytes array (UCHAR[])
* - Field is word and word aligned : field declared as USHORT/SHORT
* - Field is dword and dword aligned : field declared as ULONG/LONG
*/
/* Audio Class AC interface header descriptors (bInCollection=1). */
typedef struct UX_CLASS_AUDIO10_AC_HEADER_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubtype;
UCHAR bcdADC[2];
UCHAR wTotalLength[2];
UCHAR bInCollection;
UCHAR baInterfaceNr[1];
} UX_CLASS_AUDIO10_AC_HEADER_DESCRIPTOR;
/* Define Audio Class input terminal descriptor (ITD). */
typedef struct UX_CLASS_AUDIO10_AC_INPUT_TERMINAL_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubtype;
UCHAR bTerminalID;
USHORT wTerminalType;
UCHAR bAssocTerminal;
UCHAR bNrChannels;
USHORT wChannelConfig;
UCHAR iChannelNames;
UCHAR iTerminal;
} UX_CLASS_AUDIO10_AC_INPUT_TERMINAL_DESCRIPTOR, UX_CLASS_AUDIO10_AC_ITD;
/* Define Audio Class output terminal descriptor (OTD). */
typedef struct UX_CLASS_AUDIO10_AC_OUTPUT_TERMINAL_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubtype;
UCHAR bTerminalID;
USHORT wTerminalType;
UCHAR bAssocTerminal;
UCHAR bSourceID;
UCHAR iTerminal;
} UX_CLASS_AUDIO10_AC_OUTPUT_TERMINAL_DESCRIPTOR, UX_CLASS_AUDIO10_AC_OTD;
/* Define Audio Class mixer unit descriptor (MUD, bNrInPins=1, bmMixerControls N=1). */
typedef struct UX_CLASS_AUDIO10_AC_MIXER_UNIT_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubtype;
UCHAR bUnitID;
UCHAR bNrInPins;
UCHAR baSourceID[1];
UCHAR bNrChannels;
UCHAR wChannelConfig[2];
UCHAR iChannelNames;
UCHAR bmControls[1];
UCHAR iMixer;
} UX_CLASS_AUDIO10_AC_MIXER_UNIT_DESCRIPTOR, UX_CLASS_AUDIO10_AC_MUD;
/* Define Audio Class selector unit descriptor (SUD, bNrInPins=1). */
typedef struct UX_CLASS_AUDIO10_AC_SELECTOR_UNIT_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubtype;
UCHAR bUnitID;
UCHAR bNrInPins;
UCHAR baSourceID[1];
UCHAR iSelector;
} UX_CLASS_AUDIO10_AC_SELECTOR_UNIT_DESCRIPTOR, UX_CLASS_AUDIO10_AC_SUD;
/* Define Audio Class feature unit descriptor (FUD, ch=1, bControlSize=2). */
typedef struct UX_CLASS_AUDIO10_AC_FEATURE_UNIT_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubtype;
UCHAR bUnitID;
UCHAR bSourceID;
UCHAR bControlSize;
UCHAR bmaControls[2 * 2];
UCHAR iFeature;
} UX_CLASS_AUDIO10_AC_FEATURE_UNIT_DESCRIPTOR, UX_CLASS_AUDIO10_AC_FUD;
/* FUD::bmControls. */
#define UX_CLASS_AUDIO10_FUD_CONTROL_MUTE (1u << 0)
#define UX_CLASS_AUDIO10_FUD_CONTROL_VOLUME (1u << 1)
#define UX_CLASS_AUDIO10_FUD_CONTROL_BASS (1u << 2)
#define UX_CLASS_AUDIO10_FUD_CONTROL_MID (1u << 3)
#define UX_CLASS_AUDIO10_FUD_CONTROL_TREBLE (1u << 4)
#define UX_CLASS_AUDIO10_FUD_CONTROL_GRAPHIC_EQ (1u << 5)
#define UX_CLASS_AUDIO10_FUD_CONTROL_AUTO_GAIN (1u << 6)
#define UX_CLASS_AUDIO10_FUD_CONTROL_DELAY (1u << 7)
#define UX_CLASS_AUDIO10_FUD_CONTROL_BASS_BOOST (1u << 8)
#define UX_CLASS_AUDIO10_FUD_CONTROL_LOUDNESS (1u << 9)
/* Define Audio Class processing unit descriptor (PUD, bNrInPins=1,bControlSize=1). */
typedef struct UX_CLASS_AUDIO10_AC_PROCESSING_UNIT_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubtype;
UCHAR bUnitID;
USHORT wProcessType;
UCHAR bNrInPins;
UCHAR baSourceID[1];
UCHAR bNrChannels;
UCHAR wChannelConfig;
UCHAR iChannelNames;
UCHAR bControlSize;
UCHAR bmControls[1];
UCHAR iProcessing;
} UX_CLASS_AUDIO10_AC_PROCESSING_UNIT_DESCRIPTOR, UX_CLASS_AUDIO10_AC_PUD;
/* Define Audio Class up/down processing unit descriptor (PUD, bNrInPins=1,bControlSize=1,bNrModes=1). */
typedef struct UX_CLASS_AUDIO10_AC_UP_DOWN_PROCESSING_UNIT_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubtype;
UCHAR bUnitID;
USHORT wProcessType;
UCHAR bNrInPins;
UCHAR bSourceID;
UCHAR bNrChannels;
UCHAR wChannelConfig[2];
UCHAR iChannelNames;
UCHAR bControlSize;
UCHAR bmControls[1];
UCHAR iProcessing;
UCHAR bNrModes;
UCHAR waModes[2 * 1];
} UX_CLASS_AUDIO10_AC_UP_DOWN_PROCESSING_UNIT_DESCRIPTOR, UX_CLASS_AUDIO10_AC_UDD;
/* UDD::bmControls. */
#define UX_CLASS_AUDIO10_UDD_CONTROL_ENABLE (1u << 0)
#define UX_CLASS_AUDIO10_UDD_CONTROL_MODE_SELECT (1u << 1)
/* Define Audio Class dolby prologic processing unit descriptor (DPD, bNrInPins=1,bControlSize=1,bNrModes=1). */
typedef struct UX_CLASS_AUDIO10_AC_DOLBY_PROCESSING_UNIT_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubtype;
UCHAR bUnitID;
USHORT wProcessType;
UCHAR bNrInPins;
UCHAR bSourceID;
UCHAR bNrChannels;
UCHAR wChannelConfig[2];
UCHAR iChannelNames;
UCHAR bControlSize;
UCHAR bmControls[1];
UCHAR iProcessing;
UCHAR bNrModes;
UCHAR daModes[2 * 1];
} UX_CLASS_AUDIO10_AC_DOLBY_PROCESSING_UNIT_DESCRIPTOR, UX_CLASS_AUDIO10_AC_DPD;
/* DPD::bmaControls. */
#define UX_CLASS_AUDIO10_DPD_CONTROL_ENABLE (1u << 0)
#define UX_CLASS_AUDIO10_DPD_CONTROL_MODE_SELECT (1u << 1)
/* Define Audio Class 3D Stereo Extender (3D) Processing Unit Descriptor. */
typedef UX_CLASS_AUDIO10_AC_PUD UX_CLASS_AUDIO10_AC_3D_STEREO_EXT_PROCESSING_UNIT_DESCRIPTOR;
typedef UX_CLASS_AUDIO10_AC_PUD UX_CLASS_AUDIO10_AC_3DD;
/* 3DD::bmaControls. */
#define UX_CLASS_AUDIO10_3DD_CONTROL_ENABLE (1u << 0)
#define UX_CLASS_AUDIO10_3DD_CONTROL_MODE_SELECT (1u << 1)
/* Define Audio Class Reverberation (RV) Processing Unit Descriptor. */
typedef UX_CLASS_AUDIO10_AC_PUD UX_CLASS_AUDIO10_AC_REVERBERATION_PROCESSING_UNIT_DESCRIPTOR;
typedef UX_CLASS_AUDIO10_AC_PUD UX_CLASS_AUDIO10_AC_RVD;
/* RVD::bmaControls. */
#define UX_CLASS_AUDIO10_RVD_CONTROL_ENABLE (1u << 0)
#define UX_CLASS_AUDIO10_RVD_CONTROL_REVERB_TYPE (1u << 1)
#define UX_CLASS_AUDIO10_RVD_CONTROL_REVERB_LEVEL (1u << 2)
#define UX_CLASS_AUDIO10_RVD_CONTROL_REVERB_TIME (1u << 3)
#define UX_CLASS_AUDIO10_RVD_CONTROL_REVERB_DELAY_FEEDBACK (1u << 4)
/* Define Audio Class Chorus (CH) Processing Unit Descriptor. */
typedef UX_CLASS_AUDIO10_AC_PUD UX_CLASS_AUDIO10_AC_CHORUS_PROCESSING_UNIT_DESCRIPTOR;
typedef UX_CLASS_AUDIO10_AC_PUD UX_CLASS_AUDIO10_AC_CHORUSD;
/* CHORUSD::bmaControls. */
#define UX_CLASS_AUDIO10_CHORUSD_CONTROL_ENABLE (1u << 0)
#define UX_CLASS_AUDIO10_CHORUSD_CONTROL_CHORUS_LEVEL (1u << 1)
#define UX_CLASS_AUDIO10_CHORUSD_CONTROL_CHORUS_MODULATION_RATE (1u << 2)
#define UX_CLASS_AUDIO10_CHORUSD_CONTROL_CHORUS_MODULATION_DEPTH (1u << 3)
/* Define Audio Class Dynamic Range Compressor (DR) Processing Unit Descriptor. */
typedef UX_CLASS_AUDIO10_AC_PUD UX_CLASS_AUDIO10_AC_DYN_RNG_COMP_PROCESSING_UNIT_DESCRIPTOR;
typedef UX_CLASS_AUDIO10_AC_PUD UX_CLASS_AUDIO10_AC_DRD;
/* DRD::bmaControls. */
#define UX_CLASS_AUDIO10_DRD_CONTROL_ENABLE (1u << 0)
#define UX_CLASS_AUDIO10_DRD_CONTROL_COMPRESSION_RATIO (1u << 1)
#define UX_CLASS_AUDIO10_DRD_CONTROL_MAXAMPL (1u << 2)
#define UX_CLASS_AUDIO10_DRD_CONTROL_THRESHOLD (1u << 3)
#define UX_CLASS_AUDIO10_DRD_CONTROL_ATTACH_TIME (1u << 4)
#define UX_CLASS_AUDIO10_DRD_CONTROL_RELEASE_TIME (1u << 5)
/* Define Audio Class Extension unit descriptor (XUD, bNrInPins=1,bControlSize=1). */
typedef struct UX_CLASS_AUDIO10_AC_EXTENSION_UNIT_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubtype;
UCHAR bUnitID;
USHORT wExtensionCode;
UCHAR bNrInPins;
UCHAR baSourceID[1];
UCHAR bNrChannels;
UCHAR wChannelConfig[2];
UCHAR iChannelNames;
UCHAR bControlSize;
UCHAR bmControls[1];
UCHAR iExtension;
} UX_CLASS_AUDIO10_AC_EXTENSION_UNIT_DESCRIPTOR, UX_CLASS_AUDIO10_AC_XUD;
/* XUD::bmaControls. */
#define UX_CLASS_AUDIO10_XUD_CONTROL_ENABLE (1u << 0)
/* Define Audio Class Associated Interface descriptor (Association-specific x=1). */
typedef struct UX_CLASS_AUDIO10_ASSOCIATED_INTERFACE_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubtype;
UCHAR bInterfaceNr;
UCHAR assoc_specific;
} UX_CLASS_AUDIO10_ASSOCIATED_INTERFACE_DESCRIPTOR;
/* Define Audio Class Interrupt/Isochronous Endpoint Descriptor. */
typedef struct UX_CLASS_AUDIO10_ENDPOINT_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bEndpointAddress;
UCHAR bmAttributes;
UCHAR wMaxPacketSize;
UCHAR bInterval;
UCHAR bRefresh;
UCHAR bSynchAddress;
} UX_CLASS_AUDIO10_ENDPOINT_DESCRIPTOR, UX_CLASS_AUDIO10_EPD;
/* Audio class-specific AS interface descriptor. */
typedef struct UX_CLASS_AUDIO10_AS_INTERFACE_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubtype;
UCHAR bTerminalLink;
UCHAR bDelay;
UCHAR wFormatTag[2];
} UX_CLASS_AUDIO10_AS_INTERFACE_DESCRIPTOR, UX_CLASS_AUDIO10_AS_IFACED;
/* Audio class-specific isochronous audio data endpoint descriptor (EPD). */
typedef struct UX_CLASS_AUDIO10_ISOCH_ENDPOINT_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubtype;
UCHAR bmAttributes;
UCHAR bLockDelayUnits;
UCHAR wLockDelay[2];
} UX_CLASS_AUDIO10_ISOCH_ENDPOINT_DESCRIPTOR, UX_CLASS_AUDIO10_ISOCH_EPD;
/* EPD::bmAttributes. */
#define UX_CLASS_AUDIO10_ISOCH_EPD_ATTR_SAMPLING_FREQ (0x1u << 0)
#define UX_CLASS_AUDIO10_ISOCH_EPD_ATTR_PITCH (0x1u << 1)
#define UX_CLASS_AUDIO10_ISOCH_EPD_ATTR_MAX_PACKET_SIZE_ONLY (0x1u << 7)
/* EPD::bLockDelayUnits. */
#define UX_CLASS_AUDIO10_EPD_LOCK_DELAY_UNITS_UNDEFINED 0
#define UX_CLASS_AUDIO10_EPD_LOCK_DELAY_UNITS_MS 1
#define UX_CLASS_AUDIO10_EPD_LOCK_DELAY_UNITS_DEC_PCM_SAMPLES 2
/* Audio class control request layout. */
typedef struct UX_CLASS_AUDIO10_REQUEST_VALUE_CS_STRUCT {
UCHAR unused_zero;
UCHAR control_sel; /* Control Selector (CS) */
} UX_CLASS_AUDIO10_REQUEST_VALUE_CS;
typedef struct UX_CLASS_AUDIO10_REQUEST_VALUE_MIXER_STRUCT {
UCHAR output_ch_num; /* Output Channel Number (OCN) */
UCHAR input_ch_num; /* Input Channel Number (ICN) */
} UX_CLASS_AUDIO10_REQUEST_VALUE_MIXER;
typedef struct UX_CLASS_AUDIO10_REQUEST_VALUE_CONTROL_STRUCT {
UCHAR unused_zero;
UCHAR cs; /* CS */
} UX_CLASS_AUDIO10_REQUEST_VALUE_CONTROL;
typedef struct UX_CLASS_AUDIO10_REQUEST_INDEX_EP_STRUCT {
UCHAR ep_addr; /* Endpoint Address */
UCHAR unused_zero;
} UX_CLASS_AUDIO10_REQUEST_INDEX_EP;
typedef struct UX_CLASS_AUDIO10_REQUEST_INDEX_INTERFACE_STRUCT {
UCHAR iface_num; /* Interface number */
UCHAR entity_id;
} UX_CLASS_AUDIO10_REQUEST_INDEX_INTERFACE;
typedef struct UX_CLASS_AUDIO10_REQUEST_INDEX_CONTROL_STRUCT {
UCHAR ep_iface; /* Endpoint Address/Interface Number */
UCHAR entity_id_zero; /* Entity ID/Zero */
} UX_CLASS_AUDIO10_REQUEST_INDEX_CONTROL;
typedef struct UX_CLASS_AUDIO10_REQUEST_STRUCT
{
UCHAR bmRequestType;
UCHAR bRequest;
union UX_CLASS_AUDIO10_REQUEST_VALUE_UNION {
USHORT value;
UX_CLASS_AUDIO10_REQUEST_VALUE_CS
control_cs;
UX_CLASS_AUDIO10_REQUEST_VALUE_MIXER
control_mixer;
UX_CLASS_AUDIO10_REQUEST_VALUE_CONTROL
control;
USHORT mem_offset;
} wValue;
union UX_CLASS_AUDIO10_REQUEST_INDEX_UNION {
USHORT value;
UX_CLASS_AUDIO10_REQUEST_INDEX_EP
ep;
UX_CLASS_AUDIO10_REQUEST_INDEX_INTERFACE
iface;
UX_CLASS_AUDIO10_REQUEST_INDEX_CONTROL
control;
} wIndex;
USHORT wLength;
} UX_CLASS_AUDIO10_REQUEST;
/* Audio Class 1.0 Copy Protect Control Parameter */
typedef struct UX_CLASS_AUDIO10_COPY_PROTECT_CONTROL_PARAMETER_STRUCT
{
UCHAR bCopyProtect;
} UX_CLASS_AUDIO10_COPY_PROTECT_CONTROL_PARAMETER;
#define UX_CLASS_AUDIO10_COPY_PROTECT_CONTROL_CPL0 (1u << 0)
#define UX_CLASS_AUDIO10_COPY_PROTECT_CONTROL_CPL1 (1u << 1)
#define UX_CLASS_AUDIO10_COPY_PROTECT_CONTROL_CPL2 (1u << 2)
/* Audio Class 1.0 Mixer Control Parameter (specific control or 0xFF) */
typedef struct UX_CLASS_AUDIO10_MIXER_CONTROL_PARAMETER_STRUCT
{
USHORT wMixer;
} UX_CLASS_AUDIO10_MIXER_CONTROL_PARAMETER;
typedef struct UX_CLASS_AUDIO10_MIXER_CONTROL_PARAMETER_FF_STRUCT
{
USHORT wMixer[1];
} UX_CLASS_AUDIO10_MIXER_CONTROL_PARAMETER_FF;
/* Audio Class 1.0 Selector Control Parameter */
typedef struct UX_CLASS_AUDIO10_SELECTOR_CONTROL_PARAMETER_STRUCT
{
UCHAR bSelector;
} UX_CLASS_AUDIO10_SELECTOR_CONTROL_PARAMETER;
/* Audio Class 1.0 Mute Control Parameter (specific CH or 0xFF) */
typedef struct UX_CLASS_AUDIO10_MUTE_CONTROL_PARAMETER_STRUCT
{
UCHAR bMute;
} UX_CLASS_AUDIO10_MUTE_CONTROL_PARAMETER;
typedef struct UX_CLASS_AUDIO10_MUTE_CONTROL_PARAMETER_FF_STRUCT
{
UCHAR bMute[1];
} UX_CLASS_AUDIO10_MUTE_CONTROL_PARAMETER_FF;
/* Audio Class 1.0 Volume Control Parameter (specific CH or 0xFF) */
typedef struct UX_CLASS_AUDIO10_VOLUME_CONTROL_PARAMETER_STRUCT
{
SHORT wVolume;
} UX_CLASS_AUDIO10_VOLUME_CONTROL_PARAMETER;
typedef struct UX_CLASS_AUDIO10_VOLUME_CONTROL_PARAMETER_FF_STRUCT
{
SHORT wVolume[1];
} UX_CLASS_AUDIO10_VOLUME_CONTROL_PARAMETER_FF;
/* Audio Class 1.0 Bass Control Parameter (specific CH or 0xFF) */
typedef struct UX_CLASS_AUDIO10_BASS_CONTROL_PARAMETER_STRUCT
{
UCHAR bBass;
} UX_CLASS_AUDIO10_BASS_CONTROL_PARAMETER;
typedef struct UX_CLASS_AUDIO10_BASS_CONTROL_PARAMETER_FF_STRUCT
{
UCHAR bBass[1];
} UX_CLASS_AUDIO10_BASS_CONTROL_PARAMETER_FF;
/* Audio Class 1.0 Mid Control Parameter (specific CH or 0xFF) */
typedef struct UX_CLASS_AUDIO10_MID_CONTROL_PARAMETER_STRUCT
{
UCHAR bMid;
} UX_CLASS_AUDIO10_MID_CONTROL_PARAMETER;
typedef struct UX_CLASS_AUDIO10_MID_CONTROL_PARAMETER_FF_STRUCT
{
UCHAR bMid[1];
} UX_CLASS_AUDIO10_MID_CONTROL_PARAMETER_FF;
/* Audio Class 1.0 Treble Control Parameter (specific CH or 0xFF) */
typedef struct UX_CLASS_AUDIO10_TREBLE_CONTROL_PARAMETER_STRUCT
{
UCHAR bTreble;
} UX_CLASS_AUDIO10_TREBLE_CONTROL_PARAMETER;
typedef struct UX_CLASS_AUDIO10_TREBLE_CONTROL_PARAMETER_FF_STRUCT
{
UCHAR bTreble[1];
} UX_CLASS_AUDIO10_TREBLE_CONTROL_PARAMETER_FF;
/* Audio Class 1.0 Graphic Equalizer Control Parameter (NrBits=1) */
typedef struct UX_CLASS_AUDIO10_GRAPHIC_EQ_CONTROL_PARAMETER_STRUCT
{
ULONG bmBandsPresent;
UCHAR bBand[1];
} UX_CLASS_AUDIO10_GRAPHIC_EQ_CONTROL_PARAMETER;
/* Audio Class 1.0 Automatic Gain Control Parameter (specific CH or 0xFF) */
typedef struct UX_CLASS_AUDIO10_AG_CONTROL_PARAMETER_STRUCT
{
UCHAR bAGC;
} UX_CLASS_AUDIO10_AG_CONTROL_PARAMETER;
typedef struct UX_CLASS_AUDIO10_AG_CONTROL_PARAMETER_FF_STRUCT
{
UCHAR bAGC[1];
} UX_CLASS_AUDIO10_AG_CONTROL_PARAMETER_FF;
/* Audio Class 1.0 Delay Control Parameter (specific CH or 0xFF) */
typedef struct UX_CLASS_AUDIO10_DELAY_CONTROL_PARAMETER_STRUCT
{
SHORT wDelay;
} UX_CLASS_AUDIO10_DELAY_CONTROL_PARAMETER;
typedef struct UX_CLASS_AUDIO10_DELAY_CONTROL_PARAMETER_FF_STRUCT
{
SHORT wDelay[1];
} UX_CLASS_AUDIO10_DELAY_CONTROL_PARAMETER_FF;
/* Audio Class 1.0 BassBoost Control Parameter (specific CH or 0xFF) */
typedef struct UX_CLASS_AUDIO10_BASSBOOST_CONTROL_PARAMETER_STRUCT
{
UCHAR bBassBoost;
} UX_CLASS_AUDIO10_BASSBOOST_CONTROL_PARAMETER;
typedef struct UX_CLASS_AUDIO10_BASSBOOST_CONTROL_PARAMETER_FF_STRUCT
{
UCHAR bBassBoost[1];
} UX_CLASS_AUDIO10_BASSBOOST_CONTROL_PARAMETER_FF;
/* Audio Class 1.0 Loudness Control Parameter (specific CH or 0xFF) */
typedef struct UX_CLASS_AUDIO10_LOUDNESS_CONTROL_PARAMETER_STRUCT
{
UCHAR bLoudness;
} UX_CLASS_AUDIO10_LOUDNESS_CONTROL_PARAMETER;
typedef struct UX_CLASS_AUDIO10_LOUDNESS_CONTROL_PARAMETER_FF_STRUCT
{
UCHAR bLoudness[1];
} UX_CLASS_AUDIO10_LOUDNESS_CONTROL_PARAMETER_FF;
/* Audio Class 1.0 Enable Processing Control Parameter */
typedef struct UX_CLASS_AUDIO10_ENABLE_PROCESSING_CONTROL_PARAMETER_STRUCT
{
UCHAR bEnable;
} UX_CLASS_AUDIO10_ENABLE_PROCESSING_CONTROL_PARAMETER;
/* Audio Class 1.0 Spaciousness Control Parameter */
typedef struct UX_CLASS_AUDIO10_SPACIOUSNESS_CONTROL_PARAMETER_STRUCT
{
UCHAR bSpaciousness;
} UX_CLASS_AUDIO10_SPACIOUSNESS_CONTROL_PARAMETER;
/* Audio Class 1.0 ReverbType Control Parameter */
typedef struct UX_CLASS_AUDIO10_REVERB_TYPE_CONTROL_PARAMETER_STRUCT
{
UCHAR bReverbType;
} UX_CLASS_AUDIO10_REVERB_TYPE_CONTROL_PARAMETER;
#define UX_CLASS_AUDIO10_REVERB_TYPE_ROOM_1 0
#define UX_CLASS_AUDIO10_REVERB_TYPE_SMALL_ROOM 0
#define UX_CLASS_AUDIO10_REVERB_TYPE_ROOM_2 1
#define UX_CLASS_AUDIO10_REVERB_TYPE_MEDIUM_ROOM 1
#define UX_CLASS_AUDIO10_REVERB_TYPE_ROOM_3 2
#define UX_CLASS_AUDIO10_REVERB_TYPE_LARGE_ROOM 2
#define UX_CLASS_AUDIO10_REVERB_TYPE_HALL_1 3
#define UX_CLASS_AUDIO10_REVERB_TYPE_MEDIUM_CONCERT_HALL 3
#define UX_CLASS_AUDIO10_REVERB_TYPE_HALL_2 4
#define UX_CLASS_AUDIO10_REVERB_TYPE_LARGE_CONCERT_HALL 4
#define UX_CLASS_AUDIO10_REVERB_TYPE_PLATE 5
#define UX_CLASS_AUDIO10_REVERB_TYPE_PLATE_REVERBERATION 5
#define UX_CLASS_AUDIO10_REVERB_TYPE_DELAY 6
#define UX_CLASS_AUDIO10_REVERB_TYPE_PANNING_DELAY 7
/* Audio Class 1.0 ReverbLevel Control Parameter */
typedef struct UX_CLASS_AUDIO10_REVERB_LEVEL_CONTROL_PARAMETER_STRUCT
{
UCHAR bReverbLevel;
} UX_CLASS_AUDIO10_REVERB_LEVEL_CONTROL_PARAMETER;
/* Audio Class 1.0 ReverTime Control Parameter */
typedef struct UX_CLASS_AUDIO10_REVERB_TIME_CONTROL_PARAMETER_STRUCT
{
USHORT wReverTime;
} UX_CLASS_AUDIO10_REVERB_TIME_CONTROL_PARAMETER;
/* Audio Class 1.0 ReverbDelayFeedback Control Parameter */
typedef struct UX_CLASS_AUDIO10_REVERB_FEEDBACK_CONTROL_PARAMETER_STRUCT
{
UCHAR bReverbFeedback;
} UX_CLASS_AUDIO10_REVERB_FEEDBACK_CONTROL_PARAMETER;
/* Audio Class 1.0 ChorusLevel Control Parameter */
typedef struct UX_CLASS_AUDIO10_CHORUS_LEVEL_CONTROL_PARAMETER_STRUCT
{
UCHAR bChorusLevel;
} UX_CLASS_AUDIO10_CHORUS_LEVEL_CONTROL_PARAMETER;
/* Audio Class 1.0 ChorusRate Control Parameter */
typedef struct UX_CLASS_AUDIO10_CHORUS_RATE_CONTROL_PARAMETER_STRUCT
{
USHORT wChorusRate;
} UX_CLASS_AUDIO10_CHORUS_RATE_CONTROL_PARAMETER;
/* Audio Class 1.0 ChorusModulationDepth Control Parameter */
typedef struct UX_CLASS_AUDIO10_CHORUS_DEPTH_CONTROL_PARAMETER_STRUCT
{
USHORT wChorusDepth;
} UX_CLASS_AUDIO10_CHORUS_DEPTH_CONTROL_PARAMETER;
/* Audio Class 1.0 Dynamic Range Compressor Compression Ratio Control Parameter */
typedef struct UX_CLASS_AUDIO10_COMPRESSION_RATIO_CONTROL_PARAMETER_STRUCT
{
USHORT wRatio;
} UX_CLASS_AUDIO10_COMPRESSION_RATIO_CONTROL_PARAMETER;
/* Audio Class 1.0 Dynamic Range Compressor MaxAmpl Control Parameter */
typedef struct UX_CLASS_AUDIO10_MAXAMPL_CONTROL_PARAMETER_STRUCT
{
USHORT wMaxAmpl;
} UX_CLASS_AUDIO10_MAXAMPL_CONTROL_PARAMETER;
/* Audio Class 1.0 Dynamic Range Compressor Threshold Control Parameter */
typedef struct UX_CLASS_AUDIO10_THRESHOLD_CONTROL_PARAMETER_STRUCT
{
USHORT wThreshold;
} UX_CLASS_AUDIO10_THRESHOLD_CONTROL_PARAMETER;
/* Audio Class 1.0 Dynamic Range Compressor AttachTime Control Parameter */
typedef struct UX_CLASS_AUDIO10_ATTACK_TIME_CONTROL_PARAMETER_STRUCT
{
USHORT wAttachTime;
} UX_CLASS_AUDIO10_ATTACK_TIME_CONTROL_PARAMETER;
/* Audio Class 1.0 Dynamic Range Compressor ReleaseTime Control Parameter */
typedef struct UX_CLASS_AUDIO10_RELEASE_TIME_CONTROL_PARAMETER_STRUCT
{
USHORT wReleaseTime;
} UX_CLASS_AUDIO10_RELEASE_TIME_CONTROL_PARAMETER;
/* Audio Class 1.0 Enable Processing Control (XU_ENABLE_CONTROL) Parameter */
typedef struct UX_CLASS_AUDIO10_XU_ENABLE_CONTROL_PARAMETER_STRUCT
{
UCHAR bOn;
} UX_CLASS_AUDIO10_XU_ENABLE_CONTROL_PARAMETER;
/* Audio Class 1.0 Sampling Frequency Control (SAMPLING_FREQ_CONTROL) Parameter */
typedef struct UX_CLASS_AUDIO10_SAMPLING_FREQ_CONTROL_PARAMETER_STRUCT
{
UCHAR tSampleFreq[3];
} UX_CLASS_AUDIO10_SAMPLING_FREQ_CONTROL_PARAMETER;
/* Audio Class 1.0 Pitch Control (PITCH_CONTROL) Parameter */
typedef struct UX_CLASS_AUDIO10_PITCH_CONTROL_PARAMETER_STRUCT
{
UCHAR bPitchEnable;
} UX_CLASS_AUDIO10_PITCH_CONTROL_PARAMETER;
/* Audio Class 1.0 Continuous Sampling Frequency. */
typedef struct UX_CLASS_AUDIO10_CONTINUOUS_SAMPLING_FREQ_STRUCT
{
UCHAR tLowerSamFreq[3];
UCHAR tUpperSamFreq[3];
} UX_CLASS_AUDIO10_CONTINUOUS_SAMPLING_FREQ;
/* Audio Class 1.0 Discrete Sampling Frequency (N=1). */
typedef struct UX_CLASS_AUDIO10_DISCRETE_SAMPLING_FREQ_STRUCT
{
UCHAR tSamFreq[3 * 1];
} UX_CLASS_AUDIO10_DISCRETE_SAMPLING_FREQ;
/* Audio Class 1.0 Type I Format Type Descriptor */
typedef struct UX_CLASS_AUDIO10_TYPE_I_FORMAT_TYPE_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubtype;
UCHAR bFormatType;
UCHAR bNrChannels;
UCHAR bSubframeSize;
UCHAR bBitResolution;
UCHAR bSamFreqType;
} UX_CLASS_AUDIO10_TYPE_I_FORMAT_TYPE_DESCRIPTOR;
typedef struct UX_CLASS_AUDIO10_TYPE_I_FORMAT_TYPE_CONTINUOUS_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubtype;
UCHAR bFormatType;
UCHAR bNrChannels;
UCHAR bSubframeSize;
UCHAR bBitResolution;
UCHAR bSamFreqType; /* 0 */
UCHAR tLowerSamFreq[3];
UCHAR tUpperSamFreq[3];
}
UX_CLASS_AUDIO10_TYPE_I_FORMAT_TYPE_CONTINUOUS_DESCRIPTOR,
UX_CLASS_AUDIO10_TYPE_I_FORMAT_TYPE_DESCRIPTOR_0;
typedef struct UX_CLASS_AUDIO10_TYPE_I_FORMAT_TYPE_DISCRETE_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubtype;
UCHAR bFormatType;
UCHAR bNrChannels;
UCHAR bSubframeSize;
UCHAR bBitResolution;
UCHAR bSamFreqType; /* 1 */
UCHAR tSamFreq[3 * 1];
}
UX_CLASS_AUDIO10_TYPE_I_FORMAT_TYPE_DISCRETE_DESCRIPTOR,
UX_CLASS_AUDIO10_TYPE_I_FORMAT_TYPE_DESCRIPTOR_1;
typedef struct UX_CLASS_AUDIO10_TYPE_II_FORMAT_TYPE_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubtype;
UCHAR bFormatType;
USHORT wMaxBitRate;
USHORT wSamplesPerFrame;
UCHAR bSamFreqType;
} UX_CLASS_AUDIO10_TYPE_II_FORMAT_TYPE_DESCRIPTOR;
typedef struct UX_CLASS_AUDIO10_TYPE_II_FORMAT_TYPE_CONTINUOUS_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubtype;
UCHAR bFormatType;
USHORT wMaxBitRate;
USHORT wSamplesPerFrame;
UCHAR bSamFreqType; /* 0 */
UCHAR tLowerSamFreq[3];
UCHAR tUpperSamFreq[3];
}
UX_CLASS_AUDIO10_TYPE_II_FORMAT_TYPE_CONTINUOUS_DESCRIPTOR,
UX_CLASS_AUDIO10_TYPE_II_FORMAT_TYPE_DESCRIPTOR_0;
typedef struct UX_CLASS_AUDIO10_TYPE_II_FORMAT_TYPE_DISCRETE_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubtype;
UCHAR bFormatType;
USHORT wMaxBitRate;
USHORT wSamplesPerFrame;
UCHAR bSamFreqType; /* 1 */
UCHAR tSamFreq[3 * 1];
}
UX_CLASS_AUDIO10_TYPE_II_FORMAT_TYPE_DISCRETE_DESCRIPTOR,
UX_CLASS_AUDIO10_TYPE_II_FORMAT_TYPE_DESCRIPTOR_1;
/* Audio Class 1.0 MPEG (MP) Format-Specific Descriptor (MPEGD) */
typedef struct UX_CLASS_AUDIO10_MPEG_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubtype;
UCHAR wFormatTag[2];
UCHAR bmMPEGCapabilities[2];
UCHAR bmMPEGFeatures;
} UX_CLASS_AUDIO10_MPEG_DESCRIPTOR, UX_CLASS_AUDIO10_MPEGD;
/* MPEG::bmMPEGCapabilities. */
#define UX_CLASS_AUDIO10_MPEGD_CAP_LAYER_MASK (0x7u << 0)
#define UX_CLASS_AUDIO10_MPEGD_CAP_LAYER_I (0x1u << 0)
#define UX_CLASS_AUDIO10_MPEGD_CAP_LAYER_II (0x1u << 1)
#define UX_CLASS_AUDIO10_MPEGD_CAP_LAYER_III (0x1u << 2)
#define UX_CLASS_AUDIO10_MPEGD_CAP_MPEG1_ONLY (0x1u << 3)
#define UX_CLASS_AUDIO10_MPEGD_CAP_MPEG1_DUAL_CH (0x1u << 4)
#define UX_CLASS_AUDIO10_MPEGD_CAP_MPEG2_STEREO (0x1u << 5)
#define UX_CLASS_AUDIO10_MPEGD_CAP_MPEG2_7_1_CH (0x1u << 6)
#define UX_CLASS_AUDIO10_MPEGD_CAP_ADAPTIVE_MULTI_CH_PREDICT (0x1u << 7)
#define UX_CLASS_AUDIO10_MPEGD_CAP_MPEG2_MULTILINGUAL_MASK (0x3u << 8)
#define UX_CLASS_AUDIO10_MPEGD_CAP_MPEG2_MULTI_NOT_SUPPORT (0x0u << 8)
#define UX_CLASS_AUDIO10_MPEGD_CAP_MPEG2_MULTI_FS (0x1u << 8)
#define UX_CLASS_AUDIO10_MPEGD_CAP_MPEG2_MULTI_FS_HALF_FS (0x3u << 8)
/* MPEG::bmMPEGFeatures. */
#define UX_CLASS_AUDIO10_MPEGD_FEAT_IDYN_RNG_CTRL_MASK (0x3u << 4) /* Internal Dynamic Range Control */
#define UX_CLASS_AUDIO10_MPEGD_FEAT_IDYN_RNG_CTRL_NOT_SUP (0x0u << 4) /* Not support */
#define UX_CLASS_AUDIO10_MPEGD_FEAT_IDYN_RNG_CTRL_NOT_SCAL (0x1u << 4) /* Not scalable */
#define UX_CLASS_AUDIO10_MPEGD_FEAT_IDYN_RNG_CTRL_SCAL_COMMON (0x2u << 4) /* Common boost and cut scaling value */
#define UX_CLASS_AUDIO10_MPEGD_FEAT_IDYN_RNG_CTRL_SCAL_SEPARA (0x3u << 4) /* Separate boost and cut scaling value */
/* Audio Class 1.0 Dual Channel Control */
typedef struct UX_CLASS_AUDIO10_MP_DUAL_CHANNEL_CONTROL_PARAMETER_STRUCT
{
UCHAR BChannel2Enable;
} UX_CLASS_AUDIO10_MP_DUAL_CHANNEL_CONTROL_PARAMETER;
/* Audio Class 1.0 Second Stereo Control */
typedef struct UX_CLASS_AUDIO10_MP_2ND_STEREO_CONTROL_PARAMETER_STRUCT
{
UCHAR B2ndStereoEnable;
} UX_CLASS_AUDIO10_MP_2ND_STEREO_CONTROL_PARAMETER;
/* Audio Class 1.0 Multilingual Control */
typedef struct UX_CLASS_AUDIO10_MP_MULTILINGUAL_CONTROL_PARAMETER_STRUCT
{
UCHAR bMultiLingual;
} UX_CLASS_AUDIO10_MP_MULTILINGUAL_CONTROL_PARAMETER;
/* bMultiLingual */
#define UX_CLASS_AUDIO10_MP_MULTILINGUAL_DECODE_NO_CHANNEL 0
#define UX_CLASS_AUDIO10_MP_MULTILINGUAL_DECODE_CHANNEL_1 1
#define UX_CLASS_AUDIO10_MP_MULTILINGUAL_DECODE_CHANNEL_2 2
#define UX_CLASS_AUDIO10_MP_MULTILINGUAL_DECODE_CHANNEL_3 3
#define UX_CLASS_AUDIO10_MP_MULTILINGUAL_DECODE_CHANNEL_4 4
#define UX_CLASS_AUDIO10_MP_MULTILINGUAL_DECODE_CHANNEL_5 5
#define UX_CLASS_AUDIO10_MP_MULTILINGUAL_DECODE_CHANNEL_6 6
#define UX_CLASS_AUDIO10_MP_MULTILINGUAL_DECODE_CHANNEL_7 7
/* Audio Class 1.0 Dynamic Range Control (MP_DYN_RANGE_CONTROL) */
typedef struct UX_CLASS_AUDIO10_MP_DYN_RANGE_CONTROL_PARAMETER_STRUCT
{
UCHAR bEnable;
} UX_CLASS_AUDIO10_MP_DYN_RANGE_CONTROL_PARAMETER;
/* Audio Class 1.0 Scaling Control */
typedef struct UX_CLASS_AUDIO10_MP_SCALING_CONTROL_PARAMETER_STRUCT
{
UCHAR bScale;
} UX_CLASS_AUDIO10_MP_SCALING_CONTROL_PARAMETER;
/* Audio Class 1.0 High/Low (HILO) Scaling Control */
typedef struct UX_CLASS_AUDIO10_MP_HILO_SCALING_CONTROL_PARAMETER_STRUCT
{
UCHAR bLowScale;
UCHAR bHighScale;
} UX_CLASS_AUDIO10_MP_HILO_SCALING_CONTROL_PARAMETER;
/* Audio Class 1.0 AC-3 Format Descriptor */
typedef struct UX_CLASS_AUDIO10_AS_AC_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubType;
UCHAR wFormatTag[2];
UCHAR bmBSID[4];
UCHAR bmAC3Features;
} UX_CLASS_AUDIO10_AS_AC_DESCRIPTOR, UX_CLASS_AUDIO10_AS_ACD;
/* AC3 DECODER::bmAC3Features. */
#define UX_CLASS_AUDIO10_ACD_FEAT_RF_MODE (0x1u << 0)
#define UX_CLASS_AUDIO10_ACD_FEAT_LINE_MODE (0x1u << 1)
#define UX_CLASS_AUDIO10_ACD_FEAT_CUSTOM0_MODE (0x1u << 2)
#define UX_CLASS_AUDIO10_ACD_FEAT_CUSTOM1_MODE (0x1u << 3)
#define UX_CLASS_AUDIO10_ACD_FEAT_IDYN_RNG_CTRL_MASK (0x3u << 4) /* Internal Dynamic Range Control */
#define UX_CLASS_AUDIO10_ACD_FEAT_IDYN_RNG_CTRL_NOT_SUP (0x0u << 4) /* Not support */
#define UX_CLASS_AUDIO10_ACD_FEAT_IDYN_RNG_CTRL_NOT_SCAL (0x3u << 4) /* Not scalable */
#define UX_CLASS_AUDIO10_ACD_FEAT_IDYN_RNG_CTRL_SCAL_COMMON (0x3u << 4) /* Common boost and cut scaling value */
#define UX_CLASS_AUDIO10_ACD_FEAT_IDYN_RNG_CTRL_SCAL_SEPARATE (0x3u << 4) /* Separate boost and cut scaling value */
/* Audio Class 1.0 AC-3 Mode Control (AC_MODE_CONTROL) */
typedef struct UX_CLASS_AUDIO10_AS_AC_MODE_CONTROL_PARAMETER_STRUCT
{
UCHAR bMode;
} UX_CLASS_AUDIO10_AS_AC_MODE_CONTROL_PARAMETER;
/* AC-3 Compression Mode Control. */
#define UX_CLASS_AUDIO10_AC_MODE_RF (0x1u << 0)
#define UX_CLASS_AUDIO10_AC_MODE_LINE (0x1u << 1)
#define UX_CLASS_AUDIO10_AC_MODE_CUSTOM0 (0x1u << 2)
#define UX_CLASS_AUDIO10_AC_MODE_CUSTOM1 (0x1u << 3)
/* Audio Class 1.0 AC-3 Dynamic Range Control (AC_DYN_RANGE_CONTROL) */
typedef struct UX_CLASS_AUDIO10_AS_AC_DYN_RANGE_CONTROL_PARAMETER_STRUCT
{
UCHAR bMode;
} UX_CLASS_AUDIO10_AS_AC_DYN_RANGE_CONTROL_PARAMETER;
/* Audio Class 1.0 AC-3 Scaling Control (AC_SCALING_CONTROL) */
typedef struct UX_CLASS_AUDIO10_AS_AC_SCALING_CONTROL_PARAMETER_STRUCT
{
UCHAR bScale;
} UX_CLASS_AUDIO10_AS_AC_SCALING_CONTROL_PARAMETER;
/* Audio Class 1.0 AC-3 High/Low Scaling Control (AC_HILO_SCALING_CONTROL) */
typedef struct UX_CLASS_AUDIO10_AS_AC_HILO_SCALING_CONTROL_PARAMETER_STRUCT
{
UCHAR bLowScale;
UCHAR bHighScale;
} UX_CLASS_AUDIO10_AS_AC_HILO_SCALING_CONTROL_PARAMETER;
typedef struct UX_CLASS_AUDIO10_TYPE_III_FORMAT_TYPE_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubtype;
UCHAR bFormatType;
UCHAR bNrChannels;
UCHAR bSubframeSize;
UCHAR bBitResolution;
UCHAR bSamFreqType;
} UX_CLASS_AUDIO10_TYPE_III_FORMAT_TYPE_DESCRIPTOR;
typedef struct UX_CLASS_AUDIO10_TYPE_III_FORMAT_TYPE_CONTINUOUS_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubtype;
UCHAR bFormatType;
UCHAR bNrChannels;
UCHAR bSubframeSize;
UCHAR bBitResolution;
UCHAR bSamFreqType; /* 0 */
UCHAR tLowerSamFreq[3];
UCHAR tUpperSamFreq[3];
}
UX_CLASS_AUDIO10_TYPE_III_FORMAT_TYPE_CONTINUOUS_DESCRIPTOR,
UX_CLASS_AUDIO10_TYPE_III_FORMAT_TYPE_DESCRIPTOR_0;
typedef struct UX_CLASS_AUDIO10_TYPE_III_FORMAT_TYPE_DISCRETE_DESCRIPTOR_STRUCT
{
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bDescriptorSubtype;
UCHAR bFormatType;
UCHAR bNrChannels;
UCHAR bSubframeSize;
UCHAR bBitResolution;
UCHAR bSamFreqType; /* 1 */
UCHAR tSamFreq[3 * 1];
}
UX_CLASS_AUDIO10_TYPE_III_FORMAT_TYPE_DISCRETE_DESCRIPTOR,
UX_CLASS_AUDIO10_TYPE_III_FORMAT_TYPE_DESCRIPTOR_1;
/* Audio Class 1.0 Interrupt Status Word */
typedef struct UX_CLASS_AUDIO10_INT_STATUS_STRUCT
{
UCHAR bStatusType;
UCHAR bOriginator;
} UX_CLASS_AUDIO10_INT_STATUS;
/* Status Word::bStatusType. */
#define UX_CLASS_AUDIO10_INT_STATUS_TYPE_PENDING (0x1u << 7)
#define UX_CLASS_AUDIO10_INT_STATUS_TYPE_MEM_CHANGED (0x1u << 6)
#define UX_CLASS_AUDIO10_INT_STATUS_TYPE_ORIGINATOR_MASK (0xFu << 0)
#define UX_CLASS_AUDIO10_INT_STATUS_TYPE_ORIGINATOR_AC (0x0u << 0) /* AudioControl interface */
#define UX_CLASS_AUDIO10_INT_STATUS_TYPE_ORIGINATOR_AS (0x1u << 0) /* AudioStreaming interface */
#define UX_CLASS_AUDIO10_INT_STATUS_TYPE_ORIGINATOR_AS_EP (0x2u << 0) /* AudioStreaming endpoint */
#endif