#define PCXHR_GRANULARITY 96 /* min 96 and multiple of 48 */ /* transfer granularity of pipes and the dsp time (MBOX4) */ #define PCXHR_GRANULARITY_MIN 96 /* TODO : granularity could be 64 or 128 */ #define PCXHR_GRANULARITY_HR22 192 /* granularity for stereo cards */
struct mutex setup_mutex; /* mutex used in hw_params, open and close */ struct mutex mixer_mutex; /* mutex for mixer */
/* hardware interface */ unsignedint dsp_loaded; /* bit flags of loaded dsp indices */ unsignedint dsp_version; /* read from embedded once firmware is loaded */ int playback_chips; int capture_chips; int fw_file_set; int firmware_num; unsignedint is_hr_stereo:1; unsignedint board_has_aes1:1; /* if 1 board has AES1 plug and SRC */ unsignedint board_has_analog:1; /* if 0 the board is digital only */ unsignedint board_has_mic:1; /* if 1 the board has microphone input */ unsignedint board_aes_in_192k:1;/* if 1 the aes input plugs do support 192kHz */ unsignedint mono_capture:1; /* if 1 the board does mono capture */ unsignedint capture_ltc:1; /* if 1 the board captures LTC input */
struct snd_dma_buffer hostport;
enum pcxhr_clock_type use_clock_type; /* clock type selected by mixer */ enum pcxhr_clock_type cur_clock_type; /* current clock type synced */ int sample_rate; int ref_count_rate; int timer_toggle; /* timer interrupt toggles between the two values 0x200 and 0x300 */ int dsp_time_last; /* the last dsp time (read by interrupt) */ int dsp_time_err; /* dsp time errors */ unsignedint src_it_dsp; /* dsp interrupt source */ unsignedint io_num_reg_cont; /* backup of IO_NUM_REG_CONT */ unsignedint codec_speed; /* speed mode of the codecs */ unsignedint sample_rate_real; /* current real sample rate */ int last_reg_stat; int async_err_stream_xrun; int async_err_pipe_xrun; int async_err_other_last;
unsignedchar xlx_cfg; /* copy of PCXHR_XLX_CFG register */ unsignedchar xlx_selmic; /* copy of PCXHR_XLX_SELMIC register */ unsignedchar dsp_reset; /* copy of PCXHR_DSP_RESET register */
};
u_int64_t timer_abs_periods; /* timer: samples elapsed since TRIGGER_START (multiple of period_size) */
u_int32_t timer_period_frag; /* timer: samples elapsed since last call to snd_pcm_period_elapsed (0..period_size) */
u_int32_t timer_buf_periods; /* nb of periods in the buffer that have already elapsed */ int timer_is_synced; /* if(0) : timer needs to be resynced with real hardware pointer */
struct pcxhr_pipe { enum pcxhr_pipe_status status; int is_capture; /* this is a capture pipe */ int first_audio; /* first audio num */
};
struct snd_pcxhr { struct snd_card *card; struct pcxhr_mgr *mgr; int chip_idx; /* zero based */
struct snd_pcm *pcm; /* PCM */
struct pcxhr_pipe playback_pipe; /* 1 stereo pipe only */ struct pcxhr_pipe capture_pipe[2]; /* 1 stereo or 2 mono pipes */
struct pcxhr_stream playback_stream[PCXHR_PLAYBACK_STREAMS]; struct pcxhr_stream capture_stream[2]; /* 1 stereo or 2 mono streams */ int nb_streams_play; int nb_streams_capt;
int analog_playback_active[2]; /* Mixer : Master Playback !mute */ int analog_playback_volume[2]; /* Mixer : Master Playback Volume */ int analog_capture_volume[2]; /* Mixer : Master Capture Volume */ int digital_playback_active[PCXHR_PLAYBACK_STREAMS][2]; int digital_playback_volume[PCXHR_PLAYBACK_STREAMS][2]; int digital_capture_volume[2]; /* Mixer : Digital Capture Volume */ int monitoring_active[2]; /* Mixer : Monitoring Active */ int monitoring_volume[2]; /* Mixer : Monitoring Volume */ int audio_capture_source; /* Mixer : Audio Capture Source */ int mic_volume; /* used by cards with MIC only */ int mic_boost; /* used by cards with MIC only */ int mic_active; /* used by cards with MIC only */ int analog_capture_active; /* used by cards with MIC only */ int phantom_power; /* used by cards with MIC only */
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.