早在第一家公司的时候,有一个印象深刻的Bug,很值得思考。这个Bug充分说明了有缺点的系统架构是怎么在不经意间影响了产品的。

DSP有一个简单的操作系统,可以运行一些task,这些task有一定的优先级,优先级低的task可以被优先级高的中断。
对MCU来说,DSP就是一个外设,它周期性的给MCU发中断,MCU的中断处理程序会在DSP和MCU之间的DPRAM上读取数据。为了同步DSP和MCU对DPRAM的读写,需要设置和检测一些flag寄存器(DSP上)。
DSP上的task有:
优先级最高的中断级任务 Boot Task,FRAME Task,CMD Task,PCM Task。
当CPU的中断来了的时候,CMD Task激活,然后它将激活PCM Task,顾名思义,PCM Task是处理PCM数据的。
下一优先级的任务是MIX Task,它运行Super Foreground Level,每2ms被执行一次,用来混音。
然后,再下一优先级的任务是Speech tasks,运行在Foreground Level,每20ms运行一次,用来处理语音电话数据。
最低优先级的任务是Music Task,运行在Background Level,处理一切跟Music,Tone相关的事情 。
打3G语音电话的时候,MCU和DSP之间的通信可以用这样的一个抽象图来表示:

这样,当Telecom很频繁的发送AMR语音帧时,可能两个连续的语音帧的时间间隔<DSP读取和回调的时间间隔,这样,当CPU试图写入第二个语音帧时,第一个语音帧还在,于是CPU丢弃了第一帧。这样就出现了Messy Audio的问题。

解决方法很简单,就是增大Buffer的大小,扩容为以前的两倍,这样CPU除非连续三帧来的时间间隔< DSP读取和回调的时间间隔时,CPU才会丢弃语音帧---这个概率基本是不存在的。

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>

阅读(3) | 评论(0) | 转发(0) |

0

上一篇:没有了

下一篇:浮点运算是怎么实现的?

相关热门文章
  • shell中字符串操作
  • shell中的特殊字符
  • linux设备驱动归纳总结...
  • stagefright与opencore对比
  • 关于java中的“错误:找不到或...
  • 谁能够帮我解决LINUX 2.6 10...
  • 现在的博客积分不会更新了吗?...
  • shell怎么读取网页内容...
  • ssh等待连接的超时问题...
  • curl: (56) Recv failure: Con...
给主人留下些什么吧!~~
评论热议

[Bug Fix]Messy Audio语音电话不清晰问题相关推荐

  1. BUG FIX有感-深入了解TextView的行间距计算逻辑

    测试A:你这个横幅有问题啊!正常不是这样显示的... 我:这个不好改啊,之前就发现了,这是偶现的问题,暂时先不改了!! 两天之后... 测试B:我在测另一个需求时发现了这个问题,是不是bug? 我:e ...

  2. Iocomp .NET WinForm Bug Fix

    先说明:是否官方bug还是故意在试用版设置的坑,经过测试有几个组件是不显示的,只有黑屏莫的底色,,,经过朋友测试后,我动手修正它,,,,578867473不管官方的原始bug或是故意的坑也罢,总之修正 ...

  3. 【Bug Fix】Error : Can#39;t create table #39;moshop_1.#sql-534_185#39; (errno: 150)

    运行alter操作, alter table xx_shop_info add index FK9050F5D83304CDDC (shop_area), add constraint FK9050F ...

  4. 【BUG FIX】Dnsmasq针对本地域名无法解析

    背景 自己在本地测试的时候,云解析了一个test域名到192.168.251.x,然而一直无法访问,找不到dns. 最终整条链路所有机器挨个dig. 发现在dig网关53端口时,无数据返回,但是dig ...

  5. [Bug FIX]安装 account_check_writing模块后采购收据打印报错的问题

    大写金额没填报错 修改:report_check.xml文件,把<span t-esc="fill_stars(o.amount_in_word)"/>一行替换为 &l ...

  6. Flutter iOS输入法 Bug Fix 记录

    前言 该文章只记录与工作中碰到的问题,Flutter 版本为 1.2.6 .有更多解决办法欢迎讨论学习. 背景 产品想要在商品搜索界面实现实时搜索.用户在输入商品名称的时候 就自动搜索商品信息. 问题 ...

  7. 如何动态改变audio的播放的src

    如何动态改变audio的播放的src 一.总结 一句话总结:js方式在请求外部网站的时候行,php方式在请求内外部资源都行.因为php走在js前面,所以问题可以从php方面想办法. 1.如何使用js控 ...

  8. 代码发芽网更新 - 界面清晰、支持论坛(Discuz!)、一键复制HTML/BBcode

    接上篇:代码发芽网 - 代码高亮 - 添加了22个流行的vim配色主题 继续增强内功. 代码发芽网 ( http://www.fayaa.com/code/ )简介: 1. 无需插件支持blog代码高 ...

  9. zz代码发芽网更新 - 界面清晰、支持论坛(Discuz!)、一键复制HTML/BBcode

    作者:半瓶墨水 链接:http://www.2maomao.com/blog/code-fayaa-update-20080724/ 接上篇:代码发芽网 - 代码高亮 - 添加了22个流行的vim配色 ...

最新文章

  1. [hdu4333]Revolving Digits
  2. python模式匹配算法_详解Python 最短匹配模式
  3. Tiktok代运营才是跨境卖家的未来?别再错过这个风口了!
  4. 代码修改及模型复查 12-6
  5. 大数据时代背景下智能工厂的能源管理系统
  6. swfobject java_[Java教程]swfobject.js视频播放插件
  7. 记一次使用verdaccio 搭建本地私有npm服务器
  8. 中国熊果苷市场运营效益及投资盈利预测报告(新版)2022-2027年
  9. javaSE I/O流(一)—— File类
  10. UI设计师和美工有哪些区别?
  11. audio_policy.conf文件:AUDIO_DEVICE_IN_REMOTE_SUBMIX含义
  12. c语言深度剖析(2)—有符号与无符号
  13. 微信小程序——获取openid
  14. 2018计算机网络MOOC第一章作业1
  15. Sign in with Apple(object-c) 从开发者后台到服务端验证
  16. 南京大学声学基础(第三版)杜功焕第二章(未完结)
  17. 通达信交易dll接口协议
  18. CyanogenMod 表示不会推出基于预览版 Android L 的CM ROM
  19. 【综述阅读】Pre-trained Language Models for Text Generation: A Survey
  20. 怎么制作真人qq秀_QQ想用换装产品留住年轻人,弄来弄去还是QQ秀那一套

热门文章

  1. 计算机开机加载后进入不了xp,电脑开机启动后到xp画面后不断自动重启解决方法...
  2. (转)linux内存管理之伙伴系统(内存分配)
  3. [转]UAP studio基础使用技巧
  4. python 网页设计实践报告_网页设计实习报告4000字
  5. python发送短信每天有限额吗_发送短信如何限制1小时内最多发送11条短信
  6. 图形验证码+短信验证码【Java应用实例】
  7. 高通ATHEROS AR93XX AP无线驱动介绍2
  8. 22考研:考取985、211名校的忠告!
  9. selenium实战-同步网易云音乐歌单到qq音乐
  10. DIV+CSS基础教程笔记