最近碰到一多通道的PCM,几个主流的Player都不能发出声音,为了让自己的播放器能支持这个格式,所以研究了一下, 收集一资料转贴一下http://msdn.microsoft.com/zh-cn/windows/hardware/gg463006

KSDATAFORMAT_SUBTYPE_PCM:

采用 5.1 格式的 6 声道
以下WAVEFORMATPCMEX结构可以指定为解码器针对 5.1 扬声器布局生成音频流的输出结构。
  1. WAVEFORMATPCMEX     waveFormatPCMEx;
  2. waveFormatPCMEx.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
  3. waveFormatPCMEx.Format.nChannels = 6;
  4. waveFormatPCMEx.Format.nSamplesPerSec = 48000L;
  5. waveFormatPCMEx.Format.nAvgBytesPerSec = 864000L; // Compute using nBlkAlign * nSamp/Sec 
  6. waveFormatPCMEx.Format.nBlockAlign = 18;
  7. waveFormatPCMEx.Format.wBitsPerSample = 24//Container has 3 bytes waveFormatPCMEx.Format.cbSize = 22;
  8. waveFormatPCMEx.wValidBitsPerSample = 20;  // Top 20 bits have data
  9. waveFormatPCMEx.dwChannelMask = KSAUDIO_SPEAKER_5POINT1;
  10.                              // SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT |
  11.                              // SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY |
  12.                              // SPEAKER_BACK_LEFT  | SPEAKER_BACK_RIGHT
  13. waveFormatPCMEx.SubFormat =  KSDATAFORMAT_SUBTYPE_PCM;  // Specify PCM

三字节音频数据的两个声道按照以下方式放置到内存中,并且指向该内存的指针存储在WAVEHDR结构的lpData成员中。

字节 1 - 声道 1,左前,低等字节,只有顶部四个位为有效数据位
字节 2 - 声道 1,左前,中等字节,全部是有效数据
字节 3 - 声道 1,左前,高等字节,全部是有效数据
字节 4 - 声道 2,右前,低序位字节,顶部四个位为有效数据位
字节 5 - 声道 2,右前,中等字节,全部是有效数据
字节 6 - 声道 2,右前,高等字节,全部是有效数据
字节 7 - 声道 3,中前,低序位字节,只有顶部四个位为有效数据位
字节 8 - 声道 3,中前,中等字节,全部是有效数据
字节 9 - 声道 3,中前,高等字节,全部是有效数据
字节 10 - 声道 4,低频、低序位字节,顶部四个字节为有效数据位
字节 11 - 声道 4,低频,中等字节,全部是有效数据
字节 12 - 声道 4,低频、高等字节,全部是有效数据
字节 13 - 声道 5,左后,低序位字节,只有顶部四个位为有效数据位
字节 14 - 声道 5,右后,中等字节,全部是有效数据
字节 15 - 声道 5,左后,高等字节,全部是有效数据
字节 16 - 声道 6,右后,低序位字节,顶部四个位为有效数据位
字节 17 - 声道 6,右后,中等字节,全部是有效数据
字节 18 - 声道 6,右后,高等字节,全部是有效数据

字节 19 - 声道 1,左前,低等字节,顶部四个位为有效数据位,样本 2
字节 20 - 声道 1,左前,中等字节,全部是有效数据,样本 2 等

相关文章:

  • 2022-12-23
  • 2021-11-12
  • 2021-08-15
  • 2021-09-22
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-05
  • 2021-12-12
  • 2021-04-10
  • 2021-12-06
  • 2021-05-14
  • 2022-12-23
相关资源
相似解决方案