谁知道,这是大多数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情况下,某些设备也会下混为立体声。