/* * module_def.h * * Created on: 2025Äê7ÔÂ17ÈÕ * Author: 86189 */ #ifndef MODULE_DEF_H_ #define MODULE_DEF_H_ #include "tg_config.h" typedef struct{ unsigned short input_num; //ĬÈÏÖµ:8 struct{ unsigned short channelID; //ĬÈÏÖµ:0,1,2...8 unsigned short mute; //ĬÈÏÖµ:0 short gain; //ĬÈÏÖµ:0 short maxgain; short mingain; short phase; unsigned short phant; // »ÃÏ󹩵ç ĬÈÏÖµ:0 short sensitivity; // ÁéÃô¶È ĬÈÏÖµ:0 short name[8]; //ĬÈÏÖµ:"1","2","3"..."8" //new short type ; //ÐźÅÀàÐÍ, 0 ,ÏßÊäÈë ,1, ÕýÏÒÐźŠ£¬2£¬°×ÔëÉù£¬3 £¬·ÛºìÔëÉù¡£ short freq; short level; short link ; } input[MAX_INPUT_NUM]; } tag_input, *ptag_input; // 178 typedef struct{ unsigned short output_num; //8 struct{ unsigned short channelID; //ĬÈÏÖµ:0,1,2...8 unsigned short mute; //ĬÈÏÖµ:0 short gain; //ĬÈÏÖµ:0 short maxgain; short mingain; short phase; short sensitivity; short name[8]; //ĬÈÏÖµ:"1","2","3"..."8" short link ; unsigned short type ; }output[MAX_OUTPUT_NUM]; }tag_output,*ptag_output; typedef struct{ unsigned short input_num; //ĬÈÏÖµ:8 }tag_Meter,*ptag_Meter; typedef struct{ unsigned short bypass; //ĬÈÏÖµ:1 unsigned short nsection; //ĬÈÏÖµ:ÊäÈ벿·Ö4£¬Êä³ö²¿·Ö6 struct { unsigned short bypass; //ĬÈÏÖµ:1 unsigned short type; short freq;//ĬÈÏÖµ:0 short gain;//ĬÈÏÖµ:100 short q;//ĬÈÏÖµ:nsectionΪ£º20,120,250,500 nsectionΪ6;20,120,250,500,1000,4000 }eq_attr[MAX_EQ_SECTION]; }tag_eq,*ptag_eq; typedef struct{ unsigned short bypass; unsigned short q; unsigned short nsections; struct { short gain; }eq_attr[31]; }tag_geq,*ptag_geq; typedef struct{ unsigned short bypass;//ĬÈÏÖµ:1 unsigned short ms;//ĬÈÏÖµ:0 unsigned short us; }tag_delay,*ptag_delay; typedef struct{ unsigned short bypass;//ĬÈÏÖµ:1 unsigned short soft;//ĬÈÏÖµ:1 short gain;//ĬÈÏÖµ:0 short threshold;//ĬÈÏÖµ:-4800 unsigned short ratio;////ĬÈÏÖµ:1 unsigned short attack;//ĬÈÏÖµ:1 unsigned short release;//ĬÈÏÖµ:1 }tag_compress,*ptag_compress,tag_limit,*ptag_limit; typedef struct{ unsigned short bypass;//ĬÈÏÖµ:1 short threshold;//ĬÈÏÖµ:-4800 unsigned short ratio;//ĬÈÏÖµ:1 unsigned short attack;//ĬÈÏÖµ:1 unsigned short release;//ĬÈÏÖµ:1 }tag_expander,*ptag_expander; typedef struct{ struct{ unsigned short bypass;//ĬÈÏÖµ:1 unsigned short type;//ĬÈÏÖµ:1, 0±íʾbessel,1±íʾbutterworth£¬2±íʾlink/Riley unsigned short taps; //Â˲¨Æ÷½×Êý,//ĬÈÏÖµ:18£¬·¶Î§bessel(type-0)£º12,18,24,48£¬butterworth(type-1)£º12,18,24,48£¬link/Riley((type-2): 12,24,48 unsigned short freq;//ĬÈÏÖµ:500 short gain; }highpass,lowpass; }tag_crossover,*ptag_crossover; typedef struct{ struct{ unsigned short bypass; short gain; //-45~+15dB,default:0 unsigned short q; //0.02~50,default:0.71 unsigned short freq; //20~20000,default:for lowshelf,20.for higshelf-20000 }highshelf,lowshelf; }tag_shelf,*ptag_shelf; typedef struct{ unsigned short input_num;//ĬÈÏÖµ:8 unsigned short output_num;////ĬÈÏÖµ:8 unsigned short input_mask[MAX_MIXER_OUTPUT][(MAX_MIXER_INPUT+15)/16];//Êä³öͨµÀµÄÊäÈëÑÚÂë,//ĬÈÏÖµ,Êä³ö1¶ÔÓ¦ÊäÈë1...£¬Êä³ö8¶ÔÓ¦Êä³ö8,input_mask[0][0]=1<<0;...input_mask[7][0]=1<<7 short input_gain[MAX_MIXER_OUTPUT][MAX_MIXER_INPUT];//ĬÈÏÖµ:0 short delay[MAX_MIXER_OUTPUT][MAX_MIXER_INPUT]; //max - 100ms short pad; }tag_mixer,*ptag_mixer; typedef struct{ unsigned short input_num;//ĬÈÏÖµ:8 unsigned short output_num;////ĬÈÏÖµ:8 unsigned short input_mask[MAX_MIXER_OUTPUT][(MAX_MIXER_INPUT+15)/16]; }tag_selector,*ptag_selector; typedef struct{ short gain; short mute; }tag_gain,*ptag_gain; typedef struct{ unsigned short bypass; short panic_threshold; short fb_threshold; short bw; unsigned short flt_depth; unsigned short step; unsigned short fbc_num; struct{ unsigned short type; short fc; short gain; }flt_group[FEEDBACK_FILTERS_NUM]; }tag_feedback,*ptag_feedback; typedef struct{ unsigned short bypass; unsigned short mode; }tag_aec, *ptag_aec ,tag_ans, *ptag_ans; //??,?? typedef struct{ unsigned short bypass; unsigned short mode; short gain; }tag_afc, *ptag_afc; typedef struct{ unsigned short proc_type; unsigned short pad; short proc_ins[16]; }tag_3a,*ptag_3a; typedef struct{ unsigned short bypass; short threshold; short tar_threshold; unsigned short ratio; unsigned short attacktime; unsigned short releasetime; }tag_agc, *ptag_agc; //???? typedef struct{ unsigned short bypass; unsigned short master_mute; short master_gain; unsigned short last_on; unsigned short holdtime; short offgain; unsigned short sensitivity; unsigned short nom_atten; unsigned short nom_num; short noise_thr; short pad; struct{ unsigned short automatic; unsigned short mute; short gain; unsigned short priority; unsigned short def; }channels[AUTOMIXER_CHANNEL_NUM]; }tag_gating_mixer,*ptag_gating_mixer; typedef struct{ short bypass; short master_mute; short master_gain; short response; short slope; struct{ short automatic; short mute; short gain; short priority; }channels[AUTOMIXER_CHANNEL_NUM]; }tag_gainsharing_mixer,*ptag_gainsharing_mixer; typedef struct{ unsigned short type; //1- gainsharing automixer, 2- gating automixer unsigned short pad; union { tag_gainsharing_mixer gainsharing_mixer; tag_gating_mixer gating_mixer; }am; }tag_automixer,*ptag_automixer; typedef struct{ unsigned short bypass; short threshold; short depth; unsigned short attacktime; unsigned short holdtime; unsigned short releasetime; short side_gain; unsigned short mute; unsigned short mask[(MAX_INPUT_NUM+15)/16]; }tag_ducker,*ptag_ducker; typedef struct{ unsigned short bypass; short maxgain; short mingain; unsigned short sense_ratio; unsigned short speed; short trim; short noise_thr; short distance; unsigned short mask[(MAX_INPUT_NUM+15)/16]; }tag_spl,*ptag_spl; typedef struct{ unsigned short bypass; short threshold; short depth; unsigned short holdtime; unsigned short attacktime; unsigned short releasetime; }tag_gate,*ptag_gate; typedef struct{ short bypass; short gain; short er_gain; short reverb_gain; short rt60; short bandwidth; short input_diffusion_1; short input_diffusion_2; short decay_diffusion_1; short decay_diffusion_2; short decay; short damping; }tag_reverb,*ptag_reverb; typedef struct{ short bypass; short pre_delay; short delay; short gain; }tag_echo,*ptag_echo; typedef struct{ }tag_fir, *ptag_fir; typedef struct{ short gain; short mute; short time; }tag_sysctl,*ptag_sysctl; typedef struct{ short proc_type; short pad; char proc_ins[sizeof(tag_eq)]; }tag_module ,*ptag_module; typedef struct{ short input_group[MAX_INPUT_NUM]; short output_group[MAX_OUTPUT_NUM]; }tag_group,*ptag_group ; typedef enum{ INPUT_GAIN = 0x1, INPUT_MUTE, INPUT_SENS, INPUT_PHANT, INPUT_TYPE, INPUT_FREQ, INPUT_LEVEL, INPUT_NAME, INPUT_POL, INPUT_STEP, INPUT_LINK, INPUT_CHANNEL_LEVEL, INPUT_MIN, INPUT_MAX, }einput_cmd; typedef enum{ OUTPUT_GAIN = 0x1, OUTPUT_MUTE, OUTPUT_NAME, OUTPUT_POL, OUTPUT_SENS, OUTPUT_STEP, OUTPUT_LINK, OUTPUT_CHANNEL_LEVEL, OUTPUT_MIN, OUTPUT_MAX, OUTPUT_TYPE, }eoutput_cmd; typedef enum{ DELAY_BYPASS= 0x1, DELAY_MSEC, DELAY_USEC, }edelay_cmd; typedef enum{ EQ_BYPASS_ALL = 0x1, EQ_BYPASS, EQ_FREQ, EQ_GAIN, EQ_QVALUE, EQ_TYPE, }epeq_cmd; typedef enum{ EXPANDER_BYPASS= 0x1, EXPANDER_THRESHOLD, EXPANDER_RADIO, EXPANDER_ATTACK, EXPANDER_RELEASE, }eexpander_cmd; typedef enum{ COMPRESS_BYPASS=0x1, COMPRESS_THERSHOLD, COMPRESS_RADIO, COMPRESS_ATTACK, COMPRESS_RELEASE, COMPRESS_GAIN, }ecompressor_cmd; typedef enum{ MIXER_SWITCH=0x1, MIXER_GAIN, MIXER_DELAY, }emixer_cmd; typedef enum{ XOVER_HIGHPASS_BYPASS=0x1, XOVER_HIGHPASS_TYPE, XOVER_HIGHPASS_ORDER, XOVER_HIGHPASS_FREQ, XOVER_HIGHPASS_GAIN, XOVER_LOWPASS_BYPASS=0x11, XOVER_LOWPASS_TYPE, XOVER_LOWPASS_ORDER, XOVER_LOWPASS_FREQ, XOVER_LOWPASS_GAIN, }exover_cmd; typedef enum{ GAIN_SET=0x1, }gain_cmd; typedef enum{ SYSCTL_GAIN=0x1, SYSCTL_MUTE, }sysctl_cmd; typedef enum{ FB_BYPASS= 0x1, FB_FLT_FREQ, FB_FLT_GAIN, FB_FLT_Q, FB_FLT_TYPE, FB_STEP, FB_CLEAR, FB_PANIC, FB_FLT_DEPTH, FB_THRS, }efeedback_cmd; typedef enum{ AM_GATE_BYPASS=0x1, AM_GATE_MUTE, AM_GATE_GAIN, AM_GATE_LAST_ON, AM_GATE_HOLD_TIME, AM_GATE_OFF_GAIN, AM_GATE_SENSITIVITY, AM_GATE_NOM_ATTEN, AM_GATE_NOM_NUM, AM_GATE_CHANNEL_AUTO, AM_GATE_CHANNEL_MUTE, AM_GATE_CHANNEL_GAIN, AM_GATE_CHANNEL_PRIORITY, AM_GATE_CHANNEL_DEF, AM_GATE_NOISE_THR, }eam_gatemixer_cmd; typedef enum{ AM_MUTE=0x1, AM_GAIN, AM_SLOPE, AM_RESPONSE, AM_CHANNEL_AUTO, AM_CHANNEL_MUTE, AM_CHANNEL_GAIN, AM_CHANNEL_PRIORITY, AM_BYPASS, }eamixer_cmd; typedef enum{ GATE_BYPASS= 0x1, GATE_THRESHOLD, GATE_DEPTH, GATE_HOLDTIME, GATE_ATTACK, GATE_RELEASE, }egate_cmd; typedef enum{ DUCKER_BYPASS = 0x1, DUCKER_THRESHOLD, DUCKER_DEPTH, DUCKER_ATTACK, DUCKER_HOLD, DUCKER_RELEASE, DUCKER_SIDE_GAIN, DUCKER_SIDE_MUTE, DUCKER_MIX, }educker_cmd; typedef enum{ SPL_BYPASS =0x1, SPL_MAX_GAIN, SPL_MIN_GAIN, SPL_SENSE_RATIO, SPL_SPEED, SPL_TRIM, SPL_THR, SPL_DISTANCE, SPL_MIX, }espl_cmd; typedef enum{ HIGH_SHELF_BYPASS =0x1, HIGH_SHELF_FREQ, HIGH_SHELF_QVALUE, HIGH_SHELF_GAIN, LOW_SHELF_BYPASS=0x11, LOW_SHELF_FREQ, LOW_SHELF_QVALUE, LOW_SHELF_GAIN, }eshelf_cmd; typedef enum{ FIR_BYPASS=0x1, FIR_COEFFS, }eFir_cmd; typedef enum{ AEC_BYPASS =0x1, AEC_MODE, }eaec_cmd; typedef enum{ ANS_BYPASS =0x1, ANS_MODE, }eans_cmd; typedef enum{ AFC_BYPASS =0x1, AFC_MODE, AFC_GAIN, }eafc_cmd; typedef enum{ AGC_BYPASS = 0x1, AGC_THRESHOLD, AGC_TARGET_THRES, AGC_RATIO, AGC_ATTACKTIME, AGC_RELEASETIME, }eagc_cmd; typedef enum{ GEQ_BYPASS = 0x1, GEQ_Q, GEQ_GAIN, }egeq_cmd; typedef enum{ SYSTEM_MUTE = 0x55, }esystem_cmd; typedef struct { int pad; }tag_dummy, *ptag_dummy; #endif /* MODULE_DEF_H_ */