qcc300x笔记之左右声道合并输出(九)

2023-10-12 12:30

本文主要是介绍qcc300x笔记之左右声道合并输出(九),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

方式一,修改psr

  • 左右声道合并为右声道输出

将如下的配置Merge到芯片中

// PSKEY_DSP24 = Configuration
&2270 = 2270 2271 FF00 0000
// PSKEY_DSP25 = Configuration
&2271 = 2271 0000 777B 9000 0020 0000 0000
  • 左右声道合并为左声道输出

将如下的配置Merge到芯片中

// PSKEY_DSP24 = Configuration
&2270 = 2270 2271 FF00 0000
// PSKEY_DSP25 = Configuration
&2271 = 2271 0000 787C 9000 2000 0000 0000

方式二,通过调音工具修改

       打开调音工具,adk根目录->tools->bin-> UniversalFrontEnd.exe

选择music manager,并连接dsp

播放音乐的情况下,点击上图中1位置,然后选择cross over。调好参数之后,点2可以将参数下载到芯片

如上图,我要使用右声道合并输出,则将right置为0,left置为-INF。左声道反之。

 

方式三,修改工程

尝试了一些方法,暂未成功,后续成功了在更新

虽然没有成功,但是关于output的部分的逻辑看懂了一些,这里简单的说明一下

 

Audio output框架、逻辑分析

框架如下图所示:

代码逻辑分析:

外部音源编解码之后硬件输出逻辑

/*app处理与dsp通讯之间的消息*/
audioDecodeHandleDspInternalMessage/*该消息是从dsp发上来的,dsp层封装起来看不到,猜测应该是dsp中准备好之后,发消息给上层,请求配置将要处理的数据的参数*/case :MUSIC_PARAMS_LOADED_MSGcsrA2dpDecoderDspLoadedAndConfiguredMusicConnectAudio()/*将dsp的端口与音频源连接,音频源可参考枚举AUDIO_SINK_T的定义,此时音频源做src,dsp做sink*/audioDecoderConnectInputSources(sink_type, localConfig)audioDecodeConnectSources(sources, sink_type, content_protection)/*将dsp的端口与硬件输出端口对应,dsp可参考DSP_OUTPUT_PORT_PRI_LEFT的定义,硬件输出端口参考audio_output_t定义*/audioDecodeConnectDspOutputsAudioOutputAddSourceOrPanic(source,output);AudioOutputConnectOrPanicconnect()/*将指定的src与sink连接起来*/StreamConnect()

prompts与tone硬件输出逻辑                       

/*UI层提供的播放提示音的接口*/
AudioPlayAudioPrompt
AudioPlayTonehandleAudioMessagecase :AUDIO_PLUGIN_PLAY_AUDIO_PROMPT_MSGCsrVoicePromptsPluginPlayPhrasecase :AUDIO_PLUGIN_PLAY_TONE_MSGCsrVoicePromptsPluginPlayToneVoicePromptsDspPlay/*需要使用dsp,则连接到对应的dsp端口*/playStandaloneconnectPromptSourceToDsp/*不使用额外的dsp,直接播放,连接到硬件输出端口*/VoicePromptsNoDspPlayAudioOutputConnectStereoSourceAudioOutputConnect(params);connect()/*将指定的src与sink连接起来*/StreamConnect()

上面只贴出了了关键部分的接口,详细接口请参考实际SDK逻辑

 

相关的工具资料等,请到我的博客<qcc300x开发调试笔记>最下面的网盘链接中下载。

这篇关于qcc300x笔记之左右声道合并输出(九)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/195830

相关文章

Python中合并列表(list)的六种方法小结

《Python中合并列表(list)的六种方法小结》本文主要介绍了Python中合并列表(list)的六种方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录一、直接用 + 合并列表二、用 extend() js方法三、用 zip() 函数交叉合并四、用

利用Python实现Excel文件智能合并工具

《利用Python实现Excel文件智能合并工具》有时候,我们需要将多个Excel文件按照特定顺序合并成一个文件,这样可以更方便地进行后续的数据处理和分析,下面我们看看如何使用Python实现Exce... 目录运行结果为什么需要这个工具技术实现工具的核心功能代码解析使用示例工具优化与扩展有时候,我们需要将

使用Java将实体类转换为JSON并输出到控制台的完整过程

《使用Java将实体类转换为JSON并输出到控制台的完整过程》在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用JSON格式,用Java将实体类转换为J... 在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用j

Python实现获取带合并单元格的表格数据

《Python实现获取带合并单元格的表格数据》由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,所以本文我们就来聊聊如何使用Python实现获取带合并单元格的表格数据吧... 由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,现将将封装成类,并通过调用list_exc

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Python实现合并与拆分多个PDF文档中的指定页

《Python实现合并与拆分多个PDF文档中的指定页》这篇文章主要为大家详细介绍了如何使用Python实现将多个PDF文档中的指定页合并生成新的PDF以及拆分PDF,感兴趣的小伙伴可以参考一下... 安装所需要的库pip install PyPDF2 -i https://pypi.tuna.tsingh

python多种数据类型输出为Excel文件

《python多种数据类型输出为Excel文件》本文主要介绍了将Python中的列表、元组、字典和集合等数据类型输出到Excel文件中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一.列表List二.字典dict三.集合set四.元组tuplepython中的列表、元组、字典

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring

使用Apache POI在Java中实现Excel单元格的合并

《使用ApachePOI在Java中实现Excel单元格的合并》在日常工作中,Excel是一个不可或缺的工具,尤其是在处理大量数据时,本文将介绍如何使用ApachePOI库在Java中实现Excel... 目录工具类介绍工具类代码调用示例依赖配置总结在日常工作中,Excel 是一个不可或缺的工http://

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4