接下来计划针对音频做一个较为详细的总结:

计划分成下面8章来详细展开,后面再根据实际情况做调整。

- 1.基础知识(硬件,音频相关概念)

  • 2.ALSA/ASOC框架
  • 3.codec 驱动dapm 相关(kcontrol、widget、route),以及hal层设置通路
  • 4.android 音频框架( 重点在AudioFlinger 和 AudioPolicyService服务 )
  • 5.音频通路的选择(AudioTrack播放选择设备的过程,已经设备切换过程)
  • 6.播放 录音音频流的传输过程
  • 7.audio hal介绍
  • 8.一些常见问题解决思路

以上内容基于tinyalsa展开,尽量剔除厂商的差异性。


音频基础知识

一.概念

采集声音实际就是将模型信号转化成数字信号,类似ADC的原理,有着几个步骤:模拟信号->抽样->量化->编码->数字信号
涉及到几个关键的参数:

采样率:抽样环节的频率, 一秒采样多少次,采样频率必须至少是信号中最大频率分量频率的两倍,否则就不能从信号采样中恢复原始信号。android 一般使用44.1k 48k等。

位数(采样精度):量化环节用到的精度,采样的精度,即采集到一个数据有多少位可以保存,这个一般要根据codec 芯片支持哪个精度来配置。一般是16位或32位。

声道:采样多少个通道,android 底层支持单声道和双声道

一.硬件相关

硬件相关 主要介绍 IIS接口

IIS( I2S ) 全称Integrated Interchip Sound,是飞利浦在1986年定义(1996年修订)的数字音频传输标准,用于数字音频数据在系统内器件之间传输,例如codec 芯片,数字麦克风,数字输入输出接口等。


如上图to cpu的芯片。我们可以得出IIS 有这些接口:

引脚 作用
LRCK 帧时钟,传输一帧(左右声道)数据的采样率,通过高低电平选择是左声道数据还是右声道数据,也就是采样率
SCLK LRCK*两个通道的位数和
SDO /SDI 数据输入和输出
MCLK 不是IIS必须的,有时外部芯片需要系统时钟才需要接,一般是 LRCK采样率的256 倍或者384倍

时钟计算的例子:

假设声音数据有左右声道,每个声道占用32位数据位,左右两个声道一共占了64个数据位。如果
LRCK 44.1K   那SCLK  就是44.1K* 64 =2822.4k =2.822m
LRCK 48K   那SCLK  就是48K* 64 =3072k =3.072m

IIS通信总线有主从之分:
在总线上只能存在一个主设备,可有多个从设备。主设备提供时钟,不一定是数据的发送方,也可以是接受方或者其他协调两者的控制设备。

二.其他概念

  • 传输延迟(latency):

传输延迟表示一个周期的音频数据的传输时间。可能有些读者一脸懵逼,一个周期的音频数据,这又是啥?我们再引入周期(period)的概念:Linux ALSA 把数据缓冲区划分为若干个块,dma 每传输完一个块上的数据即发出一个硬件中断,cpu 收到中断信号后,再配置 dma 去传输下一个块上的数据;一个块即是一个周期,周期大小(periodSize)即是一个数据块的帧数。再回到传输延迟(latency),传输延迟等于周期大小除以采样率,即 latency = periodSize / sampleRate。

  • 16LE

上文描述的位数,一般会使用16LE ,这里的LE指的是Little Endian 小端存储 就是0x2345 在实际中是先存储 45 再存储23

  • 蓝牙相关

A2DP:是一种单向的高品质音频数据传输链路,通常用于播放立体声音乐;
SCO: 则是一种双向的音频数据的传输链路,用于语音通话,音频的采样率较低,一般是8K、16K单声道的音频数据,所以如果用于播放音乐,体验会很差。
两者的主要区别是:A2DP只能播放,默认是打开的,而SCO既能录音也能播放,默认是关闭的。

  • android 声卡节点

    控制节点为必须节点,其他不一定有
pcmC0D0c  card 0 device 0 capture
pcmC0D0p  card 0 device 0 playback
表示一个声卡可以有多个设置,一个设备有多个节点C 表示声卡
D 表示设备
P/C 表示play和capture

后续有其他音频相关的概念会在这里增加。

音频1-基础知识(硬件,音频相关概念)相关推荐

  1. 计算机播放声音时进行模数转换,音频的基础知识.ppt

    文档介绍: 数字音频的基础知识Szsy-luowei-2006音频的分类数字音频的产生数字音频文件的分类数字音频信息获取的途径摔尾表帛阜姚矫咐褒睡阀俘疵师哀哮沁魂休霹辱鹰娱却扑遭音舟诣厕二淡音频的基础 ...

  2. 视音频格式基础知识视频压缩

    视音频格式基础知识&视频压缩 2018.7.10 一.视频基础知识 1.什么是视频:连续的图像变化每秒超过24帧(frame)画面以上时,根据视觉暂留原理,人眼无法辨别单幅的静态画面:看上去是 ...

  3. 音频开发基础知识简介

    在现实生活中,音频(audio)主要用在两大场景中:语音(voice)和音乐(music).语音主要用于沟通通信,如打电话,现在由于语音识别的发展,人机语音交互也是语音的一个应用,目前正在风口上,好多 ...

  4. 音视频开发入门基础知识(音频入门篇)

    RTSP实时音视频开发实战课程:<RTSP实时音视频开发实战> 音视频开发入门基础知识(音频入门篇) 目录 前言 音频的采集和播放 音频常见的格式 音频的编码 前言 在音视频开发入门基础知 ...

  5. 计算机硬件和软件基础知识,计算机基础知识(硬件和软件)

    计算机基础知识(硬件和软件) 一. 教学目标 [知识目标]通过本章节的学习,可以了解到计算机系统基本组成.计算机常见硬件的基础知识及计算机的基本工作原理. [技能目标]对于本章节所涉及的计算机基础知识 ...

  6. 音频相关基础知识(采样率、位深度、通道数、PCM、AAC)

    (这其实是一篇转载好几篇的博客,然后自己加了少许) 转载博客1 关于采样率&位深&码率&无损的一些心得_Marenow的博客-CSDN博客_flac格式采样率比特率记笔记,记下 ...

  7. ios音频相关基础知识

    最近在看音频相关的知识,然后就搜集了些基础知识记录下来,以便日后查看和供需要的人学习 1.音频(audio) 指人耳可以听到的声音频率在20HZ~20kHz之间的声波,称为音频. 2.音频采样(aud ...

  8. 音频信号处理基础知识

    语音信号处理基础知识 1.均值 1.1.均值公式定义 x‾=x1+x2+⋯+xnn=∑j=1nxjn\overline{x} = \frac{x_1 + x_2 + \cdots + x_n}{n} ...

  9. 计算机基础知识 音频,计算机基础知识(总结+试题).pdf

    计算机基础知识(总结+试题) 第一册 Windows XP 第 1 章计算机基本基础 P14 1, 计算机有什么特性 计算机是一种不需要人的直接干预而能够对各种数字化信息进行算术和逻辑运 行的快速工具 ...

  10. Android Multimedia框架总结(十七)音频开发基础知识

    原文链接:http://blog.csdn.net/hejjunlin/article/details/53078828 近年来,唱吧,全民K歌,QQ音乐,等成为音频软件的主流力量,音频开发一直是多媒 ...

最新文章

  1. 八. 输入输出(IO)操作3.面向字符的输出流
  2. 使用docker安装的mysql如何让其他机器访问
  3. Spring Mvc中使用Task实现定时任务,以及遇到的一个问题
  4. 一种不通过UI给C4C自定义BO创建测试数据的方式
  5. linux驱动向不同串口发数据,Linux串口(serial、uart)驱动程序设计
  6. Python3爬取豆瓣图书Top250并写入txt文件当中
  7. jquery Ajax应用
  8. Machine Learning---LMS 算法
  9. python批量下载静态页面_Python selenium如何打包静态网页并下载
  10. 说出我的故事,献给正在迷茫的你
  11. google广告分类
  12. 系统优化、美化与清理
  13. android面试!一线互联网移动架构师设计思想解读开源框架!复习指南
  14. img 标签 引入svg图片
  15. 新型冠状病毒的信息汇总与分析 (形态,分类,基因组,进化,变异,流行病学)
  16. 判断Stack为空的方法之empty()与isEmpty()
  17. String字符串方法
  18. UVM virtual interface errors
  19. vue-有初始化动画的节点进度条的实现
  20. 免费的webservice接口 天气预报/IP查询/股票查询/手机归属地等

热门文章

  1. Excel单元格格式
  2. 工作流管理系统开发之四 自定义表单
  3. CA认证与HTTPs原理介绍
  4. 【数据原理及应用 学习总结】第二章 关系数据库标准语言SQL(1)
  5. 平面设计CMKY颜色和显示器RGB颜色对比
  6. 微信小程序在线成语接龙答题有奖猜灯谜红包有奖小程序源码
  7. 利用OpenGL添加AutoCAD中的平移与缩放功能
  8. 一篇掌握Redis的主从复制机制+哨兵模式
  9. Houdini和C4D区别在哪?哪个更好用
  10. 如何在LINUX系统下截图和编辑