HAL 层多声卡同时录音框架设计 - 多语言

  • 1. 声卡工作原理
  • 2. 音频格式
  • 3. 动手来设计多声卡录音框架

1. 声卡工作原理

  • 定义
    声卡(Codec), 从名字上看就能看出是一种专用于音频 编(Encode) 解(Decode) 码 的硬件芯片, 通常采用 I2C 协议与外部进行通信, 采用 I2S 协议传输音频信号.
  • 核心参数
    采样率(rate): 定义了每秒从连续信号中提取并组成离散信号的采样个数.
    位宽(bit):
    通道数(channel): 表示音频信号的数量, 通常分为单声道和立体声.

2. 音频格式

  • 常见
    ▪ MP3 ▪ WAVE ▪ PCM ▪ FLAC ▪ M4A
  • 其他
    ▪ RealAudio ▪ VQF ▪ OggVorbis ▪ APE ▪ AAC
    ▪ CD ▪ AIFF ▪ MPEG ▪ MPEG-4 ▪ MIDI ▪ WMA ▪ AMR

3. 动手来设计多声卡录音框架

  • 适用场景
    智能音箱 2麦, 4麦, 6麦, 8麦方案.

  • 如何设计
    需要用到多线程, 互斥锁, 数据队列, 一个总线程用于处理(合并, AEC)子线程采集到的数据, 多个子线程用于读取声卡数据, 互斥锁保障了数据的原子性, 数据队列用作于子线程写入、总线程读取的数据传输工作. 实际上就是用到了 buffer 原理.

  • 代码设计

数据结构
Android Audio - HAL 层多声卡同时录音框架 - 数据队列设计(C 和 C++通用)
多线程设计
Android Audio - HAL 层多声卡同时录音框架 - 多线程设计(C语言)
Android Audio - HAL 层多声卡同时录音框架 - 多线程设计(C++语言)
  • Android.mk 怎么写

Android Audio - HAL 层多声卡同时录音框架设计(多语言)相关推荐

  1. Android Audio - 支持多个CODEC同时录音

    Android Audio - 支持多个CODEC同时录音 Android6.0 修改方法 说明 Android6.0 修改方法 源码路径: sdk\frameworks\av\services\au ...

  2. android音频hal层简介

    如下图为android音频hal层所处的位置: 从上图可以看出,HAL层下面使用TiniAlsa(Android下一个简约的Alsa版本).HAL层分为两部分,一部分为各种音频设备,每种音频设备由一个 ...

  3. Android Audio - 支持多个APK同时录音

    Android Audio - 支持多个APK同时录音 原理说明 Android4.4 修改方法 Android5.1 & 6.0 修改方法 Android8.1 修改方法 Android9. ...

  4. Android P HAL层添加HIDL实例(详细实现步骤)

    Android P HAL层添加HIDL实例 本文是参照 https://www.jianshu.com/p/b80865c61d8e 教程介绍实现,原理请参考原作者. 本文将介绍如何在P OS上添加 ...

  5. 【Android Audio 入门 七】声卡的创建

    [Android Audio 入门 七]声卡的创建 七.声卡的创建 7.1 Struct snd_card 7.2 声卡的建立流程 Step 1:创建一个 snd_card 实例 Step 2:创建声 ...

  6. Android Audio HAL 接口介绍之 adev_set_parameters()和out_set_parameters()

    前言 这几天一直再解决BUG,是两个usease同时存在的场景,插入耳机来实现音频切换的问题.有Recroding+HFP_Call场景,有两个Recording同时存在的场景.当插入有线耳机后,音频 ...

  7. 【Android】HAL层浅析

    一.HAL层的前世今生 二.HAL层的通用结构剖析 三.一个例子 四.击破Audio HAL Module 五.小的总结 一.HAL层的前世今生 HAL(Hardware Abstraction La ...

  8. RK3288 android添加HAL 层导致无法进入主界面原因分析,重复打印 camsys_marvin(deaa1510) is closed

    1.一般在添加HAL层的时候,都会写到JNI 层(namespace android) ,如果形参对应不上,或者JNINativeMethod格式写的  不对就会导致开机无法进入主界面,以下是终端重复 ...

  9. Android 10 HAL 层添加HIDL实现过程

    本文以跑步机为假想场景介绍如何在Android Q(10)上添加HIDL,内容涉及HAL.HIDL进程间通讯.多线程以及串口操作,涵盖了标准的Android硬件服务的主要技术.编写时参考了两篇博客(见 ...

  10. Android源码分析(三)-----系统框架设计思想

    一 : 术在内而道在外 Android系统的精髓在源码之外,而不在源码之内,代码只是一种实现人类思想的工具,仅此而已...... 近来发现很多关于Android文章都是以源码的方向入手分析Androi ...

最新文章

  1. 中科大“量子鹊桥”登Nature封面,量子牛郎和织女没见面就能纠缠了
  2. Android 更新项目名称
  3. iOS socket
  4. BZOJ 1878 HH的项链
  5. 【优雅代码】深入浅出 妙用Javascript中apply、call、bind
  6. android旋转动画的两种实现方式
  7. 人工智能人才缺口巨大,是否要从大学生抓起?
  8. python 解方程 sympy_Python数据处理篇之Sympy系列(五)---解方程
  9. body属性文本标记和排版标记
  10. 项目Beta冲刺Day4
  11. AI--调用百度OCR文字识别API进行图片文字识别
  12. 现金流量表补充资料的编制公式
  13. HINet | 性能炸裂,旷视科技提出适用于low-level问题的Half Instance Normalization
  14. 决策树(Decision Tree)
  15. FreeSwitch接通30s就挂断
  16. DAO:可及性与问责制、分权与效率 、开放与控制的三大权衡
  17. 微信的NATIVE支付提示201商户订单号重复的解决方案
  18. 【信捷PLC XL5E-16T试用-程序上传下载】
  19. MDK Keil配色方案及配置方法
  20. Mac上Qt安装和配置教程

热门文章

  1. 小米路由器r2d_小米路由器R2D亮黄灯维修
  2. c语言斐波那契数列_Day 7:斐波那契数列
  3. spyder pyecharts不显示_飞利浦292E2E评测丨宽屏显示器中的多面手
  4. 【拒绝一问就懵】之从Thread讲到Handle
  5. 三菱plc控制步进电机实例_「PLC案例」三菱FX3U与威纶通HMI的步进定位控制,附程序图~...
  6. BoundsChecker检查内存泄露 使用步骤
  7. 软件项目设计文档分类
  8. PCB布线规则自学笔记
  9. WEB应用之JSP+Servlet
  10. android nef转jpg格式文件,nef格式转换成jpg