#ifndef _UAPI__LINUX_USB_AUDIO_H
#define _UAPI__LINUX_USB_AUDIO_H
#include <linux/types.h>
#define UAC_VERSION_1 …
#define UAC_VERSION_2 …
#define UAC_VERSION_3 …
#define USB_SUBCLASS_AUDIOCONTROL …
#define USB_SUBCLASS_AUDIOSTREAMING …
#define USB_SUBCLASS_MIDISTREAMING …
#define UAC_HEADER …
#define UAC_INPUT_TERMINAL …
#define UAC_OUTPUT_TERMINAL …
#define UAC_MIXER_UNIT …
#define UAC_SELECTOR_UNIT …
#define UAC_FEATURE_UNIT …
#define UAC1_PROCESSING_UNIT …
#define UAC1_EXTENSION_UNIT …
#define UAC_AS_GENERAL …
#define UAC_FORMAT_TYPE …
#define UAC_FORMAT_SPECIFIC …
#define UAC_PROCESS_UNDEFINED …
#define UAC_PROCESS_UP_DOWNMIX …
#define UAC_PROCESS_DOLBY_PROLOGIC …
#define UAC_PROCESS_STEREO_EXTENDER …
#define UAC_PROCESS_REVERB …
#define UAC_PROCESS_CHORUS …
#define UAC_PROCESS_DYN_RANGE_COMP …
#define UAC_EP_GENERAL …
#define UAC_SET_ …
#define UAC_GET_ …
#define UAC__CUR …
#define UAC__MIN …
#define UAC__MAX …
#define UAC__RES …
#define UAC__MEM …
#define UAC_SET_CUR …
#define UAC_GET_CUR …
#define UAC_SET_MIN …
#define UAC_GET_MIN …
#define UAC_SET_MAX …
#define UAC_GET_MAX …
#define UAC_SET_RES …
#define UAC_GET_RES …
#define UAC_SET_MEM …
#define UAC_GET_MEM …
#define UAC_GET_STAT …
#define UAC_TERM_COPY_PROTECT …
#define UAC_FU_MUTE …
#define UAC_FU_VOLUME …
#define UAC_FU_BASS …
#define UAC_FU_MID …
#define UAC_FU_TREBLE …
#define UAC_FU_GRAPHIC_EQUALIZER …
#define UAC_FU_AUTOMATIC_GAIN …
#define UAC_FU_DELAY …
#define UAC_FU_BASS_BOOST …
#define UAC_FU_LOUDNESS …
#define UAC_CONTROL_BIT(CS) …
#define UAC_UD_ENABLE …
#define UAC_UD_MODE_SELECT …
#define UAC_DP_ENABLE …
#define UAC_DP_MODE_SELECT …
#define UAC_3D_ENABLE …
#define UAC_3D_SPACE …
#define UAC_REVERB_ENABLE …
#define UAC_REVERB_LEVEL …
#define UAC_REVERB_TIME …
#define UAC_REVERB_FEEDBACK …
#define UAC_CHORUS_ENABLE …
#define UAC_CHORUS_LEVEL …
#define UAC_CHORUS_RATE …
#define UAC_CHORUS_DEPTH …
#define UAC_DCR_ENABLE …
#define UAC_DCR_RATE …
#define UAC_DCR_MAXAMPL …
#define UAC_DCR_THRESHOLD …
#define UAC_DCR_ATTACK_TIME …
#define UAC_DCR_RELEASE_TIME …
#define UAC_XU_ENABLE …
#define UAC_MS_HEADER …
#define UAC_MIDI_IN_JACK …
#define UAC_MIDI_OUT_JACK …
#define UAC_MS_GENERAL …
#define UAC_TERMINAL_UNDEFINED …
#define UAC_TERMINAL_STREAMING …
#define UAC_TERMINAL_VENDOR_SPEC …
struct uac1_ac_header_descriptor { … } __attribute__ ((packed));
#define UAC_DT_AC_HEADER_SIZE(n) …
#define DECLARE_UAC_AC_HEADER_DESCRIPTOR(n) …
struct uac_input_terminal_descriptor { … } __attribute__ ((packed));
#define UAC_DT_INPUT_TERMINAL_SIZE …
#define UAC_INPUT_TERMINAL_UNDEFINED …
#define UAC_INPUT_TERMINAL_MICROPHONE …
#define UAC_INPUT_TERMINAL_DESKTOP_MICROPHONE …
#define UAC_INPUT_TERMINAL_PERSONAL_MICROPHONE …
#define UAC_INPUT_TERMINAL_OMNI_DIR_MICROPHONE …
#define UAC_INPUT_TERMINAL_MICROPHONE_ARRAY …
#define UAC_INPUT_TERMINAL_PROC_MICROPHONE_ARRAY …
#define UAC_TERMINAL_CS_COPY_PROTECT_CONTROL …
struct uac1_output_terminal_descriptor { … } __attribute__ ((packed));
#define UAC_DT_OUTPUT_TERMINAL_SIZE …
#define UAC_OUTPUT_TERMINAL_UNDEFINED …
#define UAC_OUTPUT_TERMINAL_SPEAKER …
#define UAC_OUTPUT_TERMINAL_HEADPHONES …
#define UAC_OUTPUT_TERMINAL_HEAD_MOUNTED_DISPLAY_AUDIO …
#define UAC_OUTPUT_TERMINAL_DESKTOP_SPEAKER …
#define UAC_OUTPUT_TERMINAL_ROOM_SPEAKER …
#define UAC_OUTPUT_TERMINAL_COMMUNICATION_SPEAKER …
#define UAC_OUTPUT_TERMINAL_LOW_FREQ_EFFECTS_SPEAKER …
#define UAC_BIDIR_TERMINAL_UNDEFINED …
#define UAC_BIDIR_TERMINAL_HANDSET …
#define UAC_BIDIR_TERMINAL_HEADSET …
#define UAC_BIDIR_TERMINAL_SPEAKER_PHONE …
#define UAC_BIDIR_TERMINAL_ECHO_SUPPRESSING …
#define UAC_BIDIR_TERMINAL_ECHO_CANCELING …
#define UAC_DT_FEATURE_UNIT_SIZE(ch) …
#define DECLARE_UAC_FEATURE_UNIT_DESCRIPTOR(ch) …
struct uac_mixer_unit_descriptor { … } __attribute__ ((packed));
static inline __u8 uac_mixer_unit_bNrChannels(struct uac_mixer_unit_descriptor *desc)
{ … }
static inline __u32 uac_mixer_unit_wChannelConfig(struct uac_mixer_unit_descriptor *desc,
int protocol)
{ … }
static inline __u8 uac_mixer_unit_iChannelNames(struct uac_mixer_unit_descriptor *desc,
int protocol)
{ … }
static inline __u8 *uac_mixer_unit_bmControls(struct uac_mixer_unit_descriptor *desc,
int protocol)
{ … }
static inline __u16 uac3_mixer_unit_wClusterDescrID(struct uac_mixer_unit_descriptor *desc)
{ … }
static inline __u8 uac_mixer_unit_iMixer(struct uac_mixer_unit_descriptor *desc)
{ … }
struct uac_selector_unit_descriptor { … } __attribute__ ((packed));
static inline __u8 uac_selector_unit_iSelector(struct uac_selector_unit_descriptor *desc)
{ … }
struct uac_feature_unit_descriptor { … } __attribute__((packed));
static inline __u8 uac_feature_unit_iFeature(struct uac_feature_unit_descriptor *desc)
{ … }
struct uac_processing_unit_descriptor { … } __attribute__ ((packed));
static inline __u8 uac_processing_unit_bNrChannels(struct uac_processing_unit_descriptor *desc)
{ … }
static inline __u32 uac_processing_unit_wChannelConfig(struct uac_processing_unit_descriptor *desc,
int protocol)
{ … }
static inline __u8 uac_processing_unit_iChannelNames(struct uac_processing_unit_descriptor *desc,
int protocol)
{ … }
static inline __u8 uac_processing_unit_bControlSize(struct uac_processing_unit_descriptor *desc,
int protocol)
{ … }
static inline __u8 *uac_processing_unit_bmControls(struct uac_processing_unit_descriptor *desc,
int protocol)
{ … }
static inline __u8 uac_processing_unit_iProcessing(struct uac_processing_unit_descriptor *desc,
int protocol)
{ … }
static inline __u8 *uac_processing_unit_specific(struct uac_processing_unit_descriptor *desc,
int protocol)
{ … }
static inline __u8 uac_extension_unit_bControlSize(struct uac_processing_unit_descriptor *desc,
int protocol)
{ … }
static inline __u8 uac_extension_unit_iExtension(struct uac_processing_unit_descriptor *desc,
int protocol)
{ … }
struct uac1_as_header_descriptor { … } __attribute__ ((packed));
#define UAC_DT_AS_HEADER_SIZE …
#define UAC_FORMAT_TYPE_I_UNDEFINED …
#define UAC_FORMAT_TYPE_I_PCM …
#define UAC_FORMAT_TYPE_I_PCM8 …
#define UAC_FORMAT_TYPE_I_IEEE_FLOAT …
#define UAC_FORMAT_TYPE_I_ALAW …
#define UAC_FORMAT_TYPE_I_MULAW …
struct uac_format_type_i_continuous_descriptor { … } __attribute__ ((packed));
#define UAC_FORMAT_TYPE_I_CONTINUOUS_DESC_SIZE …
struct uac_format_type_i_discrete_descriptor { … } __attribute__ ((packed));
#define DECLARE_UAC_FORMAT_TYPE_I_DISCRETE_DESC(n) …
#define UAC_FORMAT_TYPE_I_DISCRETE_DESC_SIZE(n) …
struct uac_format_type_i_ext_descriptor { … } __attribute__((packed));
#define UAC_FORMAT_TYPE_II_MPEG …
#define UAC_FORMAT_TYPE_II_AC3 …
struct uac_format_type_ii_discrete_descriptor { … } __attribute__((packed));
struct uac_format_type_ii_ext_descriptor { … } __attribute__((packed));
#define UAC_FORMAT_TYPE_III_IEC1937_AC3 …
#define UAC_FORMAT_TYPE_III_IEC1937_MPEG1_LAYER1 …
#define UAC_FORMAT_TYPE_III_IEC1937_MPEG2_NOEXT …
#define UAC_FORMAT_TYPE_III_IEC1937_MPEG2_EXT …
#define UAC_FORMAT_TYPE_III_IEC1937_MPEG2_LAYER1_LS …
#define UAC_FORMAT_TYPE_III_IEC1937_MPEG2_LAYER23_LS …
#define UAC_FORMAT_TYPE_UNDEFINED …
#define UAC_FORMAT_TYPE_I …
#define UAC_FORMAT_TYPE_II …
#define UAC_FORMAT_TYPE_III …
#define UAC_EXT_FORMAT_TYPE_I …
#define UAC_EXT_FORMAT_TYPE_II …
#define UAC_EXT_FORMAT_TYPE_III …
struct uac_iso_endpoint_descriptor { … } __attribute__((packed));
#define UAC_ISO_ENDPOINT_DESC_SIZE …
#define UAC_EP_CS_ATTR_SAMPLE_RATE …
#define UAC_EP_CS_ATTR_PITCH_CONTROL …
#define UAC_EP_CS_ATTR_FILL_MAX …
#define UAC1_STATUS_TYPE_ORIG_MASK …
#define UAC1_STATUS_TYPE_ORIG_AUDIO_CONTROL_IF …
#define UAC1_STATUS_TYPE_ORIG_AUDIO_STREAM_IF …
#define UAC1_STATUS_TYPE_ORIG_AUDIO_STREAM_EP …
#define UAC1_STATUS_TYPE_IRQ_PENDING …
#define UAC1_STATUS_TYPE_MEM_CHANGED …
struct uac1_status_word { … } __attribute__((packed));
#endif