#ifndef _SYS_AUDIO_AUDIO_COMMON_H
#define _SYS_AUDIO_AUDIO_COMMON_H
#include <sys/mkdev.h>
#include <sys/types.h>
#ifdef __cplusplus
extern "C" {
#endif
#ifdef _KERNEL
typedef struct audio_parms audio_parms_t;
typedef struct audio_buffer audio_buffer_t;
typedef struct audio_stream audio_stream_t;
typedef struct audio_engine audio_engine_t;
typedef struct audio_client audio_client_t;
typedef struct audio_dev audio_dev_t;
typedef struct audio_mixer_ops audio_mixer_ops_t;
typedef struct audio_engine_ops audio_engine_ops_t;
typedef struct audio_ctrl audio_ctrl_t;
typedef struct audio_ctrl_desc audio_ctrl_desc_t;
struct audio_ctrl_desc {
const char *acd_name;
uint32_t acd_type;
uint64_t acd_flags;
uint64_t acd_maxvalue;
uint64_t acd_minvalue;
const char *acd_enum[64];
};
#define AUDIO_FORMAT_NONE 0x00000000U
#define AUDIO_FORMAT_ULAW 0x00000001U
#define AUDIO_FORMAT_ALAW 0x00000002U
#define AUDIO_FORMAT_S8 0x00000004U
#define AUDIO_FORMAT_U8 0x00000008U
#define AUDIO_FORMAT_S16_LE 0x00000010U
#define AUDIO_FORMAT_S16_BE 0x00000020U
#define AUDIO_FORMAT_U16_LE 0x00000040U
#define AUDIO_FORMAT_U16_BE 0x00000080U
#define AUDIO_FORMAT_S24_LE 0x00000100U
#define AUDIO_FORMAT_S24_BE 0x00000200U
#define AUDIO_FORMAT_S32_LE 0x00000400U
#define AUDIO_FORMAT_S32_BE 0x00000800U
#define AUDIO_FORMAT_S24_PACKED 0x00001000U
#define AUDIO_FORMAT_AC3 0x00010000U
#define AUDIO_FORMAT_OPAQUE_MASK 0xffff0000U
#define AUDIO_FORMAT_CONVERTIBLE 0x0000ffffU
#define AUDIO_FORMAT_PCM 0x00000f30
#if defined(_BIG_ENDIAN)
#define AUDIO_FORMAT_S16_NE AUDIO_FORMAT_S16_BE
#define AUDIO_FORMAT_U16_NE AUDIO_FORMAT_U16_BE
#define AUDIO_FORMAT_S32_NE AUDIO_FORMAT_S32_BE
#define AUDIO_FORMAT_S24_NE AUDIO_FORMAT_S24_BE
#define AUDIO_FORMAT_S16_OE AUDIO_FORMAT_S16_LE
#define AUDIO_FORMAT_U16_OE AUDIO_FORMAT_U16_LE
#define AUDIO_FORMAT_S32_OE AUDIO_FORMAT_S32_LE
#define AUDIO_FORMAT_S24_OE AUDIO_FORMAT_S24_LE
#elif defined(_LITTLE_ENDIAN)
#define AUDIO_FORMAT_S16_NE AUDIO_FORMAT_S16_LE
#define AUDIO_FORMAT_U16_NE AUDIO_FORMAT_U16_LE
#define AUDIO_FORMAT_S32_NE AUDIO_FORMAT_S32_LE
#define AUDIO_FORMAT_S24_NE AUDIO_FORMAT_S24_LE
#define AUDIO_FORMAT_S16_OE AUDIO_FORMAT_S16_BE
#define AUDIO_FORMAT_U16_OE AUDIO_FORMAT_U16_BE
#define AUDIO_FORMAT_S32_OE AUDIO_FORMAT_S32_BE
#define AUDIO_FORMAT_S24_OE AUDIO_FORMAT_S24_BE
#else
#error "Machine endianness undefined"
#endif
#define AUDIO_MN_CLONE_NBITS (NBITSMINOR32 - 1)
#define AUDIO_MN_CLONE_MASK (1U << (AUDIO_MN_CLONE_NBITS - 1))
#define AUDIO_MN_TYPE_NBITS (4)
#define AUDIO_MN_TYPE_SHIFT (0)
#define AUDIO_MN_TYPE_MASK ((1U << AUDIO_MN_TYPE_NBITS) - 1)
#define AUDIO_MN_INST_NBITS ((NBITSMINOR32 - 1) - AUDIO_MN_TYPE_NBITS)
#define AUDIO_MN_INST_MASK ((1U << AUDIO_MN_INST_NBITS) - 1)
#define AUDIO_MN_INST_SHIFT (AUDIO_MN_TYPE_NBITS)
#define AUDIO_MKMN(inst, typ) \
(((inst) << AUDIO_MN_INST_SHIFT) | ((typ) << AUDIO_MN_TYPE_SHIFT))
#define AUDIO_MINOR_MIXER (0)
#define AUDIO_MINOR_DSP (1)
#define AUDIO_MINOR_DEVAUDIO (3)
#define AUDIO_MINOR_DEVAUDIOCTL (4)
#define AUDIO_MINOR_SNDSTAT (AUDIO_MN_TYPE_MASK)
#define AUDIO_MINOR_DRV1 (AUDIO_MINOR_SNDSTAT - 1)
#define AUDIO_MINOR_DRV2 (AUDIO_MINOR_SNDSTAT - 2)
#define AUDIO_CTRL_ID_VOLUME "volume"
#define AUDIO_CTRL_ID_LINEOUT "line-out"
#define AUDIO_CTRL_ID_FRONT "front"
#define AUDIO_CTRL_ID_REAR "rear"
#define AUDIO_CTRL_ID_HEADPHONE "headphones"
#define AUDIO_CTRL_ID_CENTER "center"
#define AUDIO_CTRL_ID_LFE "lfe"
#define AUDIO_CTRL_ID_SURROUND "surround"
#define AUDIO_CTRL_ID_SPEAKER "speaker"
#define AUDIO_CTRL_ID_AUX1OUT "aux1-out"
#define AUDIO_CTRL_ID_AUX2OUT "aux2-out"
#define AUDIO_CTRL_ID_BASS "bass"
#define AUDIO_CTRL_ID_TREBLE "treble"
#define AUDIO_CTRL_ID_3DDEPTH "3d-depth"
#define AUDIO_CTRL_ID_3DCENT "3d-center"
#define AUDIO_CTRL_ID_3DENHANCE "3d-enhance"
#define AUDIO_CTRL_ID_PHONE "phone"
#define AUDIO_CTRL_ID_MIC "mic"
#define AUDIO_CTRL_ID_LINEIN "line-in"
#define AUDIO_CTRL_ID_CD "cd"
#define AUDIO_CTRL_ID_VIDEO "video"
#define AUDIO_CTRL_ID_AUX1IN "aux1-in"
#define AUDIO_CTRL_ID_PCMIN "pcm"
#define AUDIO_CTRL_ID_RECGAIN "record-gain"
#define AUDIO_CTRL_ID_AUX2IN "aux2-in"
#define AUDIO_CTRL_ID_MICBOOST "micboost"
#define AUDIO_CTRL_ID_LOOPBACK "loopback"
#define AUDIO_CTRL_ID_LOUDNESS "loudness"
#define AUDIO_CTRL_ID_OUTPUTS "outputs"
#define AUDIO_CTRL_ID_INPUTS "inputs"
#define AUDIO_CTRL_ID_RECSRC "record-source"
#define AUDIO_CTRL_ID_MONSRC "monitor-source"
#define AUDIO_CTRL_ID_DIAG "diag"
#define AUDIO_CTRL_ID_BEEP "beep"
#define AUDIO_CTRL_ID_MONGAIN "monitor-gain"
#define AUDIO_CTRL_ID_STEREOSIM "stereo-simulate"
#define AUDIO_CTRL_ID_MICGAIN "mic-gain"
#define AUDIO_CTRL_ID_SPKSRC "speaker-source"
#define AUDIO_CTRL_ID_MICSRC "mic-source"
#define AUDIO_CTRL_ID_JACK1 "jack1"
#define AUDIO_CTRL_ID_JACK2 "jack2"
#define AUDIO_CTRL_ID_JACK3 "jack3"
#define AUDIO_CTRL_ID_JACK4 "jack4"
#define AUDIO_CTRL_ID_JACK5 "jack5"
#define AUDIO_CTRL_ID_JACK6 "jack6"
#define AUDIO_CTRL_ID_JACK7 "jack7"
#define AUDIO_CTRL_ID_DOWNMIX "downmix"
#define AUDIO_CTRL_ID_SPREAD "spread"
#define AUDIO_PORT_MIC "mic"
#define AUDIO_PORT_CD "cd"
#define AUDIO_PORT_VIDEO "video"
#define AUDIO_PORT_AUX1OUT "aux1-out"
#define AUDIO_PORT_AUX2OUT "aux2-out"
#define AUDIO_PORT_LINEOUT "line-out"
#define AUDIO_PORT_STEREOMIX "stereo-mix"
#define AUDIO_PORT_MONOMIX "mono-mix"
#define AUDIO_PORT_PHONE "phone"
#define AUDIO_PORT_REAR "rear"
#define AUDIO_PORT_CENTER "center"
#define AUDIO_PORT_SURROUND "surround"
#define AUDIO_PORT_LFE "lfe"
#define AUDIO_PORT_SPEAKER "speaker"
#define AUDIO_PORT_LINEIN "line-in"
#define AUDIO_PORT_AUX1IN "aux1-in"
#define AUDIO_PORT_AUX2IN "aux2-in"
#define AUDIO_PORT_HEADPHONES "headphones"
#define AUDIO_PORT_SPDIFIN "spdif-in"
#define AUDIO_PORT_SPDIFOUT "spdif-out"
#define AUDIO_PORT_CENLFE "center/lfe"
#define AUDIO_PORT_MIC1 "mic1"
#define AUDIO_PORT_MIC2 "mic2"
#define AUDIO_PORT_DIGOUT "digital-out"
#define AUDIO_PORT_DIGIN "digital-in"
#define AUDIO_PORT_HDMI "hdmi"
#define AUDIO_PORT_MODEM "modem"
#define AUDIO_PORT_HANDSET "handset"
#define AUDIO_PORT_OTHER "other"
#define AUDIO_PORT_STEREO "stereo"
#define AUDIO_PORT_NONE "none"
#define AUDIO_VALUE_ON "on"
#define AUDIO_VALUE_OFF "off"
#define AUDIO_VALUE_VERYLOW "very-low"
#define AUDIO_VALUE_LOW "low"
#define AUDIO_VALUE_MEDIUM "medium"
#define AUDIO_VALUE_HIGH "high"
#define AUDIO_VALUE_VERYHIGH "very-high"
#define AUDIO_WALK_CONTINUE 1
#define AUDIO_WALK_STOP 2
#define AUDIO_WALK_RESTART 3
#define AUDIO_CTRL_TYPE_BOOLEAN 1
#define AUDIO_CTRL_TYPE_ENUM 2
#define AUDIO_CTRL_TYPE_STEREO 3
#define AUDIO_CTRL_TYPE_MONO 4
#define AUDIO_CTRL_TYPE_METER 5
#define AUDIO_CTRL_FLAG_READABLE 0x00000001
#define AUDIO_CTRL_FLAG_WRITEABLE 0x00000002
#define AUDIO_CTRL_FLAG_RW 0x00000003
#define AUDIO_CTRL_FLAG_VUPEAK 0x00000004
#define AUDIO_CTRL_FLAG_CENTIBEL 0x00000008
#define AUDIO_CTRL_FLAG_DECIBEL 0x00000010
#define AUDIO_CTRL_FLAG_POLL 0x00000020
#define AUDIO_CTRL_FLAG_MAINVOL 0x00000100
#define AUDIO_CTRL_FLAG_PCMVOL 0x00000200
#define AUDIO_CTRL_FLAG_RECVOL 0x00000400
#define AUDIO_CTRL_FLAG_MONVOL 0x00000800
#define AUDIO_CTRL_FLAG_PLAY 0x00001000
#define AUDIO_CTRL_FLAG_REC 0x00002000
#define AUDIO_CTRL_FLAG_3D 0x00004000
#define AUDIO_CTRL_FLAG_TONE 0x00008000
#define AUDIO_CTRL_FLAG_MONITOR 0x00010000
#define AUDIO_CTRL_FLAG_DIGITAL 0x00020000
#define AUDIO_CTRL_FLAG_MULTI 0x00000040
#endif
#ifdef __cplusplus
}
#endif
#endif