基于Dragonboard 410c的音频处理跟踪
来源:互联网 发布:淘宝允许好评返现了 编辑:程序博客网 时间:2024/06/08 14:39
在上篇博客中抛出了一个有待解决的问题,简单描述一下就是:音频输出通道是HDMI时,wav和mp3格式的音频文件都可以播放并且有声音输出,但是切换到speaker通道输出时,wav格式的音频文件有声音输出,mp3格式的音频文件居然没有声音输出。为了找到产生问题的原因和解决方法,接下来将对音频的处理代码进行跟踪。资料是查问题很好的帮手,首先看一下硬件手册关于音频的部分。![这里写图片描述](http://img.blog.csdn.net/20170908112241490?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc19qYXNvbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)(实在是不好意思,用MarkDown插入图片,插入的总是路径,就是不显示图片,找了几个解决方法,换了几个浏览器登录也不可以,切换到html编辑后,原内容不会复制过去,后面找到办法再添加图片。)这里在APQ8016中内置了MIPI转DSI的4线接口用来支持HDMI的输出,并且添加了一个DSI转HDMI的芯片-ADV7533,我们可以通过i2c3来控制这个芯片。那么音频是如何输出的呢,这里有个i2s2接口是用来支持音频输出的。既然图在这了,就顺便说一下高速接口和HDMI的切换,这里有个复用设备-FSA644UCX,它的作用就是对通道进行切换,但是高速接口和HDMI是不能同时工作的。这里有个GPIO_32控制的“DSI_SW_SEL_APQ”,当它为“0”时,通过HDMI输出,当它为“1”时,通过高速接口输出。接下来看一下相关代码,在kernel/arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi里面:
i2c@78b8000 { /* BLSP1 QUP4 */ /* DSI_TO_HDMI I2C configuration */ adv7533@39 { compatible = "adv7533"; reg = <0x39>; adv7533,video-mode = <3>; /* 3 = 1080p */ adv7533,main-addr = <0x39>; adv7533,cec-dsi-addr = <0x3C>; adv7533,audio = <1>; pinctrl-names = "pmx_adv7533_active","pmx_adv7533_suspend"; pinctrl-0 = <&adv7533_int_active &adv7533_hpd_int_active &adv7533_switch_active>; pinctrl-1 = <&adv7533_int_suspend &adv7533_hpd_int_suspend &adv7533_switch_suspend>; adv7533,irq-gpio = <&msm_gpio 31 0x2002>; adv7533,hpd-irq-gpio = <&msm_gpio 20 0x2003>; adv7533,switch-gpio = <&msm_gpio 32 0x0>; }; };
我们可以看到上面描述的控制。音频输出控制:adv7533,audio = <1>;
高速接口输出和HDMI输出切换控制:adv7533,switch-gpio = <&msm_gpio 32 0x0>;
我在代码里将音频输出禁用:adv7533,audio = <0>;
然后重新编译并烧写boot.img,播放一段音频试了试,发现wav和mp3格式的音频文件都有声音输出,而且声音的输出通道也不是HDMI,是按照硬件原理图自己连接的speaker。这个修改相对于上篇博客中写的修改方法要好的多,即简单又不存在播放mp3音频文件没声音的问题
到此上篇博客中的问题三也被解决了,至于这个问题出现的原因,将会继续跟踪查找。
阅读全文
0 0
- 基于Dragonboard 410c的音频处理跟踪
- 基于Dragonboard 410c进行开发遇到的音频问题
- 基于Dragonboard 410c的PMIC简介
- 基于Dragonboard 410c的触摸屏调试
- 基于Dragonboard 410c的智能开关
- 基于Dragonboard 410c的mipi了解
- 基于Dragonboard 410c的camera调试
- 基于Dragonboard 410c的启动分析
- 基于DragonBoard 410c平台的移动图像监测系统
- 基于Dragonboard 410c的简单手型识别
- 基于DragonBoard 410c的家庭环境质量检测仪
- 基于Dragonboard 410c的 A路径搜索算法实现
- 基于Dragonboard 410c 的自动感应调色灯
- 基于Dragonboard 410c 的智能仪表预研
- 基于DragonBoard 410c的模拟魂斗罗游戏机
- 基于Dragonboard 410c的家庭共享云服务搭建
- 基于Dragonboard 410c的家庭共享服务架构设计
- 基于Dragonboard 410c的音乐储钱罐(一)
- 理解 Spring 定时任务的 fixedRate 和 fixedDelay 的区别
- 第十四篇 JS实现加减乘除 正则表达式
- windows 设置静态ip地址
- 小程序浮层滚动阻止window窗体滚动JS/CSS处理
- C语言基础 7 函数
- 基于Dragonboard 410c的音频处理跟踪
- Activity的透明背景度的设置
- 备受瞩目的“2017全球云计算大会”有哪些亮点值得关注?
- php 获取微信公众号access_token
- C# 枚举简析
- unicode和utf8编码详解
- 面试
- Linux定时任务Crontab命令
- ML编程作业: Linear Regression