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


Структура MPEG1WAVEFORMAT (mmreg.h)

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]

Структура MPEG1WAVEFORMAT описывает формат аудиоданных MPEG-1.

Синтаксис

typedef struct mpeg1waveformat_tag {
  WAVEFORMATEX wfx;
  WORD         fwHeadLayer;
  DWORD        dwHeadBitrate;
  WORD         fwHeadMode;
  WORD         fwHeadModeExt;
  WORD         wHeadEmphasis;
  WORD         fwHeadFlags;
  DWORD        dwPTSLow;
  DWORD        dwPTSHigh;
} MPEG1WAVEFORMAT;

Члены

wfx

Структура WAVEFORMATEX, содержащая сведения о звуковом формате. См. заметки.

fwHeadLayer

Задает звуковой слой MPEG, определяемый следующими константами:

Значение Значение
ACM_MPEG_LAYER1
Уровень 1
ACM_MPEG_LAYER2
Уровень 2
ACM_MPEG_LAYER3
Уровень 3
 

Некоторые потоки MPEG могут содержать кадры из нескольких слоев. Если да, объедините флаги с побитовой или.

dwHeadBitrate

Задает скорость в битах в секунду. Это значение дает фактическую скорость, а не код заголовка кадра MPEG. Если скорость является переменной или является нестандартной, задайте для этого поля значение 0.

fwHeadMode

Задает режим потоковой передачи, определяемый следующими константами:

Значение Значение
ACM_MPEG_STEREO
Stereo
ACM_MPEG_JOINTSTEREO
Совместная стерео
ACM_MPEG_DUALCHANNEL
Двухканальной
ACM_MPEG_SINGLECHANNEL
Один канал
 

Некоторые потоки MPEG могут содержать кадры с разными режимами. Если да, объедините флаги с побитовой или.

fwHeadModeExt

Задает расширение режима для кодировки joint-stereo:

Значение Код заголовка кадра MPEG Уровни 1 и 2 Уровень 3
0x01 '00' Стерео интенсивности в диапазонах от 4 до 31 Интенсивность стерео выключения; Посередине/боковой (MS) стерео выключен
0x02 '01' Стерео интенсивности в диапазонах от 8 до 31 Стерео интенсивности включено; Ms stereo off
0x04 '10' Стерео интенсивности в диапазонах от 12 до 31 Интенсивность стерео выключения; Включена стереосистема MS
0x08 '11' Стерео интенсивности в диапазонах от 16 до 31 Интенсивность стерео выключения; Включена стереосистема MS
 

Эти значения могут сочетаться с побитовой или. Как правило, кодировщики динамически переключаются между режимами расширения в соответствии с характеристиками сигнала. Поэтому для нормального кодирования стереофонического соединения задайте для этого поля значение 0x0F (побитовое ИЛИ всех флагов). Однако это поле можно использовать, чтобы ограничить кодировщик набором допустимых типов кодирования.

Это поле применяется только в том случае, если fwHeadMode включает ACM_MPEG_JOINTSTEREO. Для других режимов задайте для этого поля нулевое значение.

wHeadEmphasis

Задает де-выделение, необходимое декодеру:

Значение Заголовок кадра MPEG Требуется отмена выделения в коде
1 '00' None
2 '01' Выделение 50/15 мс
3 '10' Зарезервировано
4 '11' CCITT J.17

fwHeadFlags

Задает побитовое сочетание нулевых или нескольких следующих флагов:

Значение Значение
ACM_MPEG_PRIVATEBIT
Задайте частный бит.
ACM_MPEG_COPYRIGHT
Задайте бит авторских прав.
ACM_MPEG_ORIGINALHOME
Задайте исходный/домашний бит.
ACM_MPEG_PROTECTIONBIT
Задайте бит защиты и вставьте 16-разрядный код защиты от ошибок в каждый кадр.
ACM_MPEG_ID_MPEG1
Задайте для бита идентификатора значение 1, определив поток как аудиопоток MPEG-1.
 

Кодировщик будет использовать эти флаги для задания соответствующих битов в заголовках аудиокадров MPEG.

dwPTSLow

Указывает наименее значимые 32 бита метки времени представления (PTS) первого кадра звукового потока.

dwPTSHigh

Указывает наиболее значимый бит PTS. Поля dwPTSLow и dwPTSHigh можно рассматривать как одно 64-разрядное значение.

Комментарии

Для звука MPEG-1 структура WAVEFORMATEX , определенная в элементе wfx , должна иметь следующие значения.

Элемент WAVEFORMATEX Описание
wFormatTag Должен быть WAVE_FORMAT_MPEG
nChannels 1 для моно, 2 для стерео
nSamplesPerSec Указывает частоту выборки, если частота выборки фиксированная. Если это переменная, задайте для этого поля нулевое значение.
nAvgBytesPerSec Задает среднюю скорость передачи данных. Если кодировка переменной скорости используется на уровне 3, это значение может не быть допустимой скоростью MPEG-1.
nBlockAlign Для аудиопотоков с фиксированной длиной звуковой рамки это поле указывает длину звукового кадра. Если длина кадра переменная, задайте для этого поля значение 1. Если частота выборки равна 32 кГц или 48 кГц и скорость передачи является постоянной, размер звукового кадра является постоянным. В этом случае вычислите nBlockAlign следующим образом:
  • Уровень 1. 4 * (int)(12 * bitrate / sampling frequency)
  • Уровни 2 и 3: (int)(144 * bitrate / sampling frequency)
Если скорость передачи является переменной или частота выборки составляет 44,1 кГц, размер звукового кадра не является константой и nBlockAlign должен быть равен 1.
wBitsPerSample Не используется; Значение равно нулю.
cbSize Задает размер данных формата после структуры WAVEFORMATEX в байтах. Для стандартной структуры MPEG1WAVEFORMAT это значение равно 22 байтам.

Требования

   
Верхняя часть mmreg.h

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

Структуры DirectShow

Типы мультимедиа MPEG-1