| | |
| | | MUTE, |
| | | SENSI, |
| | | PHANTOM, |
| | | |
| | | TYPE, |
| | | |
| | | FREQ, |
| | | LEVEL, |
| | | NAME, |
| | |
| | | |
| | | for (i =0 ;i < input_num_channels; i++) { |
| | | val[0] = i; val[1] = 0; |
| | | val[2] = (pducker->mask[i/15]>>(i&15))&0x1; m->Ctrl(MIXER_SWITCH, val, 3); |
| | | val[2] = (pducker->mask[i/16]>>(i&15))&0x1; m->Ctrl(MIXER_SWITCH, val, 3); |
| | | |
| | | } |
| | | } |
| | |
| | | |
| | | for(i=0 ;i < pmixer->output_num ;i ++) { |
| | | for(j =0 ;j < pmixer->input_num ;j++) { |
| | | val[0] = j; val[1] = i; val[2] = (pmixer->input_mask[i][j/15]>>(j&15))&0x1; m->Ctrl(MIXER_SWITCH, val, 3); |
| | | // printf("oich %d %d= %x %x %x\n", i,j, val[0],val[1],val[2]); |
| | | val[0] = j; val[1] = i; val[2] = (pmixer->input_mask[i][j/16]>>(j&15))&0x1; m->Ctrl(MIXER_SWITCH, val, 3); |
| | | // dbg_printf("oich %d %d= %x %x %x\n", i,j, val[0],val[1],val[2]); |
| | | val[0] = j; val[1] = i; val[2] = RESSIGNBIT(pmixer->input_gain[i][j]); m->Ctrl(MIXER_GAIN, val, 3); |
| | | } |
| | | } |
| | |
| | | FB_FLT_TYPE, |
| | | |
| | | FB_STEP, |
| | | |
| | | FB_CLEAR, |
| | | FB_PANIC, |
| | | FB_FLT_DEPTH, |
| | |
| | | |
| | | u32 tg_param_convert::DuckerParamCtrl(IModule* m, void* handle, int &plen) |
| | | { |
| | | enum DuckerID { |
| | | DUCKER_BYPASS = 0x1, |
| | | DUCKER_THRESHOLD, |
| | | DUCKER_DEPTH, |
| | | DUCKER_ATTACK, |
| | | DUCKER_HOLD, |
| | | DUCKER_RELEASE, |
| | | DUCKER_SIDE_GAIN, |
| | | DUCKER_SIDE_MUTE, |
| | | }; |
| | | |
| | | enum MixerID { |
| | | MIXER_SWITCH = 0x1, |
| | | MIXER_GAIN, |
| | | MIXER_DELAY, |
| | | MIXER_INPUT_MUTE, |
| | | MIXER_OUTPUT_MUTE, |
| | | enum DuckerWithMixID { |
| | | DUCKER_BYPASS = 0x1, //val[0]:0-取消bypass,1-使能bypass |
| | | DUCKER_THRESHOLD,//val[0]:阈值,乘以100,范围:-6000~0 |
| | | DUCKER_DEPTH,//val[0]:深度,乘以100,范围:-7200~0 |
| | | DUCKER_ATTACK,//val[0]:建立时间,范围:1~2000ms |
| | | DUCKER_HOLD,//val[0]:保持时间,范围:1~10000ms |
| | | DUCKER_RELEASE,//val[0]:释放时间,范围:1~60000ms |
| | | DUCKER_SIDE_GAIN,//val[0]:侧链增益,乘以100,范围:-7200~1200 |
| | | DUCKER_SIDE_MUTE,//val[0]:侧链静音,0-取消静音,1-静音 |
| | | DUCKER_SIDE_MIX,//val[0]:侧链混音,0-取消混音,1-混音 |
| | | }; |
| | | |
| | | if(handle == NULL) return 1; |
| | | |
| | | int i; |
| | | u16 input_num_channels, output_num_channels; |
| | | VarState var = VarState::GetInstance(); |
| | | hw_adapter_t* adpater = var.get_hw_adapter(); |
| | | adpater->get_channel_num(&input_num_channels, &output_num_channels); |
| | | short val[4]; |
| | | ptag_ducker pducker = (ptag_ducker)handle; |
| | | ptag_ducker pduck = (ptag_ducker)handle; |
| | | plen = sizeof(tag_ducker); |
| | | |
| | | val[0] = RESSIGNBIT(pducker->bypass); m->Ctrl(DUCKER_BYPASS, val, 1); |
| | | val[0] = RESSIGNBIT(pducker->threshold); m->Ctrl(DUCKER_THRESHOLD, val, 1); |
| | | val[0] = RESSIGNBIT(pducker->depth); m->Ctrl(DUCKER_DEPTH, val, 1); |
| | | val[0] = RESSIGNBIT(pducker->attacktime); m->Ctrl(DUCKER_ATTACK, val, 1); |
| | | val[0] = RESSIGNBIT(pducker->holdtime); m->Ctrl(DUCKER_HOLD, val, 1); |
| | | val[0] = RESSIGNBIT(pducker->releasetime); m->Ctrl(DUCKER_RELEASE, val, 1); |
| | | val[0] = RESSIGNBIT(pducker->side_gain); m->Ctrl(DUCKER_SIDE_GAIN, val, 1); |
| | | val[0] = RESSIGNBIT(pducker->mute); m->Ctrl(DUCKER_SIDE_MUTE, val, 1); |
| | | val[0] = RESSIGNBIT(pduck->bypass); m->Ctrl(DUCKER_BYPASS, val, 1); |
| | | val[0] = RESSIGNBIT(pduck->threshold); m->Ctrl(DUCKER_THRESHOLD, val, 1); |
| | | val[0] = RESSIGNBIT(pduck->depth); m->Ctrl(DUCKER_DEPTH, val, 1); |
| | | val[0] = RESSIGNBIT(pduck->attacktime); m->Ctrl(DUCKER_ATTACK, val, 1); |
| | | val[0] = RESSIGNBIT(pduck->holdtime); m->Ctrl(DUCKER_HOLD, val, 1); |
| | | val[0] = RESSIGNBIT(pduck->releasetime); m->Ctrl(DUCKER_RELEASE, val, 1); |
| | | val[0] = RESSIGNBIT(pduck->side_gain); m->Ctrl(DUCKER_SIDE_GAIN, val, 1); |
| | | val[0] = RESSIGNBIT(pduck->mute); m->Ctrl(DUCKER_SIDE_MUTE, val, 1); |
| | | |
| | | for (s16 i =0 ;i < input_num_channels; i++) { |
| | | val[0] = i; |
| | | val[1] = (pduck->mask[i/16]>>(i&15))&0x1; m->Ctrl(DUCKER_SIDE_MIX, val, 2); |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | |
| | | |
| | | u32 tg_param_convert::SplParamCtrl(IModule* m, void* handle, int &plen) |
| | | { |
| | | enum ContinousSPLID { |
| | | SPL_BYPASS = 0x1, |
| | | enum ContSplWithMixID { |
| | | SPLMIX_BYPASS = 0x1, //val[0]:0-取消bypass,1-bypass |
| | | SPL_MAX_GAIN, |
| | | SPL_MIN_GAIN, |
| | | SPL_SENSE_RATIO, |
| | | SPL_UPSPEED, |
| | | SPL_DOWNSPEED, |
| | | SPL_SPEED, |
| | | SPL_TRIM, |
| | | SPL_THR, |
| | | SPL_DISTANCE, |
| | | }; |
| | | |
| | | enum MixerID { |
| | | MIXER_SWITCH = 0x1, |
| | | MIXER_GAIN, |
| | | MIXER_DELAY, |
| | | MIXER_INPUT_MUTE, |
| | | MIXER_OUTPUT_MUTE, |
| | | SPL_MIX, |
| | | }; |
| | | |
| | | if(handle == NULL) return 1; |
| | |
| | | u16 input_num_channels, output_num_channels ; |
| | | VarState var = VarState::GetInstance(); |
| | | hw_adapter_t* adpater = var.get_hw_adapter(); |
| | | |
| | | adpater->get_channel_num(&input_num_channels, &output_num_channels); |
| | | |
| | | int i ,j; |
| | |
| | | val[0] = RESSIGNBIT(pspl->maxgain); m->Ctrl(SPL_MAX_GAIN, val, 1); |
| | | val[0] = RESSIGNBIT(pspl->mingain); m->Ctrl(SPL_MIN_GAIN, val, 1); |
| | | val[0] = RESSIGNBIT(pspl->sense_ratio); m->Ctrl(SPL_SENSE_RATIO, val, 1); |
| | | val[0] = RESSIGNBIT(pspl->speed); m->Ctrl(SPL_UPSPEED, val, 1); |
| | | val[0] = RESSIGNBIT(pspl->speed); m->Ctrl(SPL_DOWNSPEED, val, 1); |
| | | val[0] = RESSIGNBIT(pspl->speed); m->Ctrl(SPL_SPEED, val, 1); |
| | | val[0] = RESSIGNBIT(pspl->trim); m->Ctrl(SPL_TRIM, val, 1); |
| | | val[0] = RESSIGNBIT(pspl->noise_thr); m->Ctrl(SPL_THR, val, 1); |
| | | val[0] = RESSIGNBIT(pspl->distance); m->Ctrl(SPL_DISTANCE, val, 1); |
| | | |
| | | for (i =0 ;i < input_num_channels; i++) { |
| | | val[0] = i; val[1] = 0; |
| | | val[2] = (pspl->mask[i/15]>>(i&15))&0x1 ; m->Ctrl(MIXER_SWITCH, val, 3); |
| | | val[0] = i; |
| | | val[1] = (pspl->mask[i/16]>>(i&15))&0x1 ; m->Ctrl(SPL_MIX, val, 2); |
| | | } |
| | | |
| | | return 0; |
| | |
| | | |
| | | 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; |