Декодер AAC
Декодер Microsoft Media Foundation AAC — это преобразование Media Foundation , которое декодирует следующие профили Расширенного аудиокодирования (AAC) и Высокой эффективности AAC (HE-AAC):
- Профиль mpeg-2 AAC Low Complexity (LC) (multichannel).
- MPEG-4 HE-AAC v1 (multichannel) с ядром AAC-LC.
- MPEG-4 HE-AAC v2 (стерео) с ядром AAC-LC.
Декодер AAC поддерживает как необработанные потоки AAC без заголовков, так и AAC в потоке передачи аудиоданных (ADTS).
Начиная с Windows 8 декодер AAC также поддерживает декодирование транспортных аудиопотоков MPEG-4 с помощью мультиплексного слоя (LATM) и уровня синхронизации (LOAS). Он также может преобразовать поток LATM/LOAS в ADTS.
Идентификатор класса
Идентификатор класса (CLSID) кодировщика AAC CLSID_CMSAACDecMFT, определенный в файле заголовка wmcodecdsp.h.
Типы мультимедиа
Декодер AAC поддерживает следующие типы мультимедиа.
Типы входных данных
Декодер AAC поддерживает следующие подтипы звука:
Subtype | Описание | Header |
---|---|---|
MFAudioFormat_AAC | Необработанные AAC или ADTS AAC. Для этого подтипа тип носителя предоставляет частоту выборки и количество каналов до применения инструментов репликации спектрального диапазона (SBR) и параметрического стерео (PS), если они есть. Результатом использования средства SBR является удвоение декодированного частоты дискретизации относительно частоты дискретизации основного AAC-LC. Средство PS позволяет декодировать стерео из основного потока AAC-LC с моноканальной кодировкой. Этот подтип эквивалентен MEDIASUBTYPE_MPEG_HEAAC, определенному в wmcodecdsp.h. См. раздел Идентификаторы GUID подтипа аудио. Источник файлов MPEG-4 и средство синтаксического анализа ADTS выводят этот подтип. |
mfapi.h |
MEDIASUBTYPE_RAW_AAC1 | Необработанный AAC. Этот подтип используется для AAC, содержащегося в файле AVI с тегом аудиоформата, равным WAVE_FORMAT_RAW_AAC1 (0x00FF). Для этого подтипа тип мультимедиа предоставляет частоту выборки и количество каналов после применения средств SBR и PS, если они имеются. |
wmcodecdsp.h |
Чтобы настроить декодер AAC, задайте следующие атрибуты для типа входного носителя.
attribute | Описание | Remarks |
---|---|---|
MF_MT_MAJOR_TYPE | Основной тип. | Должен быть MFMediaType_Audio. |
MF_MT_SUBTYPE | Подтип звука. | Дополнительные сведения см. в предыдущем описании. |
MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION | Профиль и уровень звука. |
Необязательный элемент. Применяется только к MFAudioFormat_AAC. Значением этого атрибута является поле audioProfileLevelIndication , как определено в СТАНДАРТЕ ISO/IEC 14496-3. Если он неизвестен, задайте значение ноль или 0xFE ("не указан звуковой профиль"). |
MF_MT_AAC_PAYLOAD_TYPE | Тип полезных данных. |
Применяется только к MFAudioFormat_AAC. Декодер поддерживает следующие типы полезных данных:
|
MF_MT_AUDIO_BITS_PER_SAMPLE | Требуемая битовая глубина декодированного звука PCM. | |
MF_MT_AUDIO_CHANNEL_MASK | Задает назначение звуковых каналов позициям говорящего. | Необязательный элемент. Дополнительные сведения см. в разделе Ограничения формата. |
MF_MT_AUDIO_NUM_CHANNELS | Количество каналов, включая низкочастотный канал (LFE), если он имеется. |
Интерпретация этого значения зависит от подтипа мультимедиа, как описано выше. |
MF_MT_AUDIO_SAMPLES_PER_SECOND | Частота выборки в выборках в секунду. |
Интерпретация этого значения зависит от подтипа мультимедиа, как описано выше. |
MF_MT_USER_DATA | Дополнительные сведения о форматировании. | Значение этого атрибута зависит от подтипа.
Значение audioObjectType , определенное в AudioSpecificConfig(), должно быть равно 2, что указывает на AAC-LC. Значение extensionAudioObjectType должно быть равно 5 для SBR или 29 для PS. |
Типы вывода
Декодер поддерживает следующие типы выходных данных:
Subtype | Описание |
---|---|
MFAudioFormat_Float | Звук с плавающей запятой IEEE. |
MFAudioFormat_PCM | 16-разрядный звук PCM. |
MFAudioFormat_AAC | Требуется Windows 8. Этот тип выходных данных можно использовать для преобразования потока AAC в формате LOAS/LATM в формат ADTS. Чтобы преобразовать поток LOAS/LATM в поток ADTS, задайте тип входных данных MFAudioFormat_AAC с типом полезных данных 3 (LOAS). Затем задайте тип вывода MFAudioFormat_AAC с типом полезных данных 1 (ADTS). Декодер переформатирует conainter без декодирования битового потока. Примечание: Декодер не регистрирует MFAudioFormat_AAC в качестве типа вывода. Однако если приложение задает тип входных данных, как описано выше, метод IMFTransform::GetOutputAvailableType возвращает MFAudioFormat_AAC в списке доступных типов выходных данных. |
Если входной поток содержит более двух каналов, декодер AAC предоставляет два варианта для формата вывода:
- Та же конфигурация канала, что и тип входных данных.
- Стерео свертывания.
Ограничения формата
Частота дискретизации декодированного звука должна быть одной из следующих после применения SBR (при наличии):
- 8 кГц
- 11,025 кГц
- 12 кГц
- 16 кГц
- 22,05 кГц
- 24 кГц
- 32 кГц
- 44,1 кГц
- 48 кГц
Частота выборки выше 48 кГц не поддерживается.
Декодер поддерживает до 6 звуковых каналов. Для каждой конфигурации говорящего декодер ожидает, что синтаксические элементы AAC будут отображаться в определенном порядке. В следующей таблице перечислены поддерживаемые конфигурации говорящего. В третьем столбце таблицы перечислены ожидаемые синтаксические элементы и их порядок, используя следующую нотацию:
- <SCE1>: single_channel_element (SCE), связанный с передним центральным динамиком.
- <SCE2>: SCE, связанный с динамиком заднего центра.
- <CPE1>: channel_pair_element (CPE), связанный с передними динамиками.
- <CPE2>: CPE, связанный с задними (или боковыми) динамиками
- <LFE>: lfe_channel_element (LFE).
Дополнительные сведения об этих синтаксических элементах см. в статье ISO/IEC 13818-7.
Конфигурация | Маска канала | Синтаксические элементы AAC |
---|---|---|
Mono | SPEAKER_FRONT_CENTER | <SCE1> |
Стерео или двойной моно | | SPEAKER_FRONT_LEFTSPEAKER_FRONT_RIGHT | <CPE1> |
2/1 | | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHTSPEAKER_BACK_CENTER | <CPE1><SCE1> |
2/2 | | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_BACK_LEFTSPEAKER_BACK_RIGHT | <CPE1><CPE2> |
3/0 | | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHTSPEAKER_FRONT_CENTER | <SCE1><CPE1> |
3/1 | | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTERSPEAKER_BACK_CENTER | <SCE1><CPE1><SCE2> |
3/2 | | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_BACK_LEFTSPEAKER_BACK_RIGHT | <SCE1><CPE1><CPE2> |
3/2 + LFE | | SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | SPEAKER_BACK_LEFTSPEAKER_BACK_RIGHT | <SCE1><CPE1><CPE2><LFE> |
Для необработанных AAC каждый входной пример должен содержать ровно один полный сжатый кадр AAC.
Для ADTS каждый входной пример может содержать несколько аудиокадров, а также частичные кадры, то есть кадры могут охватывать границы выборки. За каждым заголовком ADTS должен следовать один кадр AAC.
Декодер AAC не поддерживает следующее:
- Основной профиль, профиль Sample-Rate масштабируемый профиль (SRS) или профиль долгосрочного прогнозирования (LTP).
- Формат обмена аудиоданными (ADIF).
- Транспортные потоки LATM/LAOS.
- Элементы канала связи (CCE). Декодер пропускает аудиокадры с cces.
- AAC-LC с размером кадра 960 выборок. Поддерживаются только кадры с 1024 образцами.
Атрибуты преобразования
Декодер AAC реализует метод IMFTransform::GetAttributes . Приложения могут использовать этот метод для получения или задания следующих атрибутов.
attribute | Описание |
---|---|
CODECAPI_AVDecAudioDualMono | Указывает, кодируется ли двухканальный звук как стерео или двойной моно. Обрабатывать как доступный только для чтения. |
CODECAPI_AVDecAudioDualMonoReproMode | Указывает, как декодер воспроизводит двойной монофонический звук. Значение по умолчанию — eAVDecAudioDualMonoReproMode_LEFT_MONO: вывод ch1 на левый и правый динамики. Приложения могут задать это свойство, чтобы изменить поведение по умолчанию. |
MFT_SUPPORT_DYNAMIC_FORMAT_CHANGE | Декодер AAC не обрабатывает динамические изменения формата и должен быть сброшен или слит перед настройкой нового типа входного носителя. Рассматривайте этот атрибут как доступный только для чтения. Примечание: Декодер AAC неправильно сообщает значение TRUE для этого атрибута. В Windows 7 декодер неправильно сообщает значение TRUE для этого атрибута. В Windows 8 декодер сообщает false, что является правильным значением |
Примеры типов мультимедиа
Ниже приведен пример типа входного носителя, необходимого для 6-канального потока AAC-LC с частотой 48 кГц с использованием необработанных полезных данных AAC:
attribute | Значение |
---|---|
MF_MT_MAJOR_TYPE | MFMediaType_Audio |
MF_MT_SUBTYPE | MFAudioFormat_AAC |
MF_MT_AUDIO_SAMPLES_PER_SECOND | 48000 |
MF_MT_AUDIO_NUM_CHANNELS | 6 |
MF_MT_AAC_PAYLOAD_TYPE | 0 |
MF_MT_USER_DATA | {0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xb0} |
MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION | 0x2a (необязательно) |
Первые 12 байтов MF_MT_USER_DATA соответствуют следующим членам структуры HEAACWAVEINFO :
- wPayloadType = 0 (необработанный AAC)
- wAudioProfileLevelIndication = 0x2a (профиль AAC, уровень 4)
- wStructType = 0
Последние два байта MF_MT_USER_DATA содержат значение AudioSpecificConfig(), как определено в MPEG-4.
- AudioSpecificConfig.audioObjectType = 2 (AAC LC) (5 бит)
- AudioSpecificConfig.samplingFrequencyIndex = 3 (4 бита)
- AudioSpecificConfig.channelConfiguration = 6 (4 бита)
- GASpecificConfig.frameLengthFlag = 0 (1 бит)
- GASpecificConfig.dependsOnCoreCoder = 0 (1 бит)
- GASpecificConfig.extensionFlag = 0 (1 бит)
Учитывая этот тип входных данных, используйте следующий выходной тип носителя, чтобы получить 6-канальный 32-разрядный звук PCM с плавающей запятой из декодера:
attribute | Значение |
---|---|
MF_MT_MAJOR_TYPE | MFMediaType_Audio |
MF_MT_SUBTYPE | MFAudioFormat_Float |
MF_MT_AUDIO_BITS_PER_SAMPLE | 32 |
MF_MT_AUDIO_SAMPLES_PER_SECOND | 48000 |
MF_MT_AUDIO_NUM_CHANNELS | 6 |
MF_MT_AUDIO_AVG_BYTES_PER_SECOND | 1152000 (необязательно) |
MF_MT_AUDIO_BLOCK_ALIGNMENT | 24 (необязательно) |
MF_MT_AUDIO_CHANNEL_MASK | 0x3f (необязательно) |
Если установлено дополнение к обновлению платформы для Windows Vista, декодер аудио AAC доступен в Windows Vista, но доступен в Windows Vista только с помощью средства чтения исходного кода.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента |
Windows 7 [только классические приложения] |
Минимальная версия сервера |
Windows Server 2008 R2 [только классические приложения] |
DLL |
|