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. 什么是xmlschema
  2. python 手机测试_python脚本如何测试手机
  3. mysql 表数据转储_在MySQL中仅将表结构转储到文件中
  4. C#系列之聊聊.Net Core的InMemoryCache
  5. Linux相关配置 集群免密码登录配置
  6. bzoj2038 [2009国家集训队]小Z的袜子(hose)
  7. 2022淘宝双十一优惠券如何叠加使用?淘宝双十一优惠券叠加规则介绍
  8. java用画正弦函数_用java语言绘制正弦曲线
  9. log4cxx linux 使用,log4cxx在Linux下的编译使用
  10. 如何使用报表工具制作条形码报表
  11. c语言服务器制作,C语言写的简易实用的web服务器
  12. 2022仿淘宝网首页html+css
  13. 《富国裕民的梦寻:经济学的进化与当代图景》笔记及书中提到的经济学的反思...
  14. 瞪羚企业申报流程材料
  15. 将Unity虚拟相机视角画面显示在一个平面上
  16. 计算机efs恢复工具,重装系统后如何恢复对EFS加密文件的访问
  17. 2016年,网络程序设计,ustc se,SA16225161,梁昱森
  18. 情绪识别软件?论程序员对猫的偏爱!
  19. CSP认证:棋局评估
  20. GB\T和GB国标文件查询、下载方法(建议收藏)

热门文章

  1. 【DIY分享】示波器(原理图+源码+仿真)
  2. 数据可视化基本套路总结
  3. CentOS7:Ruby安装
  4. 一次完整的http请求全过程(知识体系版)
  5. R语言绘图—主题选择
  6. excel文件服务器未响应,excel打不开文件未响应怎么处理-处理excel无法打开文件未响应的方法 - 河东软件园...
  7. python操作个人简历,python爬虫开发工程师应届生个人简历模板(Word可以直接使用)...
  8. 高一计算机课程教案,高一信息技术《信息及其特征》教案
  9. 如何通过VISIO来画网络拓扑图
  10. 某城郊110kV降压变电站监控系统设计