Поделиться через


структура KSAUDIO_CHANNEL_CONFIG (ksmedia.h)

Структура KSAUDIO_CHANNEL_CONFIG определяет конфигурацию каналов в формате данных аудиопотока.

Синтаксис

typedef struct {
  LONG ActiveSpeakerPositions;
} KSAUDIO_CHANNEL_CONFIG, *PKSAUDIO_CHANNEL_CONFIG;

Члены

ActiveSpeakerPositions

Указывает количество каналов и назначение этих каналов позициям говорящего. Этот элемент представляет собой битовую маску, в которой каждый бит в маске соответствует определенной позиции говорящего. Если задан бит маски, звуковой поток содержит канал, назначенный позиции динамика, которую представляет бит маски. Количество каналов в потоке получается путем подсчета количества каналов, отображаемых в битовой маске. Дополнительные сведения см. в разделе "Примечания".

Комментарии

Эта структура используется для задания или получения значения данных для свойства KSPROPERTY_AUDIO_CHANNEL_CONFIG .

В следующей таблице показаны биты флагов, определенные для элемента ActiveSpeakerPositions .

Положение говорящего Бит флага
SPEAKER_FRONT_LEFT 0x1
SPEAKER_FRONT_RIGHT 0x2
SPEAKER_FRONT_CENTER 0x4
SPEAKER_LOW_FREQUENCY 0x8
SPEAKER_BACK_LEFT 0x10
SPEAKER_BACK_RIGHT 0x20
SPEAKER_FRONT_LEFT_OF_CENTER 0x40
SPEAKER_FRONT_RIGHT_OF_CENTER 0x80
SPEAKER_BACK_CENTER 0x100
SPEAKER_SIDE_LEFT 0x200
SPEAKER_SIDE_RIGHT 0x400
SPEAKER_TOP_CENTER 0x800
SPEAKER_TOP_FRONT_LEFT 0x1000
SPEAKER_TOP_FRONT_CENTER 0x2000
SPEAKER_TOP_FRONT_RIGHT 0x4000
SPEAKER_TOP_BACK_LEFT 0x8000
SPEAKER_TOP_BACK_CENTER 0x10000
SPEAKER_TOP_BACK_RIGHT 0x20000

Каждый формат звуковых данных содержит каналы для одной или нескольких предыдущих позиций говорящего. Число каналов просто равно количеству ненулевых битов флага в элементе ActiveSpeakerPositions .

Относительные позиции каналов в каждом блоке звуковых данных всегда соответствуют тому же относительному порядку, что и биты флагов в предыдущей таблице. Например, если ActiveSpeakerPositions содержит значение 0x00000033, формат определяет четыре аудиоканала, которые назначаются для воспроизведения на передний левый, передний правый, задний и правый динамики соответственно. Данные канала должны чередуться в этом порядке в каждом блоке. (Это KSAUDIO_SPEAKER_QUAD конфигурация, которая отображается во второй из двух следующих таблиц.)

В следующей таблице показаны конфигурации динамиков, определенные для DVD.

Конфигурация Положение говорящего
KSAUDIO_SPEAKER_GROUND_FRONT_LEFT SPEAKER_FRONT_LEFT
KSAUDIO_SPEAKER_GROUND_FRONT_CENTER SPEAKER_FRONT_CENTER
KSAUDIO_SPEAKER_GROUND_FRONT_RIGHT SPEAKER_FRONT_RIGHT
KSAUDIO_SPEAKER_GROUND_REAR_LEFT SPEAKER_BACK_LEFT
KSAUDIO_SPEAKER_GROUND_REAR_RIGHT SPEAKER_BACK_RIGHT
KSAUDIO_SPEAKER_TOP_MIDDLE SPEAKER_TOP_CENTER
KSAUDIO_SPEAKER_SUPER_WOOFER SPEAKER_LOW_FREQUENCY

В следующей таблице показаны конфигурации динамиков, определенные для DirectSound.

Конфигурация Позиции говорящего
KSAUDIO_SPEAKER_DIRECTOUT 0 (без динамиков)
KSAUDIO_SPEAKER_MONO SPEAKER_FRONT_CENTER
KSAUDIO_SPEAKER_STEREO SPEAKER_FRONT_LEFT
SPEAKER_FRONT_RIGHT
KSAUDIO_SPEAKER_QUAD SPEAKER_FRONT_LEFT
SPEAKER_FRONT_RIGHT
SPEAKER_BACK_LEFT
SPEAKER_BACK_RIGHT
KSAUDIO_SPEAKER_SURROUND SPEAKER_FRONT_LEFT
SPEAKER_FRONT_RIGHT
SPEAKER_FRONT_CENTER
SPEAKER_BACK_CENTER
KSAUDIO_SPEAKER_5POINT1 SPEAKER_FRONT_LEFT
SPEAKER_FRONT_RIGHT
SPEAKER_FRONT_CENTER
SPEAKER_LOW_FREQUENCY
SPEAKER_BACK_LEFT
SPEAKER_BACK_RIGHT
KSAUDIO_SPEAKER_5POINT1_SURROUND SPEAKER_FRONT_LEFT
SPEAKER_FRONT_RIGHT
SPEAKER_FRONT_CENTER
SPEAKER_LOW_FREQUENCY
SPEAKER_SIDE_LEFT
SPEAKER_SIDE_RIGHT
KSAUDIO_SPEAKER_7POINT1 SPEAKER_FRONT_LEFT
SPEAKER_FRONT_RIGHT
SPEAKER_FRONT_CENTER
SPEAKER_LOW_FREQUENCY
SPEAKER_BACK_LEFT
SPEAKER_BACK_RIGHT
SPEAKER_FRONT_LEFT_OF_CENTER
SPEAKER_FRONT_RIGHT_OF_CENTER
KSAUDIO_SPEAKER_7POINT1_SURROUND SPEAKER_FRONT_LEFT
SPEAKER_FRONT_RIGHT
SPEAKER_FRONT_CENTER
SPEAKER_LOW_FREQUENCY
SPEAKER_BACK_LEFT
SPEAKER_BACK_RIGHT
SPEAKER_SIDE_LEFT
SPEAKER_SIDE_RIGHT

Конфигурация KSAUDIO_SPEAKER_7POINT1 динамиков устарела и больше не поддерживается.

В предыдущей таблице константная KSAUDIO_SPEAKER_DIRECTOUT имеет нулевое значение, что означает, что каналу в многоканальном потоке не назначаются позиции говорящего. Например, нулевой канал может представлять ударные, канал 1 — трубу, канал 2 — голос и т. д. В этой конфигурации каналы во входном потоке выводятся непосредственно на оборудование без изменений и не интерпретируются как положение говорящего. Дополнительные сведения см. в разделе Конфигурация DSSPEAKER_DIRECTOUT говорящего.

Конфигурация говорящего для формата 5.1-канального окружения определяется константой, KSAUDIO_SPEAKER_5POINT1_SURROUND в предыдущей таблице. На следующем рисунке показан геометрический макет динамиков, на котором показаны положения переднего левого, переднего правого, переднего, левого и бокового правого динамика. На рисунке опускается низкочастотный динамик, так как он является ненаправленным.

Схема, иллюстрирующая конфигурацию 5.1-канального окружного динамика; низкочастотный динамик не отображается.

В этом примере в следующем списке показан порядок шести каналов в каждом блоке звуковых данных:

  1. SPEAKER_FRONT_LEFT

  2. SPEAKER_FRONT_RIGHT

  3. SPEAKER_FRONT_CENTER

  4. SPEAKER_LOW_FREQUENCY

  5. SPEAKER_SIDE_LEFT

  6. SPEAKER_SIDE_RIGHT

Для формата PCM с размером 16-разрядной выборки каждый блок звуковых данных занимает 12 байт, которые упорядочены, как показано в следующей таблице.

Byte Звуковые данные
0 Передний левый (8 LSB)
1 Передний левый (8 MSB)
2 Передняя правая (8 LSB)
3 Передний правый (8 MSB)
4 Front Center (8 LSB)
5 Front Center (8 MSB)
6 Low Freq (8 LSB)
7 Low Freq (8 MSB)
8 Боковая слева (8 LSB)
9 Боковая слева (8 MSB)
10 Боковая правая (8 LSB)
11 Боковая справа (8 MSB)

Требования

Требование Значение
Заголовок ksmedia.h (включая Ksmedia.h)

См. также раздел

KSPROPERTY_AUDIO_CHANNEL_CONFIG

WAVEFORMATEXTENSIBLE