| | |
| | | typedef struct{ |
| | | unsigned short output_num; //8 |
| | | struct{ |
| | | unsigned short channelID; //默认值:0,1,2...8 |
| | | unsigned short mute; //默认值:0 |
| | | unsigned short channelID; //默认值:0,1,2...8 |
| | | unsigned short mute; //默认值:0 |
| | | |
| | | short gain; //默认值:0 |
| | | |
| | |
| | | short phase; |
| | | |
| | | short sensitivity; |
| | | short name[8]; //默认值:"1","2","3"..."8" |
| | | short name[8]; //默认值:"1","2","3"..."8" |
| | | short link ; |
| | | unsigned short type ; |
| | | unsigned short type; |
| | | }output[MAX_OUTPUT_NUM]; |
| | | }tag_output,*ptag_output; |
| | | |
| | |
| | | |
| | | typedef struct{ |
| | | unsigned short bypass; |
| | | unsigned short q; |
| | | unsigned short q_index; |
| | | unsigned short nsections; |
| | | struct { |
| | | short gain; |
| | |
| | | |
| | | u32 tg_param_convert::GeqParamCtrl(IModule* m, void* handle, int &plen) |
| | | { |
| | | const s16 fc_10[]={31, 63, 125, 250, 500, 1000, 2000, 4000, 8000, 16000 }; |
| | | const s16 fc_15[]={25, 40, 63, 100, 160, 250, 400, 630, 1000, 1600, 2500, 4000, 6300, 10000, 16000}; |
| | | const s16 fc_31[]={20, 25,31, 40, 50, 63, 80, 100, 125, 160, 200,250, 315, 400, 500, 630, 800, 1000, 1250, 1600,2000,2500, 3150, 4000, 5000, 6300, 8000, 10000,12500, 16000,20000}; |
| | | |
| | | enum EQID{ |
| | | EQ_BYPASS_ALL = 0x1, |
| | | EQ_BYPASS, |
| | | EQ_FREQ, |
| | | EQ_GAIN, |
| | | EQ_QVALUE, |
| | | EQ_TYPE, |
| | | enum GEQID{ |
| | | GEQ_BYPASS_ALL = 0x1,//val[0]: 0-取消bypass, 1- 使能bypass |
| | | GEQ_QVALUE,//val[0]: 1-narrow, 2-normal, 3-wide |
| | | GEQ_GAIN,//val[0]: 段序号,val[1] : 增益,乘以100,范围:-4800~2400 |
| | | GEQ_CLEAR,//val[0]: 复位EQ参数 |
| | | }; |
| | | |
| | | if(handle == NULL) return 1; |
| | | |
| | | int i; |
| | | short val[4]; |
| | | ptag_geq pgeq = (ptag_geq)handle ; |
| | | ptag_geq geq = (ptag_geq)handle; |
| | | plen = sizeof(tag_geq); |
| | | const s16 *pfc = fc_31; |
| | | |
| | | switch(pgeq->nsections){ |
| | | case 10: |
| | | pfc = fc_10; |
| | | break; |
| | | case 15: |
| | | pfc = fc_15; |
| | | break; |
| | | default: |
| | | pfc = fc_31; |
| | | break; |
| | | } |
| | | val[0] = geq->bypass; m->Ctrl(EQ_BYPASS_ALL, val, 1); |
| | | val[0] = geq->q_index; m->Ctrl(GEQ_QVALUE, val, 1); |
| | | |
| | | val[0] = pgeq->bypass; m->Ctrl(EQ_BYPASS_ALL, val, 1); |
| | | val[0] = pgeq->q; m->Ctrl(EQ_QVALUE, val, 1); |
| | | |
| | | for(i=0 ;i < pgeq->nsections ;i++) { |
| | | val[0] = i; val[1] = RESSIGNBIT(pgeq->eq_attr[i].gain); m->Ctrl(EQ_GAIN, val, 2); |
| | | val[0] = i; val[1] = pfc[i]; m->Ctrl(EQ_FREQ, val, 2); |
| | | for(i=0 ;i < geq->nsections ;i++) { |
| | | val[0] = i; val[1] = RESSIGNBIT(geq->eq_attr[i].gain); m->Ctrl(GEQ_GAIN, val, 2); |
| | | } |
| | | |
| | | return 0; |
| | |
| | | int j; |
| | | ptag_geq pGEQ = (ptag_geq)param_ptr; |
| | | pGEQ->bypass = allbypass; |
| | | pGEQ->q = 2; |
| | | pGEQ->q_index = 2; |
| | | pGEQ->nsections = 31; |
| | | for(j=0;j<31;j++){ |
| | | pGEQ->eq_attr[j].gain = 0; |
| | |
| | | |
| | | u32 tg_param_ctrl::Geq_Ctrl(IModule* m, u32 pID, s16* val_c, u32 num) |
| | | { |
| | | enum EQID{ |
| | | EQ_BYPASS_ALL = 0x1, |
| | | EQ_BYPASS, |
| | | EQ_FREQ, |
| | | EQ_GAIN, |
| | | EQ_QVALUE, |
| | | EQ_TYPE, |
| | | enum GEQID{ |
| | | GEQ_BYPASS_ALL = 0x1,//val[0]: 0-取消bypass, 1- 使能bypass |
| | | GEQ_QVALUE,//val[0]: 1-narrow, 2-normal, 3-wide |
| | | GEQ_GAIN,//val[0]: 段序号,val[1] : 增益,乘以100,范围:-4800~2400 |
| | | GEQ_CLEAR,//val[0]: 复位EQ参数 |
| | | }; |
| | | |
| | | short val[4]; |
| | | short cmd[8] = {0,EQ_BYPASS_ALL, EQ_QVALUE, EQ_GAIN}; |
| | | short cmd[8] = {0, GEQ_BYPASS_ALL, GEQ_QVALUE, GEQ_GAIN, GEQ_CLEAR}; |
| | | |
| | | val[0] = RESSIGNBIT(val_c[0]); |
| | | val[1] = RESSIGNBIT(val_c[1]); |