音频海思头

news/2024/10/22 18:44:51/

音频海思头:

  1. HISI Aenc模块编码出来的数据是带海思头的,因而在解码的时候就要注意,音频文件是否需要海思头。
  2. 直接读取音频文件数据交给AO播放(HI_MPI_ADEC_SendStream),每一帧数据都是要带海思头的。如若文件数据没有海思头,就得手动进行填充再送给HISI接口。

如下图所示:

char decodebuf[164];

decodebuf[0]=0x00;

decodebuf[1]=0x01;

decodebuf[2]=0x50;  /*数据净荷长度 (单位:short)0x50 = 80,80*2(short) = 160字节数据(g711),对应320字节的原始PCM数据,对应160个原始采样点*/

decodebuf[3]=0x00;

随后160个字节为数据部分

 

添加海思头的代码:

/*******************************************************************************
*@ Description    :添加音频海思帧头(海思《HiMPP V4.0 媒体处理软件 FAQ》6.2.1章节)
*@ Input          :<inputdata>:输入的编码后的 Audio 帧数据指针<inputsamplelen>:输入的样本点数<PersampleLen>:每帧数据有多少个采样点每帧数据,采样点净荷长度(注意单位为:short)
*@ Output         :<Hisivoicedata>:填充haisi头后的数据输出buf地址
*@ Return         :成功:返回总采样点个数(4字节海思头算作两个采样点数据,包括在内)
*@ attention      :
*******************************************************************************/
int HisiVoiceAddHisiHeader(short *inputdata, short *Hisivoicedata, int PersampleLen,int inputsamplelen)
{int len = 0, outlen = 0;short HisiHeader[2];short *copyHisidata, *copyinputdata;int copysamplelen = 0;//输入的样本点数HisiHeader[0] = (short)(0x001<<8) & (0x0300);  // = 0x0100HisiHeader[1] = PersampleLen & 0x00ff;copysamplelen = inputsamplelen; //输入的样本点数copyHisidata = Hisivoicedata;//填充haisi头后的数据输出buf地址copyinputdata = inputdata; //输入的编码后的 Audio 帧数据指针while(copysamplelen >= PersampleLen){memcpy(copyHisidata, HisiHeader, 2 * sizeof(short));outlen += 2;copyHisidata += 2;memcpy(copyHisidata, copyinputdata, PersampleLen * sizeof(short));copyinputdata += PersampleLen;copyHisidata += PersampleLen;copysamplelen -= PersampleLen;outlen += PersampleLen;}return outlen;
}

 

关于AO和ADEC之间的参数配置,可参考:https://blog.csdn.net/spy_007_/article/details/102787416

 


http://www.ppmy.cn/news/763156.html

相关文章

海思A182-Hi3516DV300推流摄像头数据

思A182-Hi3516DV300推流摄像头数据 如果已经按照上一篇文章移植成功了opendump说明你已经成功了一大半&#xff0c;但是下面的一半也不是随随便便成功的&#xff0c;在你想要把librtmp库移植到你的开发板上面&#xff0c;你会遇到各种问题&#xff0c;我就不把遇到各种问题详细…

R6-1 另类堆栈

R6-1 另类堆栈 分数 10 全屏浏览题目 切换布局 作者 DS课程组 单位 浙江大学 在栈的顺序存储实现中&#xff0c;另有一种方法是将Top定义为栈顶的上一个位置。请编写程序实现这种定义下堆栈的入栈、出栈操作。如何判断堆栈为空或者满&#xff1f; 函数接口定义&#xff1a…

KingbaseES R6 集群手工配置VIP案例

经常有用户问&#xff0c;V8R6集群搭建时没有配置VIP&#xff0c;搭建完成后&#xff0c;如何添加VIP&#xff1f;以下向大家介绍下手动添加VIP 的过程。 一、操作系统环境 操作系统(UOS)&#xff1a; rootuos01:~# cat /etc/issue Uniontech OS Server 20 Enterprise \n \l ​…

KingbaseES R6 集群“双主”故障解决案例

实际工作中&#xff0c;可能会碰到集群脑裂的情况&#xff0c;在脑裂时&#xff0c;会出现双 primary情况。这时&#xff0c;需要用户介入&#xff0c;人工判断哪个节点的数据最新&#xff0c;减少数据丢失。 一、测试环境信息 操作系统&#xff1a; [kingbasenode1 bin]$ cat …

海康威视视频播放插件1.4.100教程

一、插件下载运行 下载地址&#xff1a; 海康威视官网 下载页面 打开文件 运行bin文件下的VideoWebPlugin.exe安装插件 二、测试使用 打开 demo_window_integration_preview.html 文件 回放 Appkey、Appsecret和监控点编号获取同预览 打开 demo/demo_window_integration_…

海康威视web插件【浏览器部分兼容 全兼容】

更新时间&#xff1a;2020年9月18日 前言 博主自从写了这篇文章到现在&#xff0c;有好多友友来问我问题&#xff0c;以及我自己也在不断的尝试开发。现在我归纳一下从17年到现在我遇到的问题和友友们遇到的问题以及一些资料总结。 资料 ①&#xff1a;3.0开发包&#xff1a…

全志R6语音交互芯片处理器

全志R6集成了ARM9架构&#xff0c;以600MHz的速度运行。一个32MB的DDR嵌入在R6中。它在有限的成本下实现了完整的语音功能&#xff0c;支持混合交互投注。在离线本地命令字识别和在线云ASR识别之间。包括丰富的接口&#xff0c;例如ADC、DAC、I2S/PCM、USBOTG、SD/MMC、UART、S…

R6

HSUPA (high speed uplink packet access)高速上行链路分组接入。HSUPA通过采用多码传输、HARQ、基于Node B的快速调度等关键技术&#xff0c;使得单小区最大上行数据吞吐率达到5.76Mbit/s&#xff0c;大大增强了WCDMA上行链路的数据业务承载能力和频谱利用率. HSUPA是一种网络…