From 00e8ee39e9096f8109557b7ed21ef500a8196f8f Mon Sep 17 00:00:00 2001 From: beveloper Date: Fri, 12 Jul 2002 12:35:15 +0000 Subject: [PATCH] adding a header file that implements the BeOS R3 style sound driver interface git-svn-id: file:///srv/svn/repos/haiku/trunk/current@130 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/media/OldSoundDriver.h | 97 ++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 headers/private/media/OldSoundDriver.h diff --git a/headers/private/media/OldSoundDriver.h b/headers/private/media/OldSoundDriver.h new file mode 100644 index 0000000000..697857c16d --- /dev/null +++ b/headers/private/media/OldSoundDriver.h @@ -0,0 +1,97 @@ +#ifndef _OLD_SOUND_DRIVER_H_ +#define _OLD_SOUND_DRIVER_H_ + +/* + * The BeOS R3 style legacy sound card driver interface + * Assembled from the Be Newsletter, Volume II, Issue 22; June 3, 1998 + */ + +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 +}; + +typedef struct audio_buffer_header { + int32 buffer_number; + int32 subscriber_count; + bigtime_t time; + int32 reserved_1; + int32 reserved_2; + int32 reserved_3; + int32 reserved_4; +} 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