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

方式一,修改psr 左右声道合并为右声道输出 将如下的配置Merge到芯片中 // PSKEY_DSP24 = Configuration&2270 =

方式一,修改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逻辑

 

相关的工具资料等,请到我的博客最下面的网盘链接中下载。