UnderRun

pcm播放的场景,alsa中snd_pcm_write()返回–EPIPE,表示alsa取不到足够的数据;

AudioTrack 写入数据的速度跟不上 AudioFlinger 读取数据的速度,使得 AudioFlinger 不能及时获取到预期的数据量,反映到现实的后果就是声音断续;这种情况的根本原因大多是应用程序不能及时写入数据或者缓冲区分配过小,AudioTrack 本身并没有错;AudioFlinger 针对这点做了容错处理:当发现 underrun 时,先陷入短时间的睡眠,不急着读取数据,让应用程序准备更多的数据。

当检测到当前写入音频数据的时间与上次出现警告的时间间隔大于预定的最大时间间隔(5秒)后,系统将判定音频播放过程出现了 underrun。然后系统会调用 usleep() 函数对当前 PlaybackThread 进行短时间阻塞,这样上层 APP 就能为 PlaybackThread 准备好更多音频数据。这个 usleep() 的时长是根据相邻 2 次写入音频数据的时间间隔实时计算出的。

OverRun

record录音的场景,alsa中snd_pcm_read()返回–EPIPE,表示alsa的buffer满了;上层app取数据取得太慢。

ALSA 的驱动也有一块专门用来存储录音数据的 buffer,上层从该 buffer 搬运数据再存储起来就能得到我们需要的录音文件。一旦驱动的 buffer 满了,就会出现 EPIPE 的错误,因为上层读录音 buffer 数据的速度慢了。

UnderRun和OverRun相关推荐

  1. ALSA 音频数据传输 underrun 和 overrun

    在 ALSA 数据传输中,最容易出现的错误是 underrun 和 overrun. pcm 播放的时候,接口 snd_pcm_writei 返回 -EPIPE,为 underrun(不足) 录制音频 ...

  2. 解决Android5.1系统下音频Xrun(underrun或overrun)问题

    基于RK3288解决Android5.1系统下音频Xrun(underrun或overrun)问题 2018年11月23日 16:35:06 21cnhui 阅读数:38 标签: Android  a ...

  3. 音频出现Xrun(underrun或overrun)的原因与解决办法

    音频出现Xrun(underrun或overrun)的原因与解决办法 2016年11月09日 16:14:44 Qidi_Huang 阅读数:4614 标签: xrununderrunoverrun原 ...

  4. ALSA音频播放和录制 underrun和overrun错误

    pcm播放的时候,接口snd_pcm_writei 返回 -EPIPE,为underrun 录制音频的时候, 接口snd_pcm_readi 返回 -EPIPE, 为overrun 使用ALSA架构的 ...

  5. 【Android 高性能音频】AAudio 缓冲区控制 ( XRun | 欠载 UnderRun | 超限 OverRun | 获取缓冲区大小 | 设置缓冲区大小 )

    文章目录 I . AAudio 音频流 缓冲区控制 II . AAudio 音频流 XRun ( UnderRun | OverRun ) III . AAudio 音频流 当前每次读写帧数 IV . ...

  6. Audio中underrun与overrun问题解决(十八)

    简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案.音视频.编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列[原创干货持续更新中--]

  7. 【Android 高性能音频】OboeTest 音频性能测试应用 ( 应用简介 | 测试内容 | 输出测试 | Oboe 缓冲区 与 工作负载修改 | 测试案例 )

    文章目录 一.Oboe 测试应用 二.Oboe 测试内容 三.Oboe 输出测试 四.Oboe 缓冲区 与 工作负载修改 五.Oboe 输出测试 ( Pixel 2 | Android 10 ) 一. ...

  8. 【Android 高性能音频】AAudio 音频流 数据回调细节 ( 数据回调函数优先级 | 数据回调函数 | 采样率 | 采样数 | 缓冲区调整 | 线程不安全 )

    文章目录 I . 数据回调函数优先级 II . 数据回调函数 相关内容 III . 采样率 处理细节 IV . 数据回调函数 每次 采样个数 numFrames V . 数据回调函数 缓冲区 ( AA ...

  9. 【Android 高性能音频】AAudio 音频流 缓冲区 简介 ( AAudio 音频流内部缓冲区 | 缓冲区帧容量 | 缓冲区帧大小 | 音频数据读写缓冲区 )

    文章目录 I . AAudio 音频流内部缓冲区 与 音频数据读写缓冲区 概念 II . AAudio 音频流内部缓冲区 缓冲区帧容量 BufferCapacityInFrames 与 缓冲区帧大小 ...

最新文章

  1. mpp 项目管理文件 打开方法
  2. Apache服务器错误问题Internal Server Error
  3. C语言实现测量数据处理,求出实际值的范围
  4. 指令集及流水线基本概念
  5. 程序员保持身心健康的八种方式
  6. 软件测试学习之 ---------- MySQL的查询(重中之重)
  7. Mysql 5.7 Gtid内部学习(十) 实际案例(二)
  8. C#利用正则表达式实现字符串搜索
  9. 3个极品在线PDF转换成WORD服务网站,比软件给力!
  10. 瀑布模型,快速原型模型,增量模型,螺旋模型以及敏捷开发模型的相关概念
  11. Intel 80286微处理器功能结构
  12. 取石子游戏--尼姆博弈
  13. 《神奇的数学》读后感_奇妙的数学读后感
  14. IDEA补丁破解使用方法
  15. Vue实例生命周期函数(钩子函数)详解
  16. java 训练智能辅助系统
  17. 机器学习:最大熵模型
  18. TUSCANY 学习笔记1
  19. 湖北大学知行学院考研计算机,湖北大学知行学院考研怎么样
  20. 三维电影特效动画制作软件——Houdini 17.5

热门文章

  1. 中国保险行业高质量发展指南即将来袭!
  2. Bad owner or permissions on /home/cxhpc/.ssh/config
  3. Canon-Pachelbel的故事
  4. 人生苦短_人生苦短_郑亦辰_高音质在线试听_人生苦短歌词|歌曲下载_酷狗音乐...
  5. C语言之union共同体
  6. The only legal comparisons are between two numbers, two strings, or two dates.
  7. python-(5-3)内置函数-zip locals globals sorted filter map
  8. 运动想象脑电信号数据集及其预处理方法
  9. 军工软件测试面试准备
  10. jacoco代码覆盖率