AMR解码编程(C++直接用opencore-amr-0.1.3库)
来源:互联网 发布:数据质量整改报告 编辑:程序博客网 时间:2024/06/06 00:59
先定义每种帧的大小数组
const int sizes[] = { 12, 13, 15, 17, 19, 20, 26, 31, 5, 6, 5, 5, 0, 0, 0, 0 };
初始化解码器
void *m_pAmr = Decoder_Interface_init();
判断文件头,去掉文件头,读取第一个帧头,以第一个帧头为标准,后面用于判断坏帧
if (0 == memcmp(pBuf, "#!AMR\n", 6)){pos += 6;audioHeader = pBuf[pos];}
得到帧头就可以知道帧的长度
len = sizes[(<span style="font-family: Arial, Helvetica, sans-serif;">audioHeader</span><span style="font-family: Arial, Helvetica, sans-serif;"> >> 3) & 0x0f];</span>
中间有可能会出现坏帧,要去掉
while ( (pos < fileLen) && (audioHeader != pBuf[pos]) ){++pos;}
解一帧
Decoder_Interface_Decode(m_pAmr, &<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size:10px;">pBuf[pos]</span></span><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size:10px;">, pcmFrame</span>, 0);</span>
pos的位置包括帧头。
退出时要关闭解码器
if (NULL != m_pAmr){Decoder_Interface_exit(m_pAmr);m_pAmr = NULL;}
0 0
- AMR解码编程(C++直接用opencore-amr-0.1.3库)
- AMR 编码 PCM & WAV (opencore-amr-0.1.5)
- XCode6 编译opencore-amr
- 编译opencore-amr for iOS
- 编译opencore-amr for iOS
- iOS交叉编译opencore-amr
- 编译opencore-amr源码小记
- Windows 下编译opencore-amr
- AMR音频编解码
- AMR音频编解码
- android amr编解码
- android amr编解码
- iOS 编译包含 bitcode 的 opencore-amr-iOS 静态库
- opencore amr在iOS上decode
- amr与wave编解码
- Symbian解码AMR的方法
- Ios实现amr编解码
- amr编程汇总
- Caffe在Windows 10 下配置、安装和运行mnist cifar10 的过程记录(着重补充了一些注意点)
- Doxygen
- NSURLCache 内存缓存
- 无聊时总结总结算法之05快速排序
- iOS银联ApplePay控件开发
- AMR解码编程(C++直接用opencore-amr-0.1.3库)
- java.lang.NoSuchMethodError: com.google.common.collect.Sets.newConcurrentHashSet()异常解决思路
- 批量kill运行时间较长的进程
- Android短消息用到的常量定义
- HDU2091——空心三角形
- HDU 4932 Miaomiao's Geometry
- 64-bit 与32-bit 简单数据类型的坑
- UVa--10375 Choose and divide(math)
- IOS总结_实现UIButton的图文混排(一)