谁知道,这是大多数Android(ARM)设备上的默认PCM格式吗?

2 channels
16 bit
Little Endian

基本的“tinyalsa”可以处理
SNDRV_PCM_FORMAT_S32_LE
SNDRV_PCM_FORMAT_S8
SNDRV_PCM_FORMAT_S24_LE
SNDRV_PCM_FORMAT_S16_LE

但我无法想到Android使用了不同的配置(?)。

Little Endian肯定会在ARM设备上使用。

那两个 channel 呢?我发现无法播放单声道音频,因此我认为它总是转换为2个声道。

有支持多 channel 的设备吗?

我对这些东西很陌生。

在此先感谢您的帮助!

最佳答案

总的来说,我会说16位小端,是的。通道数取决于应用程序的要求。尽管某些设备将以立体声配置运行部分/全部输出线程,类似于您在测试中发现的。如果您要输出到单声道接收器(例如,许多设备只有一个扬声器),则通常会通过模拟编解码器或DSP将其混回到单声道。


许多设备不使用libtinyalsa。它们具有自己的内核空间ALSA驱动程序用户空间接口(interface)。例如,最近的高通平台使用其自己的libalsa-intf进行大多数播放,而libtinyalsa仅用于USB音频播放(可能还包括A2DP)。

就多通道支持而言,如果写入单声道/立体声接收器(即在内部扬声器或3.5mm耳机上),则可能会下混为立体声,可能是借助虚拟效果来产生假象。环绕。真正的环绕声将限于支持它的接收器,即HDMI / MHL,甚至可能是USB。应该注意的是,即使在HDMI / MHL情况下,某些设备也会下混为立体声。

07-28 03:25