⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 6-3.c

📁 TI公司c6000系列 dsp 的案例源代码
💻 C
字号:
#include <std.h>
#include <log.h>
#include <swi.h>
#include "echocfg.h"
#include "echo.h"

int cancelerLoad = 0;
int decoderLoad = 0;
int encoderLoad = 0;

int echoInFrame  = 0;           			// 当前回音输入帧数量
int echoOutFrame = 2;           			// 当前回音输出帧数量
int encoderFrame  = 0;          			// 当前语音输入帧数量
int decoderFrame  = 0;          			// 当前语音输出帧数量

int audioInBuf[AUDIOBUFLEN];    			// 语音输入数据
int audioOutBuf[AUDIOBUFLEN];   			// 语音输出数据
int codeInBuf[CODEBUFLEN];       		// 编码输入数据
int codeOutBuf[CODEBUFLEN];    			// 编码输出数据

extern Void ECHO_load(int load);
static Void cancelerAlg(int *input, int *output);
static Void decoderAlg(int *input, int *output);
static Void encoderAlg(int *input, int *output);

Void main(int argc, char *argv[])
{
    									// 循环等待
}

Void canceler(Void)
{
    int *src, *dst;    
    src = audioInBuf + (echoInFrame * ECHOFRAMELEN);
    dst = audioOutBuf + (echoOutFrame * ECHOFRAMELEN);
    
    cancelerAlg(src, dst);
    if (++echoInFrame >= (AUDIOBUFLEN / ECHOFRAMELEN)) {
        echoInFrame = 0;
    }
    if (++echoOutFrame >= (AUDIOBUFLEN / ECHOFRAMELEN)) {
        echoOutFrame = 0;
    }
}

Void decoder(Void)
{
    int *src, *dst;
    src = codeInBuf + (decoderFrame * CODEFRAMELEN);
    dst = audioOutBuf + (decoderFrame * AUDIOFRAMELEN);

    decoderAlg(src, dst);
    if (++decoderFrame >= (AUDIOBUFLEN / AUDIOFRAMELEN)) {
        decoderFrame = 0;
    }
}

Void encoder(Void)
{
    int *src, *dst;    
    src = audioInBuf + (encoderFrame * AUDIOFRAMELEN);
    dst = codeOutBuf + (encoderFrame * CODEFRAMELEN);
    encoderAlg(src, dst);

    if (++encoderFrame >= (AUDIOBUFLEN / AUDIOFRAMELEN)) {
        encoderFrame = 0;
    }
}

static Void cancelerAlg(int *input, int *output)
{
    static int oldLoad = 0;    
    if (oldLoad != cancelerLoad) {
        oldLoad = cancelerLoad;
        LOG_printf(&trace,
            "Cancel: new load = %d000 instructions every 2.5 ms", cancelerLoad);
    }
    
    if (cancelerLoad) {
        ECHO_load(cancelerLoad);
    }
}

static Void decoderAlg(int *input, int *output)
{
    static int oldLoad = 0;    
    if (oldLoad != decoderLoad) {
        oldLoad = decoderLoad;
        LOG_printf(&trace,
            "Decode: new load = %d000 instructions every 22.5 ms", decoderLoad);
    }
    
    if (decoderLoad) {
        ECHO_load(decoderLoad);
    }
}

static Void encoderAlg(int *input, int *output)
{
    static int oldLoad = 0;    
    if (oldLoad != encoderLoad) {
        oldLoad = encoderLoad;
        LOG_printf(&trace,
            "Encode: new load = %d000 instructions every 22.5 ms", encoderLoad);
    }
    
    if (encoderLoad) {
        ECHO_load(encoderLoad);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -