haiku/headers/private/media/OldSoundDriver.h

102 lines
2.7 KiB
C
Raw Normal View History

#ifndef _OLD_SOUND_DRIVER_H_
#define _OLD_SOUND_DRIVER_H_
/*
* The updated BeOS R3 style legacy sound card driver interface
* Assembled from the Be Newsletter, Volume II, Issue 22; June 3, 1998
* and Be Newsletter, Volume III, Issue 12, March 24, 1999
*/
enum {
SOUND_GET_PARAMS = B_DEVICE_OP_CODES_END,
SOUND_SET_PARAMS,
SOUND_SET_PLAYBACK_COMPLETION_SEM,
SOUND_SET_CAPTURE_COMPLETION_SEM,
SOUND_RESERVED_1, /* unused */
SOUND_RESERVED_2, /* unused */
SOUND_DEBUG_ON, /* unused */
SOUND_DEBUG_OFF, /* unused */
SOUND_WRITE_BUFFER,
SOUND_READ_BUFFER,
SOUND_LOCK_FOR_DMA,
SOUND_SET_CAPTURE_PREFERRED_BUF_SIZE,
SOUND_SET_PLAYBACK_PREFERRED_BUF_SIZE,
SOUND_GET_CAPTURE_PREFERRED_BUF_SIZE,
SOUND_GET_PLAYBACK_PREFERRED_BUF_SIZE
};
typedef struct audio_buffer_header {
int32 buffer_number;
int32 subscriber_count;
bigtime_t time;
int32 reserved_1;
int32 reserved_2;
bigtime_t sample_clock;
} audio_buffer_header;
enum adc_source {
line = 0, cd, mic, loopback
};
enum sample_rate {
kHz_8_0 = 0, kHz_5_51, kHz_16_0, kHz_11_025, kHz_27_42,
kHz_18_9, kHz_32_0, kHz_22_05, kHz_37_8 = 9,
kHz_44_1 = 11, kHz_48_0, kHz_33_075, kHz_9_6, kHz_6_62
};
enum sample_format {}; /* obsolete */
struct channel {
enum adc_source adc_source;
/* adc input source */
char adc_gain;
/* 0..15 adc gain, in 1.5 dB steps */
char mic_gain_enable;
/* non-zero enables 20 dB MIC input gain */
char cd_mix_gain;
/* 0..31 cd mix to output gain in -1.5dB steps */
char cd_mix_mute;
/* non-zero mutes cd mix */
char aux2_mix_gain;
/* unused */
char aux2_mix_mute;
/* unused */
char line_mix_gain;
/* 0..31 line mix to output gain in -1.5dB steps */
char line_mix_mute;
/* non-zero mutes line mix */
char dac_attn;
/* 0..61 dac attenuation, in -1.5 dB steps */
char dac_mute;
/* non-zero mutes dac output */
};
typedef struct sound_setup {
struct channel left;
/* left channel setup */
struct channel right;
/* right channel setup */
enum sample_rate sample_rate;
/* sample rate */
enum sample_format playback_format;
/* ignore (always 16bit-linear) */
enum sample_format capture_format;
/* ignore (always 16bit-linear) */
char dither_enable;
/* non-zero enables dither on 16 => 8 bit */
char mic_attn;
/* 0..64 mic input level */
char mic_enable;
/* non-zero enables mic input */
char output_boost;
/* ignore (always on) */
char highpass_enable;
/* ignore (always on) */
char mono_gain;
/* 0..64 mono speaker gain */
char mono_mute;
/* non-zero mutes speaker */
} sound_setup;
#endif