#ifndef _VIRTUAL_OSS_H_
#define _VIRTUAL_OSS_H_
#include <sys/ioccom.h>
#define VIRTUAL_OSS_NAME_MAX 32
#define VIRTUAL_OSS_VERSION 0x00010008
#define VIRTUAL_OSS_OPTIONS_MAX 1024
#define VIRTUAL_OSS_FILTER_MAX 65536
#define VIRTUAL_OSS_GET_VERSION _IOR('O', 0, int)
struct virtual_oss_io_info {
int number;
int channel;
char name[VIRTUAL_OSS_NAME_MAX];
int bits;
int rx_amp;
int tx_amp;
int rx_chan;
int tx_chan;
int rx_mute;
int tx_mute;
int rx_pol;
int tx_pol;
int rx_delay;
int rx_delay_limit;
};
#define VIRTUAL_OSS_GET_DEV_INFO _IOWR('O', 1, struct virtual_oss_io_info)
#define VIRTUAL_OSS_SET_DEV_INFO _IOW('O', 2, struct virtual_oss_io_info)
#define VIRTUAL_OSS_GET_LOOP_INFO _IOWR('O', 3, struct virtual_oss_io_info)
#define VIRTUAL_OSS_SET_LOOP_INFO _IOW('O', 4, struct virtual_oss_io_info)
struct virtual_oss_mon_info {
int number;
int bits;
int src_chan;
int dst_chan;
int pol;
int mute;
int amp;
};
#define VIRTUAL_OSS_GET_INPUT_MON_INFO _IOWR('O', 5, struct virtual_oss_mon_info)
#define VIRTUAL_OSS_SET_INPUT_MON_INFO _IOW('O', 6, struct virtual_oss_mon_info)
#define VIRTUAL_OSS_GET_OUTPUT_MON_INFO _IOWR('O', 7, struct virtual_oss_mon_info)
#define VIRTUAL_OSS_SET_OUTPUT_MON_INFO _IOW('O', 8, struct virtual_oss_mon_info)
#define VIRTUAL_OSS_GET_LOCAL_MON_INFO _IOWR('O', 43, struct virtual_oss_mon_info)
#define VIRTUAL_OSS_SET_LOCAL_MON_INFO _IOW('O', 44, struct virtual_oss_mon_info)
struct virtual_oss_io_peak {
int number;
int channel;
char name[VIRTUAL_OSS_NAME_MAX];
int bits;
long long rx_peak_value;
long long tx_peak_value;
};
#define VIRTUAL_OSS_GET_DEV_PEAK _IOWR('O', 9, struct virtual_oss_io_peak)
#define VIRTUAL_OSS_GET_LOOP_PEAK _IOWR('O', 10, struct virtual_oss_io_peak)
struct virtual_oss_mon_peak {
int number;
int bits;
long long peak_value;
};
#define VIRTUAL_OSS_GET_INPUT_MON_PEAK _IOWR('O', 11, struct virtual_oss_mon_peak)
#define VIRTUAL_OSS_GET_OUTPUT_MON_PEAK _IOWR('O', 12, struct virtual_oss_mon_peak)
#define VIRTUAL_OSS_GET_LOCAL_MON_PEAK _IOWR('O', 45, struct virtual_oss_mon_peak)
#define VIRTUAL_OSS_ADD_INPUT_MON _IOR('O', 13, int)
#define VIRTUAL_OSS_ADD_OUTPUT_MON _IOR('O', 14, int)
#define VIRTUAL_OSS_ADD_LOCAL_MON _IOR('O', 46, int)
struct virtual_oss_compressor {
int enabled;
int knee;
#define VIRTUAL_OSS_KNEE_MAX 255
#define VIRTUAL_OSS_KNEE_MIN 0
int attack;
#define VIRTUAL_OSS_ATTACK_MAX 62
#define VIRTUAL_OSS_ATTACK_MIN 0
int decay;
#define VIRTUAL_OSS_DECAY_MAX 62
#define VIRTUAL_OSS_DECAY_MIN 0
int gain;
#define VIRTUAL_OSS_GAIN_MAX 1000
#define VIRTUAL_OSS_GAIN_MIN 0
};
#define VIRTUAL_OSS_SET_OUTPUT_LIMIT _IOW('O', 17, struct virtual_oss_compressor)
#define VIRTUAL_OSS_GET_OUTPUT_LIMIT _IOWR('O', 18, struct virtual_oss_compressor)
struct virtual_oss_io_limit {
int number;
struct virtual_oss_compressor param;
};
#define VIRTUAL_OSS_SET_DEV_LIMIT _IOW('O', 19, struct virtual_oss_io_limit)
#define VIRTUAL_OSS_GET_DEV_LIMIT _IOWR('O', 20, struct virtual_oss_io_limit)
#define VIRTUAL_OSS_SET_LOOP_LIMIT _IOW('O', 21, struct virtual_oss_io_limit)
#define VIRTUAL_OSS_GET_LOOP_LIMIT _IOWR('O', 22, struct virtual_oss_io_limit)
struct virtual_oss_master_peak {
int channel;
int bits;
long long peak_value;
};
#define VIRTUAL_OSS_GET_OUTPUT_PEAK _IOWR('O', 23, struct virtual_oss_master_peak)
#define VIRTUAL_OSS_GET_INPUT_PEAK _IOWR('O', 24, struct virtual_oss_master_peak)
#define VIRTUAL_OSS_SET_RECORDING _IOW('O', 25, int)
#define VIRTUAL_OSS_GET_RECORDING _IOR('O', 26, int)
struct virtual_oss_audio_delay_locator {
int channel_output;
int channel_input;
int channel_last;
int signal_output_level;
int signal_input_delay;
int signal_delay_hz;
int locator_enabled;
};
#define VIRTUAL_OSS_SET_AUDIO_DELAY_LOCATOR _IOW('O', 27, struct virtual_oss_audio_delay_locator)
#define VIRTUAL_OSS_GET_AUDIO_DELAY_LOCATOR _IOR('O', 28, struct virtual_oss_audio_delay_locator)
#define VIRTUAL_OSS_RST_AUDIO_DELAY_LOCATOR _IO('O', 29)
struct virtual_oss_midi_delay_locator {
int channel_output;
int channel_input;
int signal_delay;
int signal_delay_hz;
int locator_enabled;
};
#define VIRTUAL_OSS_SET_MIDI_DELAY_LOCATOR _IOW('O', 30, struct virtual_oss_midi_delay_locator)
#define VIRTUAL_OSS_GET_MIDI_DELAY_LOCATOR _IOR('O', 31, struct virtual_oss_midi_delay_locator)
#define VIRTUAL_OSS_RST_MIDI_DELAY_LOCATOR _IO('O', 32)
#define VIRTUAL_OSS_ADD_OPTIONS _IOWR('O', 33, char [VIRTUAL_OSS_OPTIONS_MAX])
struct virtual_oss_fir_filter {
int number;
int channel;
int filter_size;
double *filter_data;
};
#define VIRTUAL_OSS_GET_RX_DEV_FIR_FILTER _IOWR('O', 34, struct virtual_oss_fir_filter)
#define VIRTUAL_OSS_SET_RX_DEV_FIR_FILTER _IOWR('O', 35, struct virtual_oss_fir_filter)
#define VIRTUAL_OSS_GET_TX_DEV_FIR_FILTER _IOWR('O', 36, struct virtual_oss_fir_filter)
#define VIRTUAL_OSS_SET_TX_DEV_FIR_FILTER _IOWR('O', 37, struct virtual_oss_fir_filter)
#define VIRTUAL_OSS_GET_RX_LOOP_FIR_FILTER _IOWR('O', 38, struct virtual_oss_fir_filter)
#define VIRTUAL_OSS_SET_RX_LOOP_FIR_FILTER _IOWR('O', 39, struct virtual_oss_fir_filter)
#define VIRTUAL_OSS_GET_TX_LOOP_FIR_FILTER _IOWR('O', 40, struct virtual_oss_fir_filter)
#define VIRTUAL_OSS_SET_TX_LOOP_FIR_FILTER _IOWR('O', 41, struct virtual_oss_fir_filter)
#define VIRTUAL_OSS_GET_SAMPLE_RATE _IOR('O', 42, int)
struct virtual_oss_system_info {
unsigned tx_jitter_up;
unsigned tx_jitter_down;
unsigned sample_rate;
unsigned sample_bits;
unsigned sample_channels;
char rx_device_name[64];
char tx_device_name[64];
};
#define VIRTUAL_OSS_GET_SYSTEM_INFO _IOR('O', 43, struct virtual_oss_system_info)
#endif