你好!这里是风筝的博客,

欢迎和我一起交流。


FramesPeriods

一帧(frame)相当于要播放的一个样本,而与通道数或位数无关。
例如

  • 1帧立体声48khz 16位PCM流为4字节.
  • 1帧5.1声道 48khz 16位PCM流为12字节.

一个周期(period)是每个硬件中断之间的帧数。 poll()将每个周期返回一次。

缓冲区(buffer)是环形缓冲区。缓冲区大小必须始终大于一个周期大小,通常是2 * 周期的大小,但是某些硬件每个缓冲区可以做到支持8个周期,缓冲区大小也可能不是周期大小的整数倍。

现在,如果硬件已设置为48K Hz,2个周期,每个周期有1024个帧,缓冲区大小为2048帧。硬件将处理每个缓冲区会中断2次。 ALSA将努力保证缓冲区尽可能是满的。一旦播放了第一周期的样本(samples ),则将第三周期的样本数据转移到第一周期样本数据所占用的空间,同时播放第二周期样本。 (正常的环形缓冲区行为)。

Additional example

这是上述讨论的替代示例。

假设我们要处理一个立体声,16位,44.1 KHz的音频流,单向的(即播放或录音)。 然后我们有:

  • 立体声(stereo) = 2通道
  • 1个模拟样本(analog sample)16位= 2字节
  • 1帧代表来自所有通道的1个模拟样本; 这里我们有2个通道,依此类推:
    • 1帧=(通道数)(以字节为单位的1个样本大小)=(2个通道)(每个样本2个字节(16位))= 4个字节(32位)
  • 要维持2x 44.1 KHz模拟采样率,系统必须能够支持以Bytes / sec为单位的数据传输速率:
    • bsp_rate =(通道数)(以字节为单位的1个样本大小)(采样率)=(1帧)(采样率)=(2个通道)(2个字节/样本)*(44100样本/秒)= 2 * 2 * 44100 = 176400字节/秒

现在,如果ALSA每秒中断一次,对于请求的字节大小,我们需要每秒准备好176400字节(在每秒结束时),以便在44.1Khz上维持16位模拟立体声。

  • 如果它每半秒钟中断一次,则对于相同的流,对于每个中断我们需要准备176400/2 = 88200字节;
  • 如果中断每100毫秒触发一次,则对于每个中断我们需要准备176400 *(0.1 / 1)= 17640字节。

通过设置以帧为单位的周期大小,我们可以控制何时生成此PCM中断。

  • 因此,如果我们设置16位双通道44.1k的音频流,并且period_size为4410帧=>(对于16位双通道 44.1Khz,则1帧等于4个字节,因此4410帧等于4410 * 4 = 17640字节)=> 每17640字节(即每100毫秒)将产生一个中断。
  • 相应地,buffer_size应该至少为2 * period_size = 2 * 4410 = 8820帧(或8820 * 4 = 35280字节)。

ALSA是运行时来决定实际的buffer_size和period_size,具体取决于:请求的通道数及其各自的属性(速率和采样分辨率) ,以及在snd_pcm_hardware结构中设置的参数(在驱动程序中)。

“帧”(frames)代表单位,1帧=通道 * sample_bytes。
在您的情况下,一帧对应于2个通道x 16位= 4字节。

周期是指环形缓冲区中的周期数。 在OSS中,称为作为“片段”。

所以

  • buffer_size = period_size *周期
  • period_bytes = period_size * bytes_per_frame
  • bytes_per_frame =通道* bytes_per_sample

我还是不明白’period_size’和’period’是什么?

“period”定义了更新状态的频率,通常通过中断的调用。
“ period_size”定义帧大小对应于“period time”。
这个术语对应于OSS上的“片段大小”。 在主要的声音硬件上,环形缓冲区分为几部分,并在每个边界上产生一个irq。
period_size定义此块的大小。

在某些硬件上,irq是根据计时器控制的。 在这种情况下,将周期定义为调用irq的计时器频率。

来自:https://alsa-project.org/main/index.php/FramesPeriods

ALSA子系统(一)------Frames Periods相关推荐

  1. ALSA子系统(十二)------ALSA Buffer的更新

    你好!这里是风筝的博客, 欢迎和我一起交流. PCM 数据管理可以说是 ALSA 系统中最核心的部分. 不管是录音还是播放,都要用到buffer管理数据. 播放:copy_from_user 把用户态 ...

  2. ALSA子系统(十七)------支持Type-C耳机驱动

    你好!这里是风筝的博客, 欢迎和我一起交流. 之前讲解了耳机驱动: ALSA子系统(十六)------虚拟耳机驱动 Android音频子系统(四)------耳机拔插流程 那么必然少不了现在市场上较多 ...

  3. ALSA子系统(七)------simple_card添加虚拟声卡

    你好!这里是风筝的博客, 欢迎和我一起交流. 我们知道,asoc框架里面主要包含machine codec platform 这三大部分, (1)machine:单板相关内容,表明声卡中所用的主芯片( ...

  4. ALSA子系统(五)------XRUN排查

    你好!这里是风筝的博客, 欢迎和我一起交流. 什么是XRUN?相信做音频的童鞋都不陌生. 它是缓冲区不足或溢出,X代表不足或溢出.在这两种情况下,都表明系统速度不够快,未能及时处理来自ALSA音频缓冲 ...

  5. ALSA子系统(十六)------虚拟耳机驱动

    你好!这里是风筝的博客, 欢迎和我一起交流. 在这之前,我们需要知道一些耳机类型的基本知识: 耳机有很多类型,图片左边带麦克的耳机术语叫做headset,右边不带麦克的术语叫做headphone. h ...

  6. RK3399平台开发系列讲解(ALSA子系统)4.37、ALSA驱动框架

  7. ALSA子系统(十八)------指纹解锁动画提示声卡顿问题解析

    你好!这里是风筝的博客, 欢迎和我一起交流. 很久没写kernel相关的东西了,主要是来到手机厂之后,大部分还是在Android上,Kernel虽然也有涉及,但毕竟只是有所涉及,主要业务逻辑还是在HA ...

  8. ALSA子系统(六)------POP音排查

    你好!这里是风筝的博客, 欢迎和我一起交流. POP音基本原理 这个POP音的产生主要是因为codec开始工作时,耳机等输出或mic输入声道上的直流电平跳变产生的:手机或一般的手持设备上不会有负电压, ...

  9. ALSA ASOC

    1       ALSA 1.1    架构简述 ALSA是Advanced Linux Sound Architecture 的缩写, 官网 : http://www.alsa-project.or ...

最新文章

  1. leetcode--对称二叉树--python
  2. 高并发场景下,到底先更新缓存还是先更新数据库?
  3. 如何在NLP领域应用卷积神经网络CNN
  4. 为什么说基于比特币现金的0确认是必要的?
  5. 9种没结果的爱(未婚者必读)!!!
  6. 基于wifi的单片机无线通信研究_SKYLAB:智能家居无线协议WiFi/BLE/Zigbee介绍与对比...
  7. 分享一道阿里Java并发面试题 (详细分析篇)
  8. 单硬盘上mac + win7双系统,GUID-GPT分区
  9. Oracle推出支援.NET 3.5与Visual Studio 2008的开发工具
  10. 用MySQL写怎么删除字母_mysql如何替换掉字母
  11. c语言交换两个变量的值 讲课,用C语言的泛型实现交换两个变量值
  12. python中syntaxerror_【已解决】Python中两个星号**参数去传递给函数出错:SyntaxError invalid syntax...
  13. LeetCode#67--Add Binary(用Java实现二进制相加)
  14. 老计算机教师,老教师能用好信息技术吗?
  15. matlab模块里有s,求助!!S-Function做通用模块
  16. 《神经网络与深度学习》- 邱锡鹏(更新)
  17. Guided Anchoring:在线稀疏anchor生成方案,嵌入即提2AP | CVPR 2019
  18. 解决File Cache Conflict
  19. TCP,UDP,IP,数据链路层头部详解
  20. Redisson(2-3)分布式锁实现对比 VS Java的ReentrantLock的FairLock

热门文章

  1. 归并排序(JAVA版)
  2. 数据采集之全埋点数据采集分析方法的一些整理
  3. 串口实现PC之间传输文件
  4. rtsp播放h265(hevc)
  5. python基础总结:1.8、输入输出
  6. 中科院大学计算机科学与技术王伟强,李振宇 - 中国科学院大学 - 计算机科学与技术学院...
  7. python在Scikit-learn中用决策树和随机森林预测NBA获胜者
  8. Paxos协议基本原理
  9. OA行业分析:实施政务OA办公系统的好处
  10. oa办公系统都有哪家?