一个hdmi音频问题的debug
来源:互联网 发布:c语言流程图生成器 编辑:程序博客网 时间:2024/04/26 05:24
问题描述:
在用hdmi做输出时,播放音乐,声音一卡一卡的。
打开logcat可了看:
没次卡时都会打印像下面的log
W/audio_hw_primary( 2194): do_out_standby... 1074415168
I/OMXPlayer( 2194): Stop Player.
W/audio_hw_primary( 2194): card 0, port 0 device 0x2
W/audio_hw_primary( 2194): rate 44100, channel 2 period_size 0xc0
从log看是声卡被不断地切换。
那声卡为什么会切换呢? 根据android的特点,应该是检测到了别的比hdmi优先级更高的设备。怀疑是检测到了headphone插入(因为不可能检测到蓝牙 usb什么的)。
那检测到headphone有什么条件?看原理图:
默认是micbias1应该是高,没插入耳机是gpio6_1和micbias1是连在一起的,gpio6_1为高,当插入耳机时gpio6_1与micbias1分开,gpio6_1为低就检测到耳机插入。
现在耳机没有插入而检测到耳机,那只能是micbias1为低。用示波器量,micbias1会不断地高低高低的变化。
micbias1电源的开启:查看该audio芯片是specf,和两个寄存器有2个。最终发现会在下面函数关掉其中一个:
static int rt3261_set_bias_level(struct snd_soc_codec *codec,
enum snd_soc_bias_level level)
{
....
case SND_SOC_BIAS_STANDBY:
snd_soc_update_bits(codec, RT3261_PWR_ANLG2,
RT3261_PWR_MB1 | RT3261_PWR_MB2, 0); //这里把micbias1的电源关掉了。
...
}
但为什么会进这里?
android启动时默认会打开primary的audio设备(本机为rt3261),但是如果没有声音输出会然设备进入standby模式。
在用hdmi做输出时,打开hdmi音频那rt3261就进入standby,关micbias1电源,系统误以为检测到headphone,切换到rt3261打开micbias1,以为headphone拔出,就再切换到hdmi。这样声音就一卡一卡的了。
- 一个hdmi音频问题的debug
- 海思3531的(HDMI和MIC)音频问题
- Debug一个Segmentation fault的问题
- 如何debug一个问题的方法经验之谈
- S5PV210 WINCE HDMI全屏显示的问题
- HDMI输入分辨率转换碰到的问题
- 解决odroid-XU3的HDMI输出问题
- VC++中DEBUG的一个无法类型转化的问题
- myeclipse中使用debug时遇到的一个小问题
- 麻雀虽小,五脏俱全:DEBUG一个奇怪的小问题
- HDMI费用问题
- Android2.2 HDMI 的声音输出的问题
- ubuntu上的HDMI数据线带来的音频视频问题
- 解决树莓派2 HDMI输出的闪屏问题
- ADI官方 HDMI IP core使用的问题
- myeclipse的Debug问题。
- 关于debug的问题
- 一个播放音频的例子
- 全国假日办14年后被撤销 国务院旅游联席会议办接棒
- Always override hashCode when you override equals
- rails 导出 excel 格式 xls 和 csv
- Oracle数据库进程架构
- 前端开发平台搭建
- 一个hdmi音频问题的debug
- GitHub入门教程(二)- 使用前的配置
- sizeof的详尽计算结构体字节数方法
- ios 图片处理
- 服务器jsp推送
- [后缀数组+二分+rmq] hdu 5008 Boring String Problem
- WF-Mailer Fails to Send Email Notifications after cloning
- 获取window服务路径
- 【工具】MQ常用命令