资源简介
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
相关资源
- 银行家算法 c++实现代码+报告
- c++实现找出数组最大值函数
- 设计模式之委托模式的demo
- C/C++实现FAT文件系统的读写
- C++实现回归算法(逻辑回归 线性回归
- 植物大战僵尸基于OpenCv和C++实现
- C++实现银行储蓄系统 MFC界面
- MD5 C++实现代码,带注释
- linux 上用C++实现的网络嗅探器
- c/c++实现银行家算法模拟
- C++实现的旅行商问题
- 套接字编程Socketc++实现源码
- 分水岭图像分割算法 c++实现
- VC++实现算数编码
- 自适应模糊PID代码 C++实现
- 成熟 免费adpcm音频C语言 编解码
- VIsual C++实现的连连看游戏程序
- SOM自组织神经网络C++实现代码
- DES加密算法C++实现
- 5种页面置换算法C++实现
- C++实现HTTP处理类
- c++实现计算器
- 简单电梯c++实现
- AES/ECB/PKCS5Padding C++实现
- k-means 源代码C++实现
- A星算法,A*算法C++实现,8数码求解
- C++实现的学生学籍信息管理系统
- c++实现的sql基本功能 Linux,win下可运
- 用C++实现的华容道游戏
- 节约里程法c++实现
评论
共有 条评论