534 lines
12 KiB
Rust
534 lines
12 KiB
Rust
pub const AUDIO: u8 = 0x1;
|
|
pub const HEADER: u8 = 0x1;
|
|
|
|
/// A.2 Audio Function Subclass Codes
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum FunctionSubclass {
|
|
Undefined = 0,
|
|
}
|
|
|
|
/// A.3 Audio Function Protocol Codes
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum FunctionProtocol {
|
|
Undefined = 0,
|
|
Version2 = 0x20,
|
|
}
|
|
|
|
/// A.5 Audio Interface Subclass Codes
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum InterfaceSubclass {
|
|
Undefined = 0,
|
|
AudioControl = 1,
|
|
AudioStreaming = 2,
|
|
MidiStreaming = 3,
|
|
}
|
|
|
|
/// A.6 Audio Interface Protocol Codes
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum InterfaceProtocol {
|
|
Undefined = 0,
|
|
Version2 = 0x20,
|
|
}
|
|
|
|
/// A.7 Audio Function Category Codes
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum FunctionCode {
|
|
Undefined = 0,
|
|
DesktopSpeaker = 1,
|
|
HomeTheater = 2,
|
|
Microphone = 3,
|
|
Headset = 4,
|
|
Telephone = 5,
|
|
Converter = 6,
|
|
SoundRecorder = 7,
|
|
IoBox = 8,
|
|
MusicalInstrument = 9,
|
|
ProAudio = 0xa,
|
|
AudioVideo = 0xb,
|
|
ControlPanel = 0xc,
|
|
Other = 0xff,
|
|
}
|
|
|
|
/// A.8 Audio Class-Specific Descriptor Types
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum ClassSpecificDescriptorType {
|
|
Undefined = 0x20,
|
|
Device = 0x21,
|
|
Configuration = 0x22,
|
|
String = 0x23,
|
|
Interface = 0x24,
|
|
Endpoint = 0x25,
|
|
}
|
|
|
|
/// A.9 Audio Class-Specific AC Interface Descriptor Subtypes
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum ClassSpecificACInterfaceDescriptorSubtype {
|
|
Undefined = 0,
|
|
Header = 0x01,
|
|
InputTerminal = 0x02,
|
|
OutputTerminal = 0x03,
|
|
MixerUnit = 0x04,
|
|
SelectorUnit = 0x05,
|
|
FeatureUnit = 0x06,
|
|
EffectUnit = 0x07,
|
|
ProcessingUnit = 0x08,
|
|
ExtensionUnit = 0x09,
|
|
ClockSource = 0x0A,
|
|
ClockSelector = 0x0B,
|
|
ClockMultiplier = 0x0C,
|
|
SampleRateConverter = 0x0D,
|
|
}
|
|
|
|
/// A.10 Audio Class-Specific AS Interface Descriptor Subtypes
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum ClassSpecificASInterfaceDescriptorSubtype {
|
|
Undefined = 0,
|
|
General = 1,
|
|
FormatType = 2,
|
|
Encoder = 3,
|
|
Decoder = 4,
|
|
}
|
|
|
|
/// A.11 Effect Unit Effect Types
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum EffectUnitEffectType {
|
|
Undefined = 0,
|
|
ParamEqSection = 1,
|
|
Reverb = 2,
|
|
ModDelay = 3,
|
|
DynRangeComp = 4,
|
|
}
|
|
|
|
/// A.12 Processing Unit Process Types
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum ProcessingUnitProcessType {
|
|
Undefined = 0,
|
|
UpDownMix = 1,
|
|
DolbyPrologic = 2,
|
|
StereoExtender = 3,
|
|
}
|
|
|
|
/// A.13 Audio Class-Specific Endpoint Descriptor Subtypes
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum ClassSpecificEndpointDescriptorSubtype {
|
|
Undefined = 0,
|
|
General = 1,
|
|
}
|
|
|
|
/// A.14 Audio Class-Specific Request Codes
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum ClassSpecificRequest {
|
|
Undefined = 0,
|
|
Cur = 1,
|
|
Range = 2,
|
|
Mem = 3,
|
|
}
|
|
|
|
/// A.15 Encoder Type Codes
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum EncoderType {
|
|
Undefined = 0,
|
|
Other = 1,
|
|
Mpeg = 2,
|
|
Ac3 = 3,
|
|
Wma = 4,
|
|
Dts = 5,
|
|
}
|
|
/// A.16 Decoder Type Codes
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum DecoderType {
|
|
Undefined = 0,
|
|
Other = 1,
|
|
Mpeg = 2,
|
|
Ac3 = 3,
|
|
Wma = 4,
|
|
Dts = 5,
|
|
}
|
|
|
|
/// A.17.1 Clock Source Control Selectors
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum ClockSourceControlSelector {
|
|
Undefined = 0,
|
|
SamFreqControl = 1,
|
|
ClockValidControl = 2,
|
|
}
|
|
/// A.17.2 Clock Selector Control Selectors
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum ClockSelectorControlSelector {
|
|
ControlUndefined = 0,
|
|
ClockSelectorControl = 1,
|
|
}
|
|
|
|
/// A.17.3 Clock Multiplier Control Selectors
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum ClockMultiplierControlSelector {
|
|
Undefined = 0,
|
|
NumeratorControl = 1,
|
|
DenominatorControl = 2,
|
|
}
|
|
|
|
/// A.17.4 Terminal Control Selectors
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum TerminalControlSelector {
|
|
Undefined = 0,
|
|
CopyProtect = 1,
|
|
Connector = 2,
|
|
Overload = 3,
|
|
Cluster = 4,
|
|
Underflow = 5,
|
|
Overflow = 6,
|
|
Latency = 7,
|
|
PhantomPower = 8,
|
|
}
|
|
|
|
/// A.17.5 Mixer Control Selectors
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum MixerControlSelector {
|
|
Undefined = 0,
|
|
Mixer = 1,
|
|
Cluster = 2,
|
|
Underflow = 3,
|
|
Overflow = 4,
|
|
Latency = 5,
|
|
}
|
|
|
|
/// A.17.6 Selector Control Selectors
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum SelectorControlSelector {
|
|
Undefined = 0,
|
|
Selector = 1,
|
|
Latency = 2,
|
|
}
|
|
|
|
/// A.17.7 Feature Unit Control Selectors
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum FeatureUnitControlSelector {
|
|
Undefined = 0,
|
|
Mute = 0x01,
|
|
Volume = 0x02,
|
|
Bass = 0x03,
|
|
Mid = 0x04,
|
|
Treble = 0x05,
|
|
GraphicEqualizer = 0x06,
|
|
AutomaticGain = 0x07,
|
|
Delay = 0x08,
|
|
BassBoost = 0x09,
|
|
Loudness = 0x0A,
|
|
InputGain = 0x0B,
|
|
InputGainPad = 0x0C,
|
|
PhaseInverter = 0x0D,
|
|
Underflow = 0x0E,
|
|
Overflow = 0x0F,
|
|
Latency = 0x10,
|
|
HighpassFilter = 0x11,
|
|
}
|
|
/// A.17.8.1 Parametric Equalizer Section Effect Unit Control Selectors
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum ParametricEqSectionEffectUnitControlSelector {
|
|
Undefined = 0,
|
|
Enable = 1,
|
|
CenterFreq = 2,
|
|
QFactor = 3,
|
|
Gain = 4,
|
|
Underflow = 5,
|
|
Overflow = 6,
|
|
Latency = 7,
|
|
}
|
|
|
|
/// A.17.8.2 Reverberation Effect Unit Control Selectors
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum ReverbEffectUnitControlSelector {
|
|
Undefined = 0,
|
|
Enable = 1,
|
|
Type = 2,
|
|
Level = 3,
|
|
Time = 4,
|
|
Feedback = 5,
|
|
PreDelay = 6,
|
|
Density = 7,
|
|
HiFreqRolloff = 8,
|
|
Underflow = 9,
|
|
Overflow = 0xa,
|
|
Latency = 0xb,
|
|
}
|
|
|
|
/// A.17.8.3 Modulation Delay Effect Unit Control Selectors
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum ModDelayEffectUnitControlSelector {
|
|
Undefined = 0,
|
|
Enable = 1,
|
|
Balance = 2,
|
|
Rate = 3,
|
|
Depth = 4,
|
|
Time = 5,
|
|
Feedback = 6,
|
|
Underflow = 7,
|
|
Overflow = 8,
|
|
Latency = 9,
|
|
}
|
|
|
|
/// A.17.8.4 Dynamic Range Compressor Effect Unit Control Selectors
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum DynamicRangeCompressorEffectUnitControlSelector {
|
|
Undefined = 0,
|
|
Enable = 1,
|
|
CompressionRate = 2,
|
|
MaxAmplitude = 3,
|
|
Threshold = 4,
|
|
AttackTime = 5,
|
|
ReleaseTime = 6,
|
|
Underflow = 7,
|
|
Overflow = 8,
|
|
Latency = 9,
|
|
}
|
|
|
|
/// A.17.9.1 Up/Down-mix Processing Unit Control Selectors
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum UpDownMixProcessingUnitControlSelector {
|
|
Undefined = 0,
|
|
Enable = 1,
|
|
ModeSelect = 2,
|
|
Cluster = 3,
|
|
Underflow = 4,
|
|
Overflow = 5,
|
|
Latency = 6,
|
|
}
|
|
|
|
/// A.17.9.2 Dolby Prologic Processing Unit Control Selectors
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum DolbyProcessingUnitControlSelectors {
|
|
Undefined = 0,
|
|
Enable = 1,
|
|
ModeSelect = 2,
|
|
Cluster = 3,
|
|
Underflow = 4,
|
|
Overflow = 5,
|
|
Latency = 6,
|
|
}
|
|
|
|
/// A.17.9.3 Stereo Extender Processing Unit Control Selectors
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum StereoExtenderProcessingUnitControlSelector {
|
|
Undefined = 0,
|
|
Enable = 1,
|
|
Width = 2,
|
|
Underflow = 3,
|
|
Overflow = 4,
|
|
Latency = 5,
|
|
}
|
|
|
|
/// A.17.10 Extension Unit Control Selectors
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum ExtensionUnitControlSelector {
|
|
Undefined = 0,
|
|
Enable = 1,
|
|
Cluster = 2,
|
|
Underflow = 3,
|
|
Overflow = 4,
|
|
Latency = 5,
|
|
}
|
|
|
|
/// A.17.11 AudioStreaming Interface Control Selectors
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum AudioStreamingInterfaceControlSelector {
|
|
Undefined = 0,
|
|
ActAltSetting = 1,
|
|
ValAltSetting = 2,
|
|
AudioDataFormat = 3,
|
|
}
|
|
|
|
/// A.17.12 Encoder Control Selectors
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum EncoderControlSelector {
|
|
Undefined = 0,
|
|
BitRate = 0x01,
|
|
Quality = 0x02,
|
|
Vbr = 0x03,
|
|
Type = 0x04,
|
|
Underflow = 0x05,
|
|
Overflow = 0x06,
|
|
EncoderError = 0x07,
|
|
Param1 = 0x08,
|
|
Param2 = 0x09,
|
|
Param3 = 0x0A,
|
|
Param4 = 0x0B,
|
|
Param5 = 0x0C,
|
|
Param6 = 0x0D,
|
|
Param7 = 0x0E,
|
|
Param8 = 0x0F,
|
|
}
|
|
|
|
/// A.17.13.1 MPEG Decoder Control Selectors
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum MpegDecoderControlSelector {
|
|
Undefined = 0,
|
|
DualChannel = 1,
|
|
SecondStereo = 2,
|
|
Multilingual = 3,
|
|
DynRange = 4,
|
|
Scaling = 5,
|
|
HiloScaling = 6,
|
|
Underflow = 7,
|
|
Overflow = 8,
|
|
DecoderError = 9,
|
|
}
|
|
|
|
/// A.17.13.2 AC-3 Decoder Control Selectors
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum Ac3DecoderControlSelector {
|
|
Undefined = 0,
|
|
Mode = 1,
|
|
DynRange = 2,
|
|
Scaling = 3,
|
|
HiloScaling = 4,
|
|
Underflow = 5,
|
|
Overflow = 6,
|
|
DecoderError = 7,
|
|
}
|
|
|
|
/// A.17.13.3 WMA Decoder Control Selectors
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum WmaDecoderControlSelector {
|
|
Undefined = 0,
|
|
Underflow = 1,
|
|
Overflow = 2,
|
|
DecoderError = 3,
|
|
}
|
|
|
|
/// A.17.13.4 DTS Decoder Control Selectors
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum DtsDecoderControlSelector {
|
|
Undefined = 0,
|
|
Underflow = 1,
|
|
Overflow = 2,
|
|
DecoderError = 3,
|
|
}
|
|
|
|
/// A.17.14 Endpoint Control Selectors
|
|
#[repr(u8)]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum EndpointControlSelector {
|
|
Undefined = 0,
|
|
Pitch = 1,
|
|
DataOverrun = 2,
|
|
DataUnderrun = 3,
|
|
}
|
|
|
|
/// Universal Serial Bus Device Class Definition for Terminal Types
|
|
#[repr(u16)]
|
|
#[non_exhaustive]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum TerminalType {
|
|
// USB Terminal Types
|
|
UsbUndefined = 0x0100,
|
|
UsbStreaming = 0x0101,
|
|
UsbVendor = 0x01ff,
|
|
|
|
// Input Terminal Types
|
|
InUndefined = 0x0200,
|
|
InMicrophone = 0x0201,
|
|
InDesktopMicrophone = 0x0202,
|
|
InPersonalMicrophone = 0x0203,
|
|
InOmniDirectionalMicrophone = 0x0204,
|
|
InMicrophoneArray = 0x0205,
|
|
InProcessingMicrophoneArray = 0x0206,
|
|
|
|
// Output Terminal Types
|
|
OutUndefined = 0x0300,
|
|
OutSpeaker = 0x0301,
|
|
OutHeadphones = 0x0302,
|
|
OutHeadMountedDisplayAudio = 0x0303,
|
|
OutDesktopSpeaker = 0x0304,
|
|
OutRoomSpeaker = 0x0305,
|
|
OutCommunicationSpeaker = 0x0306,
|
|
OutLowFrequencyEffectsSpeaker = 0x0307,
|
|
|
|
// External Terminal Types
|
|
ExtUndefined = 0x0600,
|
|
ExtAnalogConnector = 0x0601,
|
|
ExtDigitalAudioInterface = 0x0602,
|
|
ExtLineConnector = 0x0603,
|
|
ExtLegacyAudioConnector = 0x0604,
|
|
ExtSpdifConnector = 0x0605,
|
|
Ext1394DaStream = 0x0606,
|
|
Ext1394DvStreamSoundtrack = 0x0607,
|
|
}
|
|
|
|
#[repr(u16)]
|
|
#[non_exhaustive]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum AudioDataFormatType1 {
|
|
Undefined = 0,
|
|
Pcm = 1,
|
|
Pcm8 = 2,
|
|
IeeeFloat = 3,
|
|
Alaw = 4,
|
|
Mulaw = 5,
|
|
}
|
|
|
|
#[repr(u16)]
|
|
#[non_exhaustive]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum AudioDataFormatType2 {
|
|
Undefined = 0x1000,
|
|
Mpeg = 0x1001,
|
|
Ac3 = 0x1002,
|
|
}
|
|
|
|
#[repr(u16)]
|
|
#[non_exhaustive]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum AudioDataFormatType3 {
|
|
Undefined = 0x2000,
|
|
Ac3 = 0x2001,
|
|
Mpeg1Layer1 = 0x2002,
|
|
Mpeg1Layer23OrMpeg2NoExt = 0x2003,
|
|
Mpeg2Ext = 0x2004,
|
|
Mpeg2Layer1Ls = 0x2005,
|
|
Mpeg2Layer23Ls = 0x2006,
|
|
}
|
|
#[repr(u8)]
|
|
#[non_exhaustive]
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
|
|
pub enum FormatType {
|
|
Undefined = 0,
|
|
Type1 = 1,
|
|
Type2 = 2,
|
|
Type3 = 3,
|
|
}
|