chenlh
2025-10-09 e0f29d5815a7dd4d45733ce1d661f1df263913d4
第一轮测试OK版提交
已修改14个文件
310 ■■■■■ 文件已修改
.cproject 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
drv/FIR_acc.c 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inc/ModuleProAPI.h 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lib/ModuleProcLibs.dlb 补丁 | 查看 | 原始文档 | blame | 历史
src/ModuleExport.cpp 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.cpp 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/messageproc.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/scene.cpp 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tg/tg_adapter.cpp 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tg/tg_param_convert.cpp 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tg/tg_scene.cpp 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tg/tg_user_ctrl.cpp 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tg/tg_user_ctrl.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tob.cpp 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.cproject
@@ -30,8 +30,8 @@
                                <inputType id="assembler.input.1304626576" name="Assembler Source" superClass="assembler.input"/>
                            </tool>
                            <tool id="sharc.toolchain.compiler.913943905" name="CrossCore SHARC C/C++ Compiler" superClass="sharc.toolchain.compiler">
                                <option id="compiler.option.optimization.556394403" name="Enable optimization (-O)" superClass="compiler.option.optimization" useByScannerDiscovery="false" value="false" valueType="boolean"/>
                                <option id="compiler.option.debugcode.900335004" name="Generate debug information (-g)" superClass="compiler.option.debugcode" useByScannerDiscovery="false" value="true" valueType="boolean"/>
                                <option id="compiler.option.optimization.556394403" name="Enable optimization (-O)" superClass="compiler.option.optimization" useByScannerDiscovery="false" value="true" valueType="boolean"/>
                                <option id="compiler.option.debugcode.900335004" name="Generate debug information (-g)" superClass="compiler.option.debugcode" useByScannerDiscovery="false" value="false" valueType="boolean"/>
                                <option id="compiler.option.proc.775463007" name="-proc" superClass="compiler.option.proc" useByScannerDiscovery="false" value=" ADSP-21569" valueType="string"/>
                                <option id="compiler.option.sirevision.375383135" name="-si-revision" superClass="compiler.option.sirevision" useByScannerDiscovery="false" value=" 0.0" valueType="string"/>
                                <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="compiler.option.preprocessdefs.200157960" name="Preprocessor definitions (-D):" superClass="compiler.option.preprocessdefs" useByScannerDiscovery="false" valueType="definedSymbols">
@@ -45,7 +45,7 @@
                                </option>
                                <option id="compiler.option.compilerswitch.182237227" name="Compiler Switch" superClass="compiler.option.compilerswitch" useByScannerDiscovery="false" value="false" valueType="boolean"/>
                                <option id="compiler.option.cpp11.976576354" name="Compile C++ source files with C++11 feature extensions (-c++11)" superClass="compiler.option.cpp11" useByScannerDiscovery="false" value="true" valueType="boolean"/>
                                <option id="compiler.option.interprocdoptim.1504058608" name="Interprocedural optimization (-ipa)" superClass="compiler.option.interprocdoptim" useByScannerDiscovery="false" value="false" valueType="boolean"/>
                                <option id="compiler.option.interprocdoptim.1504058608" name="Interprocedural optimization (-ipa)" superClass="compiler.option.interprocdoptim" useByScannerDiscovery="false" value="true" valueType="boolean"/>
                                <inputType id="compiler.inputType.1651873364" name="C/C++ Source" superClass="compiler.inputType"/>
                            </tool>
                            <tool id="sharc.toolchain.linker.1433934460" name="CrossCore SHARC Linker" superClass="sharc.toolchain.linker">
@@ -102,12 +102,80 @@
                            <tool id="sharc.toolchain.deviceprogrammer.630556623" name="CrossCore SHARC Device Programmer" superClass="sharc.toolchain.deviceprogrammer.185366862"/>
                        </toolChain>
                    </folderInfo>
                    <fileInfo id="sharc.toolchain.configuration.debug.986561216.985913406" name="frames.cpp" rcbsApplicability="disable" resourcePath="src/frames.cpp" toolsToInvoke="sharc.toolchain.compiler.913943905.950550964">
                        <tool id="sharc.toolchain.compiler.913943905.950550964" name="CrossCore SHARC C/C++ Compiler" superClass="sharc.toolchain.compiler.913943905">
                            <option id="compiler.option.optimization.1980437294" name="Enable optimization (-O)" superClass="compiler.option.optimization" useByScannerDiscovery="false" value="true" valueType="boolean"/>
                            <option id="compiler.option.interprocdoptim.611728753" name="Interprocedural optimization (-ipa)" superClass="compiler.option.interprocdoptim" useByScannerDiscovery="false" value="true" valueType="boolean"/>
                            <option id="compiler.option.debugcode.1138950828" name="Generate debug information (-g)" superClass="compiler.option.debugcode" useByScannerDiscovery="false" value="false" valueType="boolean"/>
                            <inputType id="compiler.inputType.687677118" name="C/C++ Source" superClass="compiler.inputType"/>
                        </tool>
                    </fileInfo>
                    <fileInfo id="sharc.toolchain.configuration.debug.986561216.1691965581" name="scene.cpp" rcbsApplicability="disable" resourcePath="src/scene.cpp" toolsToInvoke="sharc.toolchain.compiler.913943905.1234586496">
                        <tool id="sharc.toolchain.compiler.913943905.1234586496" name="CrossCore SHARC C/C++ Compiler" superClass="sharc.toolchain.compiler.913943905">
                            <option id="compiler.option.optimization.410348796" name="Enable optimization (-O)" superClass="compiler.option.optimization" useByScannerDiscovery="false" value="true" valueType="boolean"/>
                            <option id="compiler.option.interprocdoptim.1690047913" name="Interprocedural optimization (-ipa)" superClass="compiler.option.interprocdoptim" useByScannerDiscovery="false" value="true" valueType="boolean"/>
                            <option id="compiler.option.debugcode.490184311" name="Generate debug information (-g)" superClass="compiler.option.debugcode" useByScannerDiscovery="false" value="false" valueType="boolean"/>
                            <inputType id="compiler.inputType.85154209" name="C/C++ Source" superClass="compiler.inputType"/>
                        </tool>
                    </fileInfo>
                    <fileInfo id="sharc.toolchain.configuration.debug.986561216.534564055" name="main.cpp" rcbsApplicability="disable" resourcePath="src/main.cpp" toolsToInvoke="sharc.toolchain.compiler.913943905.763200458">
                        <tool id="sharc.toolchain.compiler.913943905.763200458" name="CrossCore SHARC C/C++ Compiler" superClass="sharc.toolchain.compiler.913943905">
                            <option id="compiler.option.debugcode.949526148" name="Generate debug information (-g)" superClass="compiler.option.debugcode" useByScannerDiscovery="false" value="false" valueType="boolean"/>
                            <option id="compiler.option.optimization.1191857628" name="Enable optimization (-O)" superClass="compiler.option.optimization" useByScannerDiscovery="false" value="true" valueType="boolean"/>
                            <inputType id="compiler.inputType.867448223" name="C/C++ Source" superClass="compiler.inputType"/>
                        </tool>
                    </fileInfo>
                    <fileInfo id="sharc.toolchain.configuration.debug.986561216.1691181675" name="tg_user_ctrl.cpp" rcbsApplicability="disable" resourcePath="src/tg/tg_user_ctrl.cpp" toolsToInvoke="sharc.toolchain.compiler.913943905.1114977386">
                        <tool id="sharc.toolchain.compiler.913943905.1114977386" name="CrossCore SHARC C/C++ Compiler" superClass="sharc.toolchain.compiler.913943905">
                            <option id="compiler.option.debugcode.991518921" name="Generate debug information (-g)" superClass="compiler.option.debugcode" useByScannerDiscovery="false" value="false" valueType="boolean"/>
                            <option id="compiler.option.optimization.1075741573" name="Enable optimization (-O)" superClass="compiler.option.optimization" useByScannerDiscovery="false" value="true" valueType="boolean"/>
                            <inputType id="compiler.inputType.1527595622" name="C/C++ Source" superClass="compiler.inputType"/>
                        </tool>
                    </fileInfo>
                    <fileInfo id="sharc.toolchain.configuration.debug.986561216.1405857650" name="tg_scene.cpp" rcbsApplicability="disable" resourcePath="src/tg/tg_scene.cpp" toolsToInvoke="sharc.toolchain.compiler.913943905.113949997">
                        <tool id="sharc.toolchain.compiler.913943905.113949997" name="CrossCore SHARC C/C++ Compiler" superClass="sharc.toolchain.compiler.913943905">
                            <option id="compiler.option.debugcode.661630120" name="Generate debug information (-g)" superClass="compiler.option.debugcode" useByScannerDiscovery="false" value="false" valueType="boolean"/>
                            <option id="compiler.option.optimization.736282020" name="Enable optimization (-O)" superClass="compiler.option.optimization" useByScannerDiscovery="false" value="true" valueType="boolean"/>
                            <inputType id="compiler.inputType.1287708546" name="C/C++ Source" superClass="compiler.inputType"/>
                        </tool>
                    </fileInfo>
                    <fileInfo id="sharc.toolchain.configuration.debug.986561216.114413652" name="tg_param_convert.cpp" rcbsApplicability="disable" resourcePath="src/tg/tg_param_convert.cpp" toolsToInvoke="sharc.toolchain.compiler.913943905.1973590061">
                        <tool id="sharc.toolchain.compiler.913943905.1973590061" name="CrossCore SHARC C/C++ Compiler" superClass="sharc.toolchain.compiler.913943905">
                            <option id="compiler.option.debugcode.1559779574" name="Generate debug information (-g)" superClass="compiler.option.debugcode" useByScannerDiscovery="false" value="false" valueType="boolean"/>
                            <option id="compiler.option.optimization.49705725" name="Enable optimization (-O)" superClass="compiler.option.optimization" useByScannerDiscovery="false" value="true" valueType="boolean"/>
                            <inputType id="compiler.inputType.168258965" name="C/C++ Source" superClass="compiler.inputType"/>
                        </tool>
                    </fileInfo>
                    <fileInfo id="sharc.toolchain.configuration.debug.986561216.776821550" name="tob.cpp" rcbsApplicability="disable" resourcePath="src/tob.cpp" toolsToInvoke="sharc.toolchain.compiler.913943905.1208184272">
                        <tool id="sharc.toolchain.compiler.913943905.1208184272" name="CrossCore SHARC C/C++ Compiler" superClass="sharc.toolchain.compiler.913943905">
                            <option id="compiler.option.debugcode.1852700867" name="Generate debug information (-g)" superClass="compiler.option.debugcode" useByScannerDiscovery="false" value="true" valueType="boolean"/>
                            <option id="compiler.option.optimization.1367621719" name="Enable optimization (-O)" superClass="compiler.option.optimization" useByScannerDiscovery="false" value="false" valueType="boolean"/>
                            <option id="compiler.option.debugcode.1852700867" name="Generate debug information (-g)" superClass="compiler.option.debugcode" useByScannerDiscovery="false" value="false" valueType="boolean"/>
                            <option id="compiler.option.optimization.1367621719" name="Enable optimization (-O)" superClass="compiler.option.optimization" useByScannerDiscovery="false" value="true" valueType="boolean"/>
                            <option id="compiler.option.interprocdoptim.1519443625" name="Interprocedural optimization (-ipa)" superClass="compiler.option.interprocdoptim" useByScannerDiscovery="false" value="true" valueType="boolean"/>
                            <inputType id="compiler.inputType.1256387287" name="C/C++ Source" superClass="compiler.inputType"/>
                        </tool>
                    </fileInfo>
                    <fileInfo id="sharc.toolchain.configuration.debug.986561216.16834260" name="messageproc.cpp" rcbsApplicability="disable" resourcePath="src/messageproc.cpp" toolsToInvoke="sharc.toolchain.compiler.913943905.1594903641">
                        <tool id="sharc.toolchain.compiler.913943905.1594903641" name="CrossCore SHARC C/C++ Compiler" superClass="sharc.toolchain.compiler.913943905">
                            <option id="compiler.option.optimization.1587905573" name="Enable optimization (-O)" superClass="compiler.option.optimization" useByScannerDiscovery="false" value="true" valueType="boolean"/>
                            <option id="compiler.option.interprocdoptim.1994466859" name="Interprocedural optimization (-ipa)" superClass="compiler.option.interprocdoptim" useByScannerDiscovery="false" value="true" valueType="boolean"/>
                            <option id="compiler.option.debugcode.1592451212" name="Generate debug information (-g)" superClass="compiler.option.debugcode" useByScannerDiscovery="false" value="false" valueType="boolean"/>
                            <inputType id="compiler.inputType.1011213956" name="C/C++ Source" superClass="compiler.inputType"/>
                        </tool>
                    </fileInfo>
                    <fileInfo id="sharc.toolchain.configuration.debug.986561216.1616289192" name="dsp_report.cpp" rcbsApplicability="disable" resourcePath="src/dsp_report.cpp" toolsToInvoke="sharc.toolchain.compiler.913943905.1246190550">
                        <tool id="sharc.toolchain.compiler.913943905.1246190550" name="CrossCore SHARC C/C++ Compiler" superClass="sharc.toolchain.compiler.913943905">
                            <option id="compiler.option.optimization.1678551806" name="Enable optimization (-O)" superClass="compiler.option.optimization" useByScannerDiscovery="false" value="true" valueType="boolean"/>
                            <option id="compiler.option.interprocdoptim.1566787524" name="Interprocedural optimization (-ipa)" superClass="compiler.option.interprocdoptim" useByScannerDiscovery="false" value="true" valueType="boolean"/>
                            <option id="compiler.option.debugcode.823940128" name="Generate debug information (-g)" superClass="compiler.option.debugcode" useByScannerDiscovery="false" value="false" valueType="boolean"/>
                            <inputType id="compiler.inputType.2000351035" name="C/C++ Source" superClass="compiler.inputType"/>
                        </tool>
                    </fileInfo>
                    <fileInfo id="sharc.toolchain.configuration.debug.986561216.1607308522" name="ModuleExport.cpp" rcbsApplicability="disable" resourcePath="src/ModuleExport.cpp" toolsToInvoke="sharc.toolchain.compiler.913943905.837808415">
                        <tool id="sharc.toolchain.compiler.913943905.837808415" name="CrossCore SHARC C/C++ Compiler" superClass="sharc.toolchain.compiler.913943905">
                            <option id="compiler.option.optimization.1154201452" name="Enable optimization (-O)" superClass="compiler.option.optimization" useByScannerDiscovery="false" value="true" valueType="boolean"/>
                            <option id="compiler.option.interprocdoptim.639477731" name="Interprocedural optimization (-ipa)" superClass="compiler.option.interprocdoptim" useByScannerDiscovery="false" value="true" valueType="boolean"/>
                            <option id="compiler.option.debugcode.614342811" name="Generate debug information (-g)" superClass="compiler.option.debugcode" useByScannerDiscovery="false" value="false" valueType="boolean"/>
                            <inputType id="compiler.inputType.1357284043" name="C/C++ Source" superClass="compiler.inputType"/>
                        </tool>
                    </fileInfo>
                    <fileInfo id="sharc.toolchain.configuration.debug.986561216.961651879" name="f2f.c" rcbsApplicability="disable" resourcePath="src/f2f.c" toolsToInvoke="sharc.toolchain.compiler.913943905.255253029">
@@ -118,6 +186,14 @@
                            <inputType id="compiler.inputType.142353510" name="C/C++ Source" superClass="compiler.inputType"/>
                        </tool>
                    </fileInfo>
                    <fileInfo id="sharc.toolchain.configuration.debug.986561216.2082366073" name="FIR_acc.c" rcbsApplicability="disable" resourcePath="drv/FIR_acc.c" toolsToInvoke="sharc.toolchain.compiler.913943905.1500758045">
                        <tool id="sharc.toolchain.compiler.913943905.1500758045" name="CrossCore SHARC C/C++ Compiler" superClass="sharc.toolchain.compiler.913943905">
                            <option id="compiler.option.optimization.507494327" name="Enable optimization (-O)" superClass="compiler.option.optimization" useByScannerDiscovery="false" value="true" valueType="boolean"/>
                            <option id="compiler.option.interprocdoptim.615814182" name="Interprocedural optimization (-ipa)" superClass="compiler.option.interprocdoptim" useByScannerDiscovery="false" value="true" valueType="boolean"/>
                            <option id="compiler.option.debugcode.389728662" name="Generate debug information (-g)" superClass="compiler.option.debugcode" useByScannerDiscovery="false" value="false" valueType="boolean"/>
                            <inputType id="compiler.inputType.1521254096" name="C/C++ Source" superClass="compiler.inputType"/>
                        </tool>
                    </fileInfo>
                    <sourceEntries>
                        <entry excluding="system|src" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
                        <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
drv/FIR_acc.c
@@ -58,13 +58,20 @@
        firHead.status = acc_completely;
        firHead.count++;
    }
    if(firHead.status == acc_completely) {
        for(struct FIR_tcb* fir = firHead.first; fir != NULL ; fir = fir->next) {
            if(fir->callback) fir->callback(fir->content);
        }
        firHead.status = acc_idle;
    }
}
uvoid fir_acc_init()
{
    firHead.count =0;
    firHead.num =0 ;
    firHead.status = acc_completely ;
    firHead.status = acc_idle  ;
    firHead.first = NULL;
    firHead.last = NULL;
@@ -77,9 +84,9 @@
{
    s32 restarting = 0;
    if(firHead.status == acc_completely && firHead.num > 0) {
    if(firHead.status == acc_idle  && firHead.num > 0) {
        for(struct FIR_tcb* fir = firHead.first; fir != NULL ; fir = fir->next) {
            if(fir->callback) fir->callback(fir->content);
            if(fir->cp_update) {
                memcpy((uvoid*)fir->cf_buff, fir->cf_temp , fir->tap*sizeof(ufloat));
                fir->cp_update = ufalse;
@@ -199,7 +206,7 @@
        firHead.last->next = fir;
        firHead.last = fir ;
    }
    //fir->tcb[0] =  ((s32)(firHead.first->tcb+12)>>2)|MP_OFFSET;
    firHead.num ++;
    return fir;
inc/ModuleProAPI.h
@@ -30,6 +30,7 @@
__MODULE_EXPORT IModule* DEQCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* DeReverbCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* DuckerCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* DuckerWithMixCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* EchoCreate(u32 n, ubool linkEnable ,  u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* ReverbCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* EQsCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
@@ -41,6 +42,7 @@
__MODULE_EXPORT IModule* NHSCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* SignalGeneraterCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* ContinuousSPLCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* ContSplWithMixCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* DummyCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* SignalSourceCreate(u32 n, ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
__MODULE_EXPORT IModule* InputCreate(u32 n,ubool linkEnable , u32 sampleRate, u32 sampleNum, u16 inputNum, u16 outputNum);
lib/ModuleProcLibs.dlb
Binary files differ
src/ModuleExport.cpp
@@ -32,9 +32,9 @@
        modules.push_back(ModuleEntry("Gain",ModuleType::PROC_GAIN, GainCreate, utrue));
        modules.push_back(ModuleEntry("GainSharingmixer",ModuleType::PROC_AUTOMIXER, GSAMCreate, ufalse));
        modules.push_back(ModuleEntry("GatingMixer",ModuleType::PROC_GATING_AUTOMIXER, GatingAMCreate, ufalse));
        modules.push_back(ModuleEntry("SPL",ModuleType::PROC_CONTINUNOUS_SPL, ContinuousSPLCreate, utrue));
        modules.push_back(ModuleEntry("SPL",ModuleType::PROC_CONTINUNOUS_SPL, ContSplWithMixCreate, ufalse));
        //modules.push_back(ModuleEntry(ModuleType::GapSPL, InputCreate, 0.00));
        modules.push_back(ModuleEntry("Ducker",ModuleType::PROC_DUCKER, DuckerCreate, utrue));
        modules.push_back(ModuleEntry("Ducker",ModuleType::PROC_DUCKER, DuckerWithMixCreate, ufalse));
        modules.push_back(ModuleEntry("AGC",ModuleType::PROC_AGC, AGCCreate, utrue));
        modules.push_back(ModuleEntry("SELECTOR",ModuleType::PROC_SELECTOR, MixerCreate, ufalse));
        modules.push_back(ModuleEntry("SignalGenerator",ModuleType::PROC_SIGNALGEN, SignalGeneraterCreate, utrue));
src/main.cpp
@@ -67,6 +67,9 @@
    }
    if(tob == NULL) return ;
    if (iid == 53)
        int ii = 0;
    if(var.TopoLoading){
        MuteOutput();
    }
src/messageproc.h
@@ -37,7 +37,7 @@
    Message(u32 num)
    {
        txQueue = new Queue<MSG>(num);
        Levels = new s16[1000];
        Levels = new s16[1688];
    }
    ~Message()
    {
src/scene.cpp
@@ -81,25 +81,9 @@
            continue;
        }
        //ducker & spl.
        //ducker & spl with mix.
        if(p->proc_type == PROC_DUCKER || p->proc_type == PROC_CONTINUNOUS_SPL) {
            //insert a mixer.
            struct Module *mixer  = (struct Module *)(bin + size);
            u16 channelID[64];
            mixer->mDsp = 0;
            mixer->mID = p->proc_id + 320;
            mixer->mType = ModuleType::PROC_MIXER;
            mixer->mTag = 0;
            mixer->mPhyModule = 0;
            mixer->mParamaddr = (s32)get_module_param_ptr(mixer->mType, p->parameters, p->fixed);
            size += sizeof(struct Module);
            mixer->mRxNum = str_delim(proc_list[1].inportstr, channelID) ;
            memcpy(bin + size , channelID, mixer->mRxNum*sizeof(u16)); size += mixer->mRxNum*sizeof(u16);
            mixer->mTxNum = 1;
            memcpy(bin + size , &rxBufID[1], mixer->mTxNum*sizeof(u16)); size += mixer->mTxNum*sizeof(u16);
            ninports = str_delim(proc_list[1].inportstr, &rxBufID[1]) + 1;    // rxBufID[0] is the dataIn Frame, rxBufID[1]~rxBufID[inportstr] is the mix channel.
        }
        if(hw_adapter->get_system_is_dual_dsp()){
            dsp_index = p->dsp_index ;
@@ -107,7 +91,6 @@
        else {
            dsp_index = 0;
        }
        m  = (struct Module *)(bin + size);
        for(j = 0 ; j< ninports ;j ++) {
src/tg/tg_adapter.cpp
@@ -38,7 +38,7 @@
    }
}
//物理buffer定义顺序是16通道模拟+2通道USB+32通道Dante.
uvoid tg_hw_adapter_t::config_board(struct DSPConfig * conf)
{
    u32 i;
@@ -73,7 +73,7 @@
    conf->sports[0].interrupt = utrue;
    conf->sports[0].rx = utrue;
    //pcg
    //pcg 产生时钟
    conf->pcgs[0].enable = utrue;
    conf->pcgs[0].opmode = 1;
    conf->pcgs[0].width = 2;
src/tg/tg_param_convert.cpp
@@ -300,7 +300,7 @@
        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);
        }
    }
@@ -312,7 +312,7 @@
        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);
                val[0] = j;  val[1] = i; val[2] = (pmixer->input_mask[i][j/16]>>(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] = RESSIGNBIT(pmixer->input_gain[i][j]);  m->Ctrl(MIXER_GAIN, val, 3);
            }
@@ -382,7 +382,6 @@
        FB_FLT_TYPE,
        FB_STEP,
        FB_CLEAR,
        FB_PANIC,
        FB_FLT_DEPTH,
@@ -621,40 +620,41 @@
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;
}
@@ -688,24 +688,16 @@
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;
@@ -713,7 +705,6 @@
    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;
@@ -725,15 +716,14 @@
    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;
src/tg/tg_scene.cpp
@@ -164,9 +164,9 @@
    sprintf(outport_str, "1-%d", output_num);
    __MADD(295,PROC_OUTPUT,outport_str,outport_str,1, 1, &parameters.output,0, ModuleInterfaceType::SOFT_MODULE);
    //sysctrl
    __MADD(296,PROC_SYSCTL,outport_str,outport_str,1, 1, &parameters.sysctl,0, ModuleInterfaceType::PHY_OUTPUT);
    __MADD(296,PROC_SYSCTL,outport_str,outport_str,1, 1, &parameters.sysctl,0, ModuleInterfaceType::SOFT_MODULE);
    //meter
    __MADD(297,PROC_METER,outport_str,"",1, 1, NULL, 0, ModuleInterfaceType::SOFT_MODULE);
    __MADD(297,PROC_METER,outport_str,outport_str,1, 1, NULL, 0, ModuleInterfaceType::PHY_OUTPUT);
};
@@ -190,7 +190,7 @@
                pInput->input[j].gain =0;
                pInput->input[j].mute = 0;
                pInput->input[j].type=0;
                pInput->input[j].phase =0 ;
                pInput->input[j].phase =0;
                pInput->input[j].mingain = -8000;
                pInput->input[j].maxgain = 1200;
            }
src/tg/tg_user_ctrl.cpp
@@ -178,23 +178,6 @@
u32 tg_param_ctrl::Feedback_Ctrl(IModule* m, u32 pID, s16* val_c, u32 num)
{
//    enum NHSID{
//        FB_BYPASS = 0x1,
//        FB_PANIC,
//        FB_THRS,
//        FB_FLT_DEPTH,
//        FB_STEP,
//        FB_FLT_Q,
//        FB_RECYCLETIME,
//
//        FB_FLT_FREQ,
//        FB_FLT_GAIN,
//        FB_FLT_TYPE,
//
//        FB_CLEAR,
//        FB_CLEAR_DYNAMIC,
//    };
    enum NHSID{
        FB_BYPASS= 0x1,
        FB_FLT_FREQ,
@@ -375,7 +358,58 @@
    return 0;
}
u32 tg_param_ctrl::Spl_Ctrl(IModule* m, u32 pID, s16* val_c, u32 num)
{
    enum ContinousSPLID {
        SPL_BYPASS = 0x1,
        SPL_MAX_GAIN,
        SPL_MIN_GAIN,
        SPL_SENSE_RATIO = 4,
        SPL_UPSPEED = 5,
        SPL_DOWNSPEED,
        SPL_TRIM,
        SPL_THR,
        SPL_DISTANCE,
    };
    enum ContSplWithMixID {
        SPLMIX_BYPASS = 0x1, //val[0]:0-取消bypass,1-bypass
        SPLMIX_MAX_GAIN,
        SPLMIX_MIN_GAIN,
        SPLMIX_SENSE_RATIO,
        SPLMIX_SPEED = 5,
        SPLMIX_TRIM,
        SPLMIX_THR,
        SPLMIX_DISTANCE,
        SPLMIX_MIX,
    };
    s16 val[4];
    val[0] = RESSIGNBIT(val_c[0]), val[0] = RESSIGNBIT(val_c[1]);
    if (pID < 5) {
        General_Ctrl(m, pID, val_c, num);
    }
    else {
        switch (pID) {
            case ContSplWithMixID::SPLMIX_SPEED:
                m->Ctrl(ContinousSPLID::SPL_UPSPEED, val, 1);
                m->Ctrl(ContinousSPLID::SPL_DOWNSPEED, val, 1);
                break;
            case ContSplWithMixID::SPLMIX_TRIM:
                m->Ctrl(ContinousSPLID::SPL_TRIM, val, 1);
                break;
            case ContSplWithMixID::SPLMIX_THR:
                m->Ctrl(ContinousSPLID::SPL_THR, val, 1);
                break;
            case ContSplWithMixID::SPLMIX_DISTANCE:
                m->Ctrl(ContinousSPLID::SPL_DISTANCE, val, 1);
                break;
            default:
                break;
        }
    }
    return 0;
}
src/tg/tg_user_ctrl.h
@@ -26,6 +26,7 @@
    static u32 Echo_Ctrl(IModule* m, u32 pID, s16* val_c, u32 num);
    static u32 General_Ctrl(IModule* m, u32 pID, s16* val_c, u32 num);
    static u32 Fir_Ctrl(IModule* m, u32 pID, s16* val_c, u32 num);
    static u32 Spl_Ctrl(IModule* m, u32 pID, s16* val_c, u32 num);
};
src/tob.cpp
@@ -200,7 +200,7 @@
    return     ErrStatus::SUCCESS;
}
#define DEBUG 0
#if 1//DEBUG
#if DEBUG
    const s8* type_string[ModuleType::PROC_COUNT] = {
            "none"
            ,"input"
@@ -271,7 +271,8 @@
        if (pmod->mDsp != dsp_index)  continue;
#if DEBUG
        //if (PROC_FIR == pmod->mType)
//        if (1+320 == pmod->mID)
//        if (PROC_FEEDBACK == pmod->mType)
            printf("Module ID %d type %d %s rxnum %d txnum %d tag %d. \n",pmod->mID ,pmod->mType, type_string[pmod->mType], pmod->mRxNum,pmod->mTxNum,pmod->mTag);
#endif
@@ -319,7 +320,7 @@
                    if(nPhyOutput[mPhyID[i].mIntType] < mPhyID[i].mPhyID)
                        nPhyOutput[mPhyID[i].mIntType] = mPhyID[i].mPhyID;
                    //pcm = frames->AllocFrame(); // It is not necessary to be compatible with the AXE1208 series here, because the TOP architecture is different.
                    pcm = frames->AllocFrame(); // It is not necessary to be compatible with the AXE1208 series here, because the TOP architecture is different.
                    m->SetOutputChannelDataPtr(i, pcm);
                    SetTxChannelPtr(static_cast<IntDataType>(mPhyID[i].mIntType), mPhyID[i].mPhyID-1, pcm->Data());
//                    printf("mID %d,bid %d\n", pmod->mID, mPhyID[i].mPhyID-1);
@@ -399,7 +400,7 @@
{
    if(processed) {
        for (auto iter = mList.begin(); iter < mList.end(); iter++) {
//            if(((*iter)->GetModuleType() >= 6) && ((*iter)->GetModuleType() <= 6)) {
//            if(((*iter)->GetModuleType() >= PROC_FEEDBACK) && ((*iter)->GetModuleType() <= PROC_FEEDBACK)) {
//                printf("%d ", (*iter)->GetModuleID());
                (*iter)->Proc();
//            }
@@ -453,6 +454,11 @@
    }
    IModule* m = mList[mModuleIndex[mID]-1];
//    if (m->GetModuleType() == PROC_CONTINUNOUS_SPL && pID == 9) {
//        mID += 320;
//        m = mList[mModuleIndex[mID]-1];
//    }
    if( m != NULL) {
//        m->Ctrl(pID, val, num);
        paramset->GetCtrlEntry(m->GetModuleType())(m, pID, (s16*)val, num);