• 大小: 6KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: C/C++
  • 标签: G711  编解码  C++实现  

资源简介

C/C++实现(基于算法和基于查表)的G711编解码算法,并封装为AvG711类,简单易用,信手拈来~

资源截图

代码片段和文件信息

#include “AvG711.h“
#include “g711.h“
#include 
#include 
#include 

AvG711::AvG711(AvG711Fmt fmt) {

fmt_ = fmt;
}

AvG711::~AvG711() {

}

int AvG711::encode(unsigned char **odata unsigned char *idata int ilen) {

if (ilen > 0) {

int olen = ilen / 2;
*odata = (unsigned char *)malloc(sizeof(unsigned char) * olen);
if (*odata) {

if(fmt_ == AvG711Fmt_Alaw) 
return g711a_encode(*odata (short *)idata ilen);
else if(fmt_ == AvG711Fmt_Ulaw)
return g711u_encode(*odata (short *)idata ilen);
}
}
return -1;
}

int AvG711::encode(const char *g711_file const char *pcm_file) {

FILE *ifile = fopen(pcm_file “rb“);
FILE *ofile = fopen(g711_file “wb“);
if (ifile && ofile) {

int r = -1;
do {

unsigned char ibuf[160];
r = fread(ibuf 1 160 ifile);
if (r > 0) {

unsigned char *obuf;
int olen = encode(&obuf ibuf r);
fwrite(obuf 1 olen ofile);
free_output_data(obuf);
memset(ibuf 0 sizeof(ibuf));
}
} while (r > 0);
fclose(ifile);
fclose(ofile);
return 0;
}
return -1;
}

int AvG711::decode(unsigned char **odata unsigned char *idata int ilen) {

if (ilen > 0) {

int olen = ilen * 2;
*odata = (unsigned char *)malloc(sizeof(unsigned char) * olen);
if (*odata) {

if (fmt_ == AvG711Fmt_Alaw)
return g711a_decode((short *)(*odata) idata ilen);
else if (fmt_ == AvG711Fmt_Ulaw)
return g711u_decode((short *)(*odata) idata ilen);
}
}
return -1;
}

int AvG711::decode(const char *pcm_file const char *g711_file) {

FILE *ifile = fopen(g711_file “rb“);
FILE *ofile = fopen(pcm_file “wb“);
if (ifile && ofile) {

int r = -1;
do {

unsigned char ibuf[80];
r = fread(ibuf 1 80 ifile);
if (r > 0) {

unsigned char *obuf;
int olen = decode(&obuf ibuf r);
fwrite(obuf 1 olen ofile);
free_output_data(obuf);
memset(ibuf 0 sizeof(ibuf));
}
} while (r > 0);
fclose(ifile);
fclose(ofile);
return 0;
}
return -1;
}

void AvG711::free_output_data(unsigned char *odata) {

free(odata);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2188  2019-11-21 15:39  g711\AvG711.cpp

     文件        786  2019-11-21 15:38  g711\AvG711.h

     文件     157362  2019-11-21 15:56  g711\g711.cpp

     文件        908  2019-11-21 15:56  g711\g711.h

     目录          0  2019-12-02 18:59  g711

----------- ---------  ---------- -----  ----

               161244                    5


评论

共有 条评论