AMR解码编程(C++直接用opencore-amr-0.1.3库)_amr编解码器代码-程序员宅基地

先定义每种帧的大小数组

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




退出时要关闭解码器

if (NULL != m_pAmr)
{
	Decoder_Interface_exit(m_pAmr);
	m_pAmr = NULL;
}


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zyx4843/article/details/50688001

智能推荐

投票系统_开源投票系统 github-程序员宅基地

文章浏览阅读686次。package mainimport ( "awesomeProject1/src/github.com/hyperledger/fabric/core/chaincode/shim" "awesomeProject1/src/github.com/hyperledger/fabric/protos/peer" "bytes" "encoding/json" "..._开源投票系统 github

tensorboard一些简单常用的代码_tensorboard代码-程序员宅基地

文章浏览阅读3.9k次。需要再Terminal里面输入tensorboard --logdir logs才能打开Tensorboard# tensorboard --logdir=logs --port=6007 是将端口号改为了6007#一般用到一下几个指令:# 一、打开图片显示图片# writer.add_images("input",imgs,step) 第一个是标签,第二个是图像,注意图像必须是numpy或者tentor类型的,而且必须是通道数在前面,比如RGB三通道的就要是3*w*h#如果通道数在后面,则._tensorboard代码

Java的reverseOrder_reverse是什么意思及其用法-程序员宅基地

文章浏览阅读1.2k次。reverse的音标英 [rɪˈvɜːs]美 [rɪˈvɜːrs]reverse的用法v. 颠倒;彻底转变;使完全相反;撤销,废除(决定、法律等);使反转;使次序颠倒n. 相反的情况(或事物);后面;背面;反面;倒挡adj. 相反的;反面的;反向的;背面的;后面的第三人称单数: reverses 复数: reverses 现在分词: reversing 过去式: reversed 过去分词: re..._reverseorder

java创建一个指定的日期_创建指定日期java Date对象-程序员宅基地

文章浏览阅读1w次。import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class Demo {public static void main(String[] args) throws ParseException {//获..._创建一个指定时间用什么语句

Sublime Text3轻量型跨平台C/C++开发环境(上) 安装使用篇_folder_exclude_patterns-程序员宅基地

文章浏览阅读1.6k次。Sublime Text 2和3的对比相比于2,Sublime Text 3就秒启动一项,就压倒性地胜利了。因此在之后的叙述中都以Sublime Text 3为主角。并且3一直在不断的完善更新,具体的差异可参看Sublime Blog.简单的说:ST3支持在项目目录里面寻找变量 提供了对标签页更好地支持(更多的命令和快捷键) 加快了程序运行的速度 更新了API,使用Pytho..._folder_exclude_patterns

oracle自动递增主键,oracle之主键自动递增问题-程序员宅基地

文章浏览阅读287次。//建表**************create table 表名(id number not null PRIMARY key,username VARCHAR2(16) not null,password VARCHAR2(50) not null,realname VARCHAR2(8),sex VARCHAR2(4),address VARCHAR2(200),question..._oracle表数据主键增加递增

随便推点

php7如何读取二进制数据,在PHP中读取二进制文件-程序员宅基地

文章浏览阅读307次。在PHP中读取二进制文件2012-10-30[1715]technologyphp次阅读很多时候,数据并不是用文本的方式保存的,这就需要将二进制数据读取出来,还原成我们需要的格式。PHP在二进制处理方面也提供了强大的支持。任务下面以读取并分析一个PNG图像的文件头为例,讲解如何使用PHP读取和分析二进制文件。涉及函数PNG格式简介为了完成任务,下面简单介绍一下PNG文件格式。PNG是一种无损压缩的..._php 查找字符串中的二进制

kettle报错couldn't convert string [1970-01-01 00:00:00] to a date using format [yyyy/MM/dd HH:mm:ss.SS_kettle导出date报错-程序员宅基地

文章浏览阅读1.4w次。kettle报错couldn't convert string [1970-01-01 00:00:00] to a date using format [yyyy/MM/dd HH:mm:ss.SSS]1.报错如下2019/01/08 12:04:18 - 替换NULL值.0 - ERROR (version 8.1.0.0-365, build 8.1.0.0-365 from 2018-..._kettle导出date报错

计算机串口通信的作用,浅谈硬件串口通信基础概念-程序员宅基地

文章浏览阅读922次。串口通信(Serial Communication),是指外设和计算机间通过数据信号线、地线等按位进行传输数据的一种通信方式,属于串行通信方式。串口是一种接口标准,它规定了接口的电气标准,没有规定接口插件电缆以及使用的协议。(1)接口标准串口通信的接口标准有很多,有 RS-232C、RS-232、RS-422A、RS-485 等。常用的就是 RS-232 和 RS-485。RS-232 其实是 R..._多串口电脑有什么用途

AndroidStudio使用过程中遇到的bug(持续更新)_run configuration app is not supported in the curr-程序员宅基地

文章浏览阅读2.5w次,点赞7次,收藏18次。转载请注明出处:http://blog.csdn.net/forevercbb/article/details/51037833 由于Google不再支持Eclipse之后,转向Google的亲儿子——AndroidStudio是必然的,但是AndroidStudio的配置以及使用都比Eclipse复杂,不熟悉的情况下经常会遇到一些莫名其妙的问题,导致应用无法正常编译。代码出现的bug可以根据错_run configuration app is not supported in the current project. cannot obtain

计算机如何分区不使用第三方应用,【干货】如何不用重装系统就将硬盘重新分区?...-程序员宅基地

文章浏览阅读2.2k次。原标题:【干货】如何不用重装系统就将硬盘重新分区?在笔记本使用过程中,大家肯定都遇到过电脑个别磁盘直接红色爆满的情况。一般这种情况要么忍受,要么就只能去通过分区软件重新分区,但是硬盘重新分区又要重装系统!还有一种情况是硬盘剩余空间很大,想要保留资料,把一个磁盘分割成两个盘,怎么办?……今天小编就教大家用windows系统自带的磁盘管理功能来达到这些目的。 准备工具:一台需要被拯救的计算机电脑。(对..._不重装系统怎么重新分盘

java 方法参数多_java 方法参数过多,怎么处理?-程序员宅基地

文章浏览阅读3.7k次。本人对java的研究甚少,之前只是用一用,从未有过深度的学习,但却意外的发现了一个问题,那就是java的参数过多会出现错误,你们可能会认为,我找到的这个问题没有任何意义,对,我也是这样想的,可是,你们不妨来听我讲一讲,看看是否是这样的道理,若是不是,也请大神们提出错误,并给我一个合适的答案,让个人知识也可以有所提高,具体错误可见截图:java 固然,这个错误不只使用javac进行编译的时候会报错..._java方法参数过多