[Bug Fix]Messy Audio语音电话不清晰问题
早在第一家公司的时候,有一个印象深刻的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) |
上一篇:没有了
下一篇:浮点运算是怎么实现的?
- shell中字符串操作
- shell中的特殊字符
- linux设备驱动归纳总结...
- stagefright与opencore对比
- 关于java中的“错误:找不到或...
- 谁能够帮我解决LINUX 2.6 10...
- 现在的博客积分不会更新了吗?...
- shell怎么读取网页内容...
- ssh等待连接的超时问题...
- curl: (56) Recv failure: Con...
[Bug Fix]Messy Audio语音电话不清晰问题相关推荐
- BUG FIX有感-深入了解TextView的行间距计算逻辑
测试A:你这个横幅有问题啊!正常不是这样显示的... 我:这个不好改啊,之前就发现了,这是偶现的问题,暂时先不改了!! 两天之后... 测试B:我在测另一个需求时发现了这个问题,是不是bug? 我:e ...
- Iocomp .NET WinForm Bug Fix
先说明:是否官方bug还是故意在试用版设置的坑,经过测试有几个组件是不显示的,只有黑屏莫的底色,,,经过朋友测试后,我动手修正它,,,,578867473不管官方的原始bug或是故意的坑也罢,总之修正 ...
- 【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 ...
- 【BUG FIX】Dnsmasq针对本地域名无法解析
背景 自己在本地测试的时候,云解析了一个test域名到192.168.251.x,然而一直无法访问,找不到dns. 最终整条链路所有机器挨个dig. 发现在dig网关53端口时,无数据返回,但是dig ...
- [Bug FIX]安装 account_check_writing模块后采购收据打印报错的问题
大写金额没填报错 修改:report_check.xml文件,把<span t-esc="fill_stars(o.amount_in_word)"/>一行替换为 &l ...
- Flutter iOS输入法 Bug Fix 记录
前言 该文章只记录与工作中碰到的问题,Flutter 版本为 1.2.6 .有更多解决办法欢迎讨论学习. 背景 产品想要在商品搜索界面实现实时搜索.用户在输入商品名称的时候 就自动搜索商品信息. 问题 ...
- 如何动态改变audio的播放的src
如何动态改变audio的播放的src 一.总结 一句话总结:js方式在请求外部网站的时候行,php方式在请求内外部资源都行.因为php走在js前面,所以问题可以从php方面想办法. 1.如何使用js控 ...
- 代码发芽网更新 - 界面清晰、支持论坛(Discuz!)、一键复制HTML/BBcode
接上篇:代码发芽网 - 代码高亮 - 添加了22个流行的vim配色主题 继续增强内功. 代码发芽网 ( http://www.fayaa.com/code/ )简介: 1. 无需插件支持blog代码高 ...
- zz代码发芽网更新 - 界面清晰、支持论坛(Discuz!)、一键复制HTML/BBcode
作者:半瓶墨水 链接:http://www.2maomao.com/blog/code-fayaa-update-20080724/ 接上篇:代码发芽网 - 代码高亮 - 添加了22个流行的vim配色 ...
最新文章
- [hdu4333]Revolving Digits
- python模式匹配算法_详解Python 最短匹配模式
- Tiktok代运营才是跨境卖家的未来?别再错过这个风口了!
- 代码修改及模型复查 12-6
- 大数据时代背景下智能工厂的能源管理系统
- swfobject java_[Java教程]swfobject.js视频播放插件
- 记一次使用verdaccio 搭建本地私有npm服务器
- 中国熊果苷市场运营效益及投资盈利预测报告(新版)2022-2027年
- javaSE I/O流(一)—— File类
- UI设计师和美工有哪些区别?
- audio_policy.conf文件:AUDIO_DEVICE_IN_REMOTE_SUBMIX含义
- c语言深度剖析(2)—有符号与无符号
- 微信小程序——获取openid
- 2018计算机网络MOOC第一章作业1
- Sign in with Apple(object-c) 从开发者后台到服务端验证
- 南京大学声学基础(第三版)杜功焕第二章(未完结)
- 通达信交易dll接口协议
- CyanogenMod 表示不会推出基于预览版 Android L 的CM ROM
- 【综述阅读】Pre-trained Language Models for Text Generation: A Survey
- 怎么制作真人qq秀_QQ想用换装产品留住年轻人,弄来弄去还是QQ秀那一套
热门文章
- 计算机开机加载后进入不了xp,电脑开机启动后到xp画面后不断自动重启解决方法...
- (转)linux内存管理之伙伴系统(内存分配)
- [转]UAP studio基础使用技巧
- python 网页设计实践报告_网页设计实习报告4000字
- python发送短信每天有限额吗_发送短信如何限制1小时内最多发送11条短信
- 图形验证码+短信验证码【Java应用实例】
- 高通ATHEROS AR93XX AP无线驱动介绍2
- 22考研:考取985、211名校的忠告!
- selenium实战-同步网易云音乐歌单到qq音乐
- DIV+CSS基础教程笔记