资源简介
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
相关资源
- VC++实现CMD命令执行与获得返回信息
- 23种设计模式(C++实现版本
- c++实现的文件上传服务器
- 一个C++实现的源代码行数统计工具
- 纯C++实现的截屏
- C++实现21点游戏
- tiny+编译器C++实现
- 数值分析算法程序设计 C++实现
- mysql+dev c++实现订单管理系统
- VC++实现RSA加密算法
- C++实现RSA加密解密算法
- C++实现的斗地主游戏
- 企业人事管理系统c++实现
- 地铁计费系统C++实现dijkstra算法
- C++实现的蓝牙应用程序框架-BlueSolei
- arp欺骗C++实现
- C++实现监控IP数据包
- 粒子滤波器+目标跟踪的C++实现,VS2
- C++实现的职工管理系统
- 格雷码图片生成与保存C++实现代码
- MFC VC++实现Sierpinski分形图像
- c++实现ECC加解密
- 求点介数C++实现 Betweenness Centrality
- C++实现AES、DES加密算法含MFC界面
- 3DES加密算法C++实现
- C++实现多元线性回归 可指定任意几元
- PCA、KPCA数据降维C++实现
- BP算法的C++实现
- c++实现图最短路径
- 标准H.264编解码源代码,C语言实现
评论
共有 条评论