高通CSR QCC300x i2s和AudioCodec 输出切换
一. 以A2DP为例, 并仅分析SBC情况
lib库中的MusicConnectAudio函数
申请local_config内存, 初始化local_config参数
InitMultiChannelParams(&(local_config->mch_params));
决定采样频率DECODER->sink_type: A2DP音乐时参数是 AUDIO_SINK_AV
audioDecoderConnectInputSources(DECODER->sink_type, local_config)
//目标是连接所有的input source到合适的DSP port.
{
sources_t sources;sources = audioDecoderGetSources(sink_type);
//sources.source[0] = StreamSourceFromSink(decoder->media_sink); //A2DP 时候, 实际上只得到source[0], 并且来源于空中A2DP的media_sink.
generalConfiguration(localConfig);
configureSources(&sources);
audioDecodeConnectSources(&sources, sink_type, localConfig->content_protection);
VmalTransformRtpSbcDecode(sources->source[0], StreamKalimbaSink(GetDspPort(0)
));
//创建A2DP 空中source端到KalimbaSink端的实时流媒体转换.GetDspPort(0)=0;
connectBackChannel(sink_type, localConfig->codec_data);
}
以上, 主要是连接 A2DP空中的数据到StreamKalimbaSink(0), 并实时转换.
**
6. // Connect up DSP output ports to hardware sinks
audioDecodeConnectDspOutputs(&(local_config->mch_params));
函数实现:
{AudioOutputAddSourceOrPanic(StreamKalimbaSource(DSP_OUTPUT_PORT_PRI_LEFT), audio_output_primary_left);
//StreamKalimbaSource(port)意义为StreamSourceFromSink(StreamKalimbaSink(port));
// DSP_OUTPUT_PORT_PRI_LEFT 宏定义值为4, 后面的基本依次加1
// audio_output_primary_left 宏定义值为0
// AudioOutputAddSourceOrPanic(source, output)的意义是: state.sources[output] = source;AudioOutputAddSourceOrPanic(StreamKalimbaSource(DSP_OUTPUT_PORT_PRI_RIGHT), audio_output_primary_right);AudioOutputAddSourceOrPanic(StreamKalimbaSource(DSP_OUTPUT_PORT_SEC_LEFT), audio_output_secondary_left); AudioOutputAddSourceOrPanic(StreamKalimbaSource(DSP_OUTPUT_PORT_SEC_RIGHT), audio_output_secondary_right); AudioOutputAddSourceOrPanic(StreamKalimbaSource(DSP_OUTPUT_PORT_AUX_LEFT), audio_output_aux_left); AudioOutputAddSourceOrPanic(StreamKalimbaSource(DSP_OUTPUT_PORT_AUX_RIGHT), audio_output_aux_right); AudioOutputAddSourceOrPanic(StreamKalimbaSource(DSP_OUTPUT_PORT_SUB_WIRED), audio_output_wired_sub); AudioOutputConnectOrPanic(params);
}
bool AudioOutputConnectOrPanic(audio_output_params_t* params)
{forEachOutput(audio_out) //audio_out范围是 audio_output_primary_left ~ audio_output_max.{audio_sink = StreamAudioSink(getAudioHardwareType(audio_out),getAudioHardwareInstance(audio_out),getAudioHardwareChannel(audio_out));configureSink(audio_sink, audio_out, params); //设置sink采样率之类的参数.if (last_valid_sink){PanicFalse(SinkSynchronise(last_valid_sink, audio_sink)); //同步上次的sink} last_valid_sink = audio_sink;}/* Connect up each valid sink to its source and un-mute. Must happen after* synchronisation, hence the need for a second loop and duplicate checks.*/forEachOutput(audio_out){audio_sink = StreamAudioSink(getAudioHardwareType(audio_out),getAudioHardwareInstance(audio_out),getAudioHardwareChannel(audio_out));StreamConnect(state.sources[audio_out], audio_sink);//这里是关键代码 }
}
通过以上分析, 得知可以实现I2S和CODEC选择输出. 具体方法是通过发送不同的串口指令,更新配置,最后对应到以上audio_sink的变更, 就可以切换选择I2S输出或者是DAC codec输出了.
高通CSR QCC300x i2s和AudioCodec 输出切换相关推荐
- 高通与安卓水火不容 Android音频系统缺陷测评
导读:高通与安卓它们都存在同样的问题.是什么原因导致高通Snapdragon全系列都会存在如此问题?它会带来怎样的影响?与Android搭配的高通产品为什么问题会加重?我们来一一分析. Qualcom ...
- Qualcomm 高通芯片组与Android音频系统缺陷测评分析
转自:http://www.soomal.com/doc/10100002164.htm Qualcomm高通公司是目前Android智能手机上最为知名的ARM架构的处理器和芯片方案硬件提供商,高通公 ...
- 卖给高通之后的CSR的现状和未来
转眼之间,CSR已经嫁给高通两年了,养在深宫大院大小妾的CSR,到底过的怎么样呢? 从高通官网上查看的结果显示,CSR产品被分成了三类: A 传统的用在耳机音响的CSR86XX系列,这部分改动不大,就 ...
- 高通SDM450平台的LDO 输出与电压调节
开始之前,首先我们要知道什么是LDO?有什么作用?LDO调试需要调哪些? 什么是LDO,有什么作用? LDO为 低压线性稳压器,高通平台有多路LDO电压输出,以SDM450 为例 共有 LDO1~LD ...
- 高通平台printk输出log到串口
1.查看当前打印级别# cat /proc/sys/kernel/printk默认为:4 4 1 7注释:第一个参数表示控制台log Level,第二个参数表示printk默认的logLevel2.修 ...
- 数字音频接口(二) 高通平台MI2S总线调试
硬件平台:高通SM6125 基线代码:LA.UM.8.11.1.c1 git clone https://git.codelinaro.org/clo/la/platform/vendor/opens ...
- 【转载】高通msm8996平台的ASOC音频路径分析(基于androidN及linux3.1x)
高通msm8996平台的ASOC音频路径分析(基于androidN及linux3.1x) tags : msm8996 sound linux android 原文:高通msm8996平台的ASOC音 ...
- 一文讲懂图像处理中的低通、高通、带阻和带通滤波器
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 空间域和频域滤波器通常分为四种类型的滤波器--低通.高通.带阻和带 ...
- 最后期限已至,高通收购恩智浦全剧终!中国一刀切断高通物联网全局梦!
来源:物联网智库 摘要:没有一种商业模式可以永享特权.物联网时代,当专利和芯片两大支柱业务均受到剧烈冲击和威胁之下,如何创新以自救,正是考验高通全面战略能力的关键时刻,恩智浦是当前高通给出的最好答案. ...
最新文章
- 《数据库技术原理与应用教程》一3-5信息世界与逻辑模型
- 2018-03-02 Linux
- 计算机学业水平测试题及答案初中,初中信息技术学业水平考试试题30号试题.doc...
- C#下实现动态系统托盘图标
- java不同进程的相互唤醒_Java线程生命周期与状态切换
- iverilog命令选项解释
- vs2015移植linux编译,windows平台移植(原linux项目)时,用vs2015开发,碰到的问题及处理方案记录...
- 中兴java笔试_最新中兴Java语言笔试真题及答案
- 一份很棒的外设驱动库(基于STM32F4)
- 搜狗推微信公众平台搜索 可搜公众号与文章
- ps怎么清屏_学会ps这几个功能,刷屏朋友圈的照片随手捏来,创意无处不在
- 基于微信奶共享会议室预约小程序系统设计与实现 开题报告
- dnf剑魂buff等级上限_DNF体验服快讯—剑魂加入25开关/25仔变34仔/国庆版本内容前瞻...
- matlab复数开偶次方根,运用复数1的n次方根巧解一类复数方程
- 使用长焦镜头拍摄VR全景的技巧
- 国际会计准则IAS 和 IFRS
- source insight如何设置背景
- 毕业三年,快速升职加薪,带领数十人的技术团队,我是怎么做到的?
- 【牛客网面经整理】20200831小米一面
- 自动化测试之邮件模板