⚠️ VeridianOS Kernel Documentation - This is low-level kernel code. All functions are unsafe unless explicitly marked otherwise. no_std

Module usb_audio

Module usb_audio 

Source
Expand description

USB Audio Class (UAC) and HDMI Audio drivers

Provides USB Audio Class 1.0/2.0 device support and HDMI audio output:

§USB Audio Class (UAC)

  • UAC 1.0 and 2.0 descriptor parsing (Audio Control, Audio Streaming)
  • Terminal types: Input Terminal, Output Terminal, Feature Unit, Mixer Unit
  • Audio format descriptors: PCM, sample rates (8000-192000), bit depths (16/24/32)
  • Isochronous endpoint management (adaptive, synchronous, asynchronous)
  • Sample rate control (SET_CUR/GET_CUR)
  • Volume/mute control via Feature Unit (dB scaling, 8.8 fixed-point)

§HDMI Audio

  • HDMI audio infoframe (CEA-861) construction
  • Channel allocation (2ch stereo, 5.1, 7.1)
  • Audio Clock Regeneration (N/CTS values)
  • ELD (EDID-Like Data) parsing for sink capabilities
  • Integration with GPU driver (HDA codec over HDMI)

All arithmetic uses integer/fixed-point math only (no FPU).

Structs§

AudioClockRegeneration
Audio Clock Regeneration (ACR) parameters
AudioFormatDescriptor
Audio format type descriptor
AudioStreamingInterface
An audio streaming interface alternate setting
ClockSource
Clock source descriptor (UAC 2.0)
FeatureUnit
Feature unit descriptor – provides volume/mute/tone controls
HdmiAudioInfoframe
HDMI Audio InfoFrame packet (CEA-861)
HdmiAudioOutput
HDMI audio output configuration for HDA codec
HdmiEld
ELD (EDID-Like Data) for HDMI audio sink capabilities
InputTerminal
Input terminal descriptor
MixerUnit
Mixer unit descriptor
MuteControlRequest
Mute control request
OutputTerminal
Output terminal descriptor
SampleRateRange
Supported sample rate entry
SampleRateRequest
Sample rate control request
ShortAudioDescriptor
CEA Short Audio Descriptor (SAD)
UsbAudioDevice
A parsed USB Audio device with all its audio topology
VolumeControlRequest
Volume control request
VolumeDb
Volume in 8.8 fixed-point dB format (USB Audio spec)

Enums§

AudioUnit
Audio unit – variant type for all unit/terminal descriptors
HdaWidgetType
HDA codec widget types relevant to HDMI audio
HdmiAudioCoding
HDMI audio coding types
HdmiChannelAllocation
HDMI channel allocation codes (CEA-861-D Table 20)
HdmiSampleRate
HDMI audio sample rate encoding for infoframe
HdmiSampleSize
HDMI audio sample size encoding for infoframe
IsoSyncType
Isochronous endpoint synchronization type
TerminalDirection
Audio terminal type classification
UacVersion
UAC version supported by a device

Constants§

CS_ENDPOINT
CS_INTERFACE
Class-specific descriptor types
HDMI_AUDIO_INFOFRAME_LENGTH
HDMI audio infoframe length (fixed at 10 bytes)
HDMI_AUDIO_INFOFRAME_TYPE
HDMI audio infoframe type code (CEA-861)
HDMI_AUDIO_INFOFRAME_VERSION
HDMI audio infoframe version
STANDARD_SAMPLE_RATES
Standard USB audio sample rates in Hz
UAC2_CLOCK_MULTIPLIER
Clock multiplier (UAC 2.0)
UAC2_CLOCK_SELECTOR
Clock selector (UAC 2.0)
UAC2_CLOCK_SOURCE
Clock source (UAC 2.0)
UAC_AC_HEADER
AC interface header
UAC_AS_FORMAT_TYPE
AS format type descriptor
UAC_AS_GENERAL
AS interface general descriptor
UAC_EP_SYNC_ADAPTIVE
Adaptive: device adapts to host clock
UAC_EP_SYNC_ASYNC
Asynchronous: device sets its own clock
UAC_EP_SYNC_NONE
No synchronization
UAC_EP_SYNC_SYNC
Synchronous: device uses SOF synchronization
UAC_EXTENSION_UNIT
Extension unit descriptor (UAC 1.0)
UAC_FEATURE_UNIT
Feature unit descriptor
UAC_FORMAT_ALAW
A-Law format
UAC_FORMAT_IEEE_FLOAT
IEEE 754 float format
UAC_FORMAT_MULAW
Mu-Law format
UAC_FORMAT_PCM
PCM format (uncompressed)
UAC_FORMAT_PCM8
PCM8 format (8-bit unsigned)
UAC_FU_AUTOMATIC_GAIN
UAC_FU_BASS_CONTROL
UAC_FU_MUTE_CONTROL
UAC_FU_TREBLE_CONTROL
UAC_FU_VOLUME_CONTROL
UAC_GET_CUR
UAC_GET_MAX
UAC_GET_MIN
UAC_GET_RES
UAC_INPUT_TERMINAL
Input terminal descriptor
UAC_MIXER_UNIT
Mixer unit descriptor
UAC_OUTPUT_TERMINAL
Output terminal descriptor
UAC_PROCESSING_UNIT
Processing unit descriptor (UAC 1.0)
UAC_PROTOCOL_IP_VERSION_02_00
UAC_PROTOCOL_NONE
Audio protocol codes
UAC_SELECTOR_UNIT
Selector unit descriptor
UAC_SET_CUR
UAC_SET_MAX
UAC_SET_MIN
UAC_SET_RES
UAC_TERMINAL_DESKTOP_MIC
Desktop microphone
UAC_TERMINAL_DESKTOP_SPEAKER
Desktop speaker
UAC_TERMINAL_HDMI
HDMI output terminal
UAC_TERMINAL_HEADPHONES
Headphones output
UAC_TERMINAL_HEADSET_MIC
Headset microphone
UAC_TERMINAL_MICROPHONE
Generic microphone input
UAC_TERMINAL_SPDIF
S/PDIF digital output
UAC_TERMINAL_SPEAKER
Generic speaker output
UAC_TERMINAL_USB_STREAMING
USB streaming terminal (host connection)
USB_CLASS_AUDIO
USB Audio device class code
USB_SUBCLASS_AUDIO_CONTROL
Audio subclass codes
USB_SUBCLASS_AUDIO_STREAMING
USB_SUBCLASS_MIDI_STREAMING
VOLUME_MAX
Maximum volume (+127.99 dB)
VOLUME_SILENCE
Silence volume (minimum, -128.0 dB)
VOLUME_UNITY
Unity gain (0.0 dB)