网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61IC中国电子在线 >> DSP >> 代码示例 >> TI DSP代码示例 >> C5000 >> 文章正文
  数字和IP电话系统:回音相消主程序代码         ★★★ 【字体:
数字和IP电话系统:回音相消主程序代码
作者:61IC    文章来源:本站原创    点击数:    更新时间:2007-1-17    

 

*************************************************

基于TMS320C54CST数字和IP电话系统:回音相消主程序代码

硬件上以:TMS320C54CST+SI3016为主实现

*************************************************

#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);
    }
}

               欢迎点击进入:TI德州中文网   (国内唯一针对TI应用的中文技术网站)    文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    语音信号去噪和编码系统:语…
    数字和IP电话系统:回音相消…
    数字和IP电话系统:回音相消…
    数字和IP电话系统:相消汇编…
    数字和IP电话系统:主机软件…
    数字和IP电话系统:DSP软件代…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号