【海思SS528】MPP媒体处理软件V5.0 | 音频模块 - 学习笔记

news2024/11/25 22:24:19

目录

  • 🎄一、概述
  • 🎄二、音频输入(AI) 和 音频输出(AO)
    • ✨2.1 音频接口和 AI、 AO 设备
    • ✨2.2 录音和播放原理
    • ✨2.3 AI、AO 通道
    • ✨2.4 重采样
  • 🎄三、音频编码和解码
    • ✨3.1 音频编解码流程
    • ✨3.2 音频编解码协议
    • ✨3.3 语音帧结构
  • 🎄四、总结


在这里插入图片描述

🎄一、概述

MPP是Media Process Platform的缩写,即媒体处理平台。MPP媒体处理软件V5.0,是媒体处理平台开发手册的第五版。
本篇文章主要记录学习音频模块的笔记,很多内容在开发手册里都有的,这里只记录自己认为重要的一些内容,供后续学习、记忆。

音频(AUDIO)模块包括四个子模块:

  • 音频输入、
  • 音频输出、
  • 音频编码、
  • 音频解码

音频输入和输出模块通过对芯片音频接口的控制实现音频输入输出功能。
音频编码和解码模块提供对G711、 G726、 ADPCM格式的音频编解码功能,并支持录制和播放LPCM格式的
原始音频文件

在这里插入图片描述

🎄二、音频输入(AI) 和 音频输出(AO)

✨2.1 音频接口和 AI、 AO 设备

音频输入输出接口简称为AIO( Audio Input/Output)接口,用于和Audio Codec对接,完成声音的录制和播放。
AIO接口分为两种类型:只支持输入或只支持输出。

  • 当为输入类型时,又称为AIP;
  • 当为输出类型时,又称为AOP

AI设备:在海思媒体处理软件中,将音频输入(AI)接口抽象为 AI设备;
AO设备:在海思媒体处理软件中,负责抽象音频接口输出功能的单元;

SS528芯片内部集成 1 个 AIO, 包含 2 个 AIP(Audio Input Port)和 2 个 AOP(Audio Output
Port),也就是有2个AI设备、2个AO设备。

✨2.2 录音和播放原理

录音:采集声音,转换成数字信号并保存起来的过程,一般有如下三个过程:

  • 原始音频信号一般是模拟信号的形式的,通过Audio Codec,按一定采样率和采样精度转换为数字信号。
  • Audio Codec以I2S时序或PCM时序的方式,将数字信号传输给AI设备。
  • 芯片利用DMA将AI设备中的音频数据搬移到内存中,完成录音操作

在这里插入图片描述

播放:将保存的数字信号的声音取出,转换成模拟信号输出的过程:

  • 芯片利用 DMA 将内存中的数据传输到 AO 设备。
  • AO设备通过 I2S 时序或 PCM 时序向 Audio Codec 发送数据。
  • Audio Codec 完成数字信号到模拟信号的转换过程,并输出模拟信号。

在这里插入图片描述

✨2.3 AI、AO 通道

这一小节,看不太懂,先记录一些可以理解的
AIO在不同协议时,支持的AI、 AO多路复用模式有差异,不同的解决方案也不相同。
AI、 AO可以在AI/AO设备最大支持的比特范围内,按采样精度拆分AI和AO通道,并按照时序上的顺序,依次视为AiChn0、 AiChn1等或AoChn0、 AoChn1等。例如:SS528的AIO最大支持左右声道各160bit,可以拆分为16bit 20通道,也可以拆分32bit 10通道等等。

SS528V100 AIO 最大支持 AI、 AO 通道数如下图:
在这里插入图片描述
SS528V100/SS524V100上音频AI支持的最大通道数为20通道, I2S模式下AO支持的最大通道数为8通道(每根数据线支持2通道,受I2S数据线数量限制,最大仅4通道有效), PCM模式下AO支持的最大通道数为1通道。多通道情况下, AI、 AO视通道排列中相对应的两通道为立体声输入输出。

✨2.4 重采样

重采样:将一个音频信号从一个采样率转换为另一个采样率。
音频输入和音频输出模块支持对音频数据实施重采样。

  • 如果启用AI重采样功能,则在 ss_mpi_ai_get_frame获取数据返回前,内部将会先执行重采样处理,再返回处理后的数据。
  • 如果启用了AO重采样功能,则音频数据在发送给AO之前,内部先执行重采样处理,处理完成后再发送给AO通道进行播放。

音频重采样支持任意两种不同采样率( 64k、 96k除外)之间的重采样,也支持64kHz下采样到8kHz或16kHz。

  • 重采样支持的输入采样率为: 8kHz, 11.025kHz, 12kHz,16kHz, 22.05kHz, 24kHz, 32kHz, 44.1kHz, 48kHz, 64kHz,
  • 不支持的输入采样率: 96kHz;
  • 支持的输出采样率为: 8kHz, 11.025kHz, 12kHz, 16kHz,22.05kHz, 24kHz, 32kHz, 44.1kHz, 48kHz;
  • 不支持的输出采样率: 64kHz,96kHz;
  • 重采样仅支持处理单声道

在这里插入图片描述

🎄三、音频编码和解码

✨3.1 音频编解码流程

海思SS528的音频编码、解码都是用软件的,而非硬件。
SDK音频的编码类型G711、 G726、 ADPCM_DVI4、 ADPCM_ORG_DVI4、ADPCM_IMA均使用CPU软件编解码。
所有的解码功能都基于独立封装的音频解码库,核心解码器工作在用户态,使用CPU软件解码。
SDK支持通过SYS模块的绑定接口,将一个AI通道绑定到AENC通道,实现录音编码功能;
也可以将一个ADEC通道绑定到AO通道,实现解码播放功能。

✨3.2 音频编解码协议

下图是SS528 音频编解码协议说明:
在这里插入图片描述
表中列出来的编码协议,仅支持对单个声道的音频帧进行编码,如果送给编码通道的是立体声音频帧,则只会对左声道数据进行编码,编码出来的码流只带左声道数据。

✨3.3 语音帧结构

使用语音编解码库进行G711、 G726、 ADPCM格式的编码,编码后的码流遵循以下表格中描述的帧结构,即在每帧码流数据的净荷数据之前填充有4个字节的帧头;使用语音编解码库进行以上格式的解码时,需要读取相应的帧头信息。

帧头中的数据净荷长度(单位:short)字段计算公式:
数据净荷长度 = (每帧采样点数 – 输入预测采样点数)/压缩率 + 输出预测帧头长度。

下图是语音帧结构:
在这里插入图片描述

在这里插入图片描述

🎄四、总结

本文主要记录学习海思SS528媒体开发手册《MPP媒体处理软件V5.0》的一些重点内容,供后续深入学习音视频做参考,手册的很多内容没看明白,所以只记录一些重点,方便记忆。以后有长进了再补充 *_^

在这里插入图片描述
如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/701407.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Spring | 事件监听概述】

本篇主要对Spring 的 事件监听机制简单介绍下。 事件监听 概述 概述 ApplicationContext中的事件处理是通过ApplicationEvent 类和ApplicationListener接口提供的。如果将实现该 ApplicationListener 接口的 bean 部署到上下文中,那么每当 ApplicationEvent 发布到 …

Android Jetpack Compose - 深入了解 AlertDialog

在开发 Android 应用时,对话框是一个常见的 UI 元素,用于向用户显示信息或获取用户的反馈。在 Jetpack Compose 中,我们可以使用 AlertDialog 组件来创建对话框。在这篇博客中,我们将深入了解如何使用 Jetpack Compose 的 AlertDi…

【Python爬虫+数据分析】采集电商平台数据信息,并做可视化演示(带视频案例)

前言 随着电商平台的兴起,越来越多的人开始在网上购物。而对于电商平台来说,商品信息、价格、评论等数据是非常重要的。因此,抓取电商平台的商品信息、价格、评论等数据成为了一项非常有价值的工作。 接下来就让我来教你 如何使用Python编写…

互动酷投票平台网络投票链接做网络链接投票

关于微信投票,我们现在用的最多的就是小程序投票,今天的网络投票,在这里会教大家如何用“活动星投票”小程序来进行投票。 我们现在要以“垃悦享端午”为主题进行一次投票活动,我们可以在在微信小程序搜索,“活动星投票…

ProtoBuf—3

文章目录 1、默认值2、更新规则3、未知字段4、option字段5、通信录网络版6、总结 1、默认值 反序列化消息时,如果被反序列化的二进制序列中不包含某个字段,反序列化对象中相应字段时,就会设置为该字段的默认值。不同的类型对应的默认值不同&…

使用GeoPandas进行地理空间数据可视化

大家好,在当今数据驱动的世界中,将信息可视化到地图上可以提供有价值的见解,帮助有效地传达复杂的模式。GeoPandas是一个建立在pandas和shapely之上的Python库,使用户能够通过将地理空间数据与各种变量合并来创建令人惊叹的地图。…

css实现鼠标悬停时滑出层提示

css实现鼠标悬停时滑出层提示的方法介绍 这是一个简单的鼠标悬停提示特效&#xff0c;类似于alt标签&#xff0c;不过这一种是用纯CSS实现&#xff0c;扩展性好&#xff0c;而且在提示的层里可以加入图片或其它布局&#xff0c;这个要根据你的需要了。 代码如下: <!DOCTYPE…

一次日志配置未生效问题排查记录

某天排查业务问题时,在我司的日志收集平台上,未能发现相关业务服务接口访问日志。经过和相关同事确定,发现业务服务未能将接口访问日志吐到日志收集平台,由此开启一段有点漫长的排查之旅。 业务服务是典型的SpringBoot web应用&#xff0c;日志记录采用slf4jlog4j2组合。 通过…

《BlazePose: On-device Real-time Body Pose tracking》在移动设备端实时人体姿态追踪(2006)

BlazePose: On-device Real-time Body Pose tracking 论文地址&#xff1a;https://arxiv.org/pdf/2006.10204.pdf GoogleBolg&#xff1a;https://ai.googleblog.com/2020/08/on-device-real-time-body-pose-tracking.html 模型下载地址&#xff1a;https://github.com/PIN…

clop勒索软件攻击活动频发,西门子能源中招

自6月初被通报利用MOVEit Transfer服务器中的零日漏洞窃取加密组织数据后&#xff0c;clop勒索软件攻击活动频繁&#xff0c;全球陆续发生了多起clop软件攻击事件。本周&#xff0c;Clop团伙在其数据泄露网站上列出了西门子能源公司的信息&#xff0c;表示该公司的数据被泄露。…

must declare a single constructor

1、异常详细描述 Test ignored.org.junit.platform.commons.PreconditionViolationException: Class [org.bc.offer.datastructure.Stack] must declare a single constructorProcess finished with exit code -12、源码 package org.bc.offer.datastructure;import org.jun…

SUI Token释放计划时间表和几个相关问题

Sui主网于2023年5月3日正式上线&#xff0c;网络原生token SUI用于链上交易、支付gas费用、保护网络以及提供链上流动性。SUI的长期流通总供应量为100亿。在主网上线时&#xff0c;大约有5%的token在流通&#xff0c;其余的将按照下面的图表所示的计划释放&#xff0c;以保持网…

特异性抑制剂:FAPI-4 NH2 ,FAPI4Amine,成纤维细胞活化蛋白 (FAP) 抑制剂连接氨基

编辑来源||陕西新研博美生物科技有限公司小编MISSwu FAPI-4-NH2中FAPI是FAP的特异性抑制剂。在这些FAPI中&#xff0c;含有DOTA配体(FAPI-04)的[68Ga]Ga-DOTA-FAPI-04 PET/CT能显示出良好的体内药代动力学&#xff0c;导致快速kidney清除和注射后10分钟至3小时的低背景活性。 …

JAVA C++的权限区别

访问级别的名称和个数&#xff1a;在C中&#xff0c;有三个访问级别关键字&#xff1a;public、protected和private。而在Java中&#xff0c;有四个访问级别关键字&#xff1a;public、protected、private和默认&#xff08;没有关键字修饰&#xff09;。 默认访问级别不同&…

【三层交换机】网络杂谈(16)之三层交换机技术

涉及知识点 什么是三层交换机&#xff0c;三层交换技术的由来&#xff0c;三层交换机&#xff0c;三层交换的应用范例。深入了解三层交换机技术。 原创于&#xff1a;CSDN博主-《拄杖盲学轻声码》&#xff0c;更多内容可去其主页关注下哈&#xff0c;不胜感激 文章目录 涉及知…

SAP-QM质量管理视图字段解析

QM物料授权:如果在物料主记录中输入物料授权组,则系统将检查(在物料基础上)用户是否具有对以上名称对象的授权。如果未输入授权组,则不进行授权检查。要通过授权检查,用户需要 物料授权,其中包含有字段值所表示的相关授权组。 收货处理时间:收货后的加盐时间(天数)如…

深度学习(五)—— 卷积神经网络(CNN)

卷积神经网络&#xff08;CNN&#xff09; 1 CNN的组成2 卷积层2.1 卷积的计算2.2 多通道卷积2.3 多卷积核卷积2.4 特征图大小2.5 卷积层 api 实现 3 池化层3.1 最大池化3.2 平均池化 4 全连接层5 CNN的构建5.1 数据加载5.2 数据处理5.3 模型搭建5.4 模型编译5.5 模型训练5.6 模…

Go语言使用net/http实现简单登录验证和文件上传功能

最近再看Go语言web编程&#xff0c;使用net/http模块编写了一个简单的登录验证和文件上传的功能&#xff0c;在此做个简单记录。 目录 1.文件目录结构 2.编译运行 3.用户登录 4.文件上传 5.mime/multipart模拟form表单上传文件 代码如下&#xff1a; package mainimport …

【C语言】递归实战,通过几个例子带你深入走进递归算法

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello&#xff0c;这里是君兮_&#xff0c;今天给大家带来一篇递归的实战教学文章&#xff0c;由于递归算法不仅对于初学者十分不易理解并且在我们以后的数据结构中也非常重要。我们今天就通过几个应用递归的实际例子来给…

Apache Doris 在头部票务平台的应用实践:报表开发提速数十倍、毫秒级查询响应

作者&#xff5c;国内某头部票务平台 大数据开发工程师 刘振伟 本文导读&#xff1a; 随着在线平台的发展&#xff0c;票务行业逐渐实现了数字化经营&#xff0c;企业可以通过在线销售、数字营销和数据分析等方式提升运营效率与用户体验。基于此&#xff0c;国内某头部票务平…