我已经使用C语言为专有的实时操作系统(RTOS)开发了同步音频接口(interface)(SAI)驱动程序。我的驱动程序配置为向放大器输出左右声道数据(I2S)。但是,由于连接的放大器是单声道,因此它仅将左或右声道音频数据输出到扬声器。现在,我有一个立体声PCM 16位音频数据文件,我想以某种方式在我的应用程序中混合左右声道音频数据,并将其发送到SAI驱动程序中的左右声道。这样,我将能够在连接到单声道放大器的扬声器上以单声道的形式播放组合的立体声音频数据。

谁能建议我最好的解决方案是什么?

最佳答案

如评论中所述,将两个立体声声道混合成一个单声道的通常方法是将每个声道的样本除以2并相加。

C中的示例,例如:

int left_channel_sample, right_channel_sample;
int mono_channel = (left_channel_sample / 2) + ( right_channel_sample / 2);

您提到了一些编码的驱动程序,对其进行了修改或添加了一些新功能。鉴于您的问题一塌糊涂,真的无法提供更多帮助...

10-08 13:57