다음을 통해 공유


AAC 디코더

Microsoft Media Foundation AAC 디코더는 다음과 같은 AAC(고급 오디오 코딩) 및 HE-AAC(고효율 AAC) 프로필을 디코딩하는 Media Foundation 변환 입니다.

  • MPEG-2 AAC LC(낮은 복잡성) 프로필(다중 채널).
  • MPEG-4 HE-AAC v1(다중 채널) 및 AAC-LC 코어.
  • MPEG-4 HE-AAC v2(스테레오) 및 AAC-LC 코어.

AAC 디코더는 헤더가 없는 원시 AAC 스트림과 ADTS(오디오 데이터 전송 스트림)의 AAC를 모두 지원합니다.

Windows 8부터 AAC 디코더는 LATM(멀티플렉스 계층) 및 LOAS(동기화 계층)를 사용하여 MPEG-4 오디오 전송 스트림 디코딩도 지원합니다. LATM/LOAS 스트림을 ADTS로 변환할 수도 있습니다.

클래스 식별자

AAC 인코더의 CLSID(클래스 식별자)는 헤더 파일 wmcodecdsp.h에 정의된 CLSID_CMSAACDecMFT.

미디어 형식

AAC 디코더는 다음 미디어 형식을 지원합니다.

입력 형식

AAC 디코더는 다음 오디오 하위 형식을 지원합니다.

Subtype Description 헤더
MFAudioFormat_AAC 원시 AAC 또는 ADTS AAC.
이 하위 형식의 경우 미디어 형식은 SBR(스펙트럼 밴드 복제) 및 PS(매개 변수 스테레오) 도구를 적용하기 전에 샘플 속도와 채널 수를 제공합니다(있는 경우). SBR 도구의 효과는 코어 AAC-LC 샘플 속도를 기준으로 디코딩된 샘플 속도를 두 배로 증가하는 것입니다. PS 도구의 효과는 모노 채널 코어 AAC-LC 스트림에서 스테레오를 디코딩하는 것입니다.
이 하위 형식은 wmcodecdsp.h에 정의된 MEDIASUBTYPE_MPEG_HEAAC 동일합니다. 오디오 하위 형식 GUID를 참조하세요.
MPEG-4 파일 원본 및 ADTS 파서는 이 하위 형식을 출력합니다.
mfapi.h
MEDIASUBTYPE_RAW_AAC1 원시 AAC.
이 하위 형식은 오디오 형식 태그가 WAVE_FORMAT_RAW_AAC1(0x00FF)와 같은 AVI 파일에 포함된 AAC에 사용됩니다.
이 하위 형식의 경우 미디어 형식은 SBR 및 PS 도구가 적용된 후 샘플 속도와 채널 수를 제공합니다(있는 경우).
wmcodecdsp.h

AAC 디코더를 구성하려면 입력 미디어 형식에서 다음 특성을 설정합니다.

attribute Description 설명
MF_MT_MAJOR_TYPE 주 형식입니다. MFMediaType_Audio 합니다.
MF_MT_SUBTYPE 오디오 하위 형식입니다. 자세한 내용은 이전 설명을 참조하세요.
MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION 오디오 프로필 및 수준.
선택 사항입니다. MFAudioFormat_AAC만 적용됩니다.
이 특성의 값은 ISO/IEC 14496-3에 정의된 audioProfileLevelIndication 필드입니다.
알 수 없는 경우 0 또는 0xFE("지정된 오디오 프로필 없음")으로 설정합니다.
MF_MT_AAC_PAYLOAD_TYPE 페이로드 유형입니다.
MFAudioFormat_AAC만 적용됩니다. 디코더는 다음 페이로드 유형을 지원합니다.
  • 0: 원시 AAC. 스트림에는 MPEG-2에 정의된 대로 raw_data_block() 요소만 포함됩니다.
  • 1: ADTS. 스트림에는 MPEG-2에 정의된 adts_sequence()가 포함됩니다. adts_frame()당 하나의 raw_data_block()만 허용됩니다.
  • 3: LOAS(동기화 계층) 및 LATM(멀티플렉스 계층)이 있는 오디오 전송 스트림. 세 가지 유형의 LOAS 중 AudioSyncStream 만 지원됩니다. 멀티플렉스 계층은 AudioMuxElement로, 하나의 오디오 프로그램과 한 계층으로 제한됩니다.
MF_MT_AAC_PAYLOAD_TYPE 선택 사항입니다. 이 특성을 지정하지 않으면 스트림에 raw_data_block 요소만 포함할 수 있는 기본값 0이 사용됩니다.
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 추가 형식 정보입니다. 이 특성의 값은 하위 형식에 따라 달라집니다.
  • MFAudioFormat_AAC: WAVEFORMATEX 구조체(즉, wfx 멤버 뒤)에 나타나는 HEAACWAVEINFO 구조체의 부분을 포함합니다. 그 다음에는 ISO/IEC 14496-3에 정의된 AudioSpecificConfig() 데이터가 뒤따릅니다.
  • MEDIASUBTYPE_RAW_AAC1: AudioSpecificConfig() 데이터를 포함합니다. 이 데이터가 나타나야 합니다. 그렇지 않으면 디코더가 미디어 형식을 거부합니다.
AudioSpecificConfig() 데이터의 길이는 SBR/PS의 암시적 신호가 있는 AAC-LC 또는 HE-AAC의 경우 2바이트입니다. SBR/PS의 명시적 신호가 있는 HE-AAC의 경우 2바이트 이상입니다.
AudioSpecificConfig()에 정의된 audioObjectType 값은 AAC-LC를 나타내는 2여야 합니다. extensionAudioObjectType 값은 SBR의 경우 5, PS의 경우 29여야 합니다.

출력 형식

디코더는 다음 출력 형식을 지원합니다.

Subtype 설명
MFAudioFormat_Float IEEE 부동 소수점 오디오.
MFAudioFormat_PCM 16비트 PCM 오디오.
MFAudioFormat_AAC Windows 8이 필요합니다.
이 출력 형식을 사용하여 LOAS/LATM 형식의 AAC 스트림을 ADTS 형식으로 변환할 수 있습니다.
LOAS/LATM 스트림을 ADTS 스트림으로 변환하려면 입력 형식을 LOAS(페이로드 유형 3)가 있는 MFAudioFormat_AAC 설정합니다. 그런 다음 출력 형식을 페이로드 유형 1(ADTS)이 있는 MFAudioFormat_AAC 설정합니다. 디코더는 비트스트림을 디코딩하지 않고 코나인터를 다시 포맷합니다.
참고: 디코더는 MFAudioFormat_AAC 출력 형식으로 등록하지 않습니다. 그러나 애플리케이션이 설명한 대로 입력 형식을 설정하는 경우 IMFTransform::GetOutputAvailableType 메서드는 사용 가능한 출력 형식 목록에서 MFAudioFormat_AAC 반환합니다.

입력 스트림에 두 개 이상의 채널이 포함된 경우 AAC 디코더는 출력 형식에 대한 두 가지 옵션을 제공합니다.

  • 입력 형식과 동일한 채널 구성입니다.
  • 스테레오 폴드 다운.

형식 제약 조건

디코딩된 오디오 샘플링 속도는 SBR이 적용된 후(있는 경우) 다음 중 하나여야 합니다.

  • 8kHz
  • 11.025kHz
  • 12kHz
  • 16KHz
  • 22.05kHz
  • 24kHz
  • 32kHz
  • 44.1kHz
  • 48kHz

48kHz를 초과하는 샘플링 속도는 지원되지 않습니다.

디코더는 최대 6개의 오디오 채널을 지원합니다. 각 스피커 구성에 대해 디코더는 AAC 구문 요소가 특정 순서로 나타날 것으로 예상합니다. 다음 표에서는 지원되는 화자 구성을 나열합니다. 테이블의 세 번째 열에는 다음 표기법을 사용하여 예상되는 구문 요소와 해당 순서가 나열됩니다.

  • <SCE1>: 프런트 센터 스피커와 연결된 SCE(single_channel_element)입니다.
  • <SCE2>: 백 센터 스피커와 연결된 SCE입니다.
  • <CPE1>: 전면 스피커와 연결된 CPE(channel_pair_element)입니다.
  • <CPE2>: 후면(또는 측면) 스피커와 연결된 CPE
  • <LFE: LFE>(lfe_channel_element)입니다.

이러한 구문 요소에 대한 자세한 내용은 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(채널 요소)를 결합합니다. 디코더는 CCE를 사용하여 오디오 프레임을 건너뜁니다.
  • 960 샘플 프레임 크기의 AAC-LC. 1024 샘플 프레임만 지원됩니다.

변환 특성

AAC 디코더는 IMFTransform::GetAttributes 메서드를 구현합니다 . 애플리케이션은 이 메서드를 사용하여 다음 특성을 얻거나 설정할 수 있습니다.

attribute 설명
CODECAPI_AVDecAudioDualMono 2 채널 오디오가 스테레오 또는 듀얼 모노로 인코딩되는지 여부를 지정합니다. 읽기 전용으로 처리합니다.
CODECAPI_AVDecAudioDualMonoReproMode 디코더가 이중 모노 오디오를 재현하는 방법을 지정합니다. 기본값은 eAVDecAudioDualMonoReproMode_LEFT_MONO: 왼쪽 및 오른쪽 스피커에 출력 Ch1입니다.
애플리케이션은 이 속성을 설정하여 기본 동작을 변경할 수 있습니다.
MFT_SUPPORT_DYNAMIC_FORMAT_CHANGE AAC 디코더는 동적 형식 변경을 처리하지 않으며 새 입력 미디어 형식을 설정하기 전에 플러시하거나 드레이닝해야 합니다. 이 특성을 읽기 전용으로 처리합니다.
참고: AAC 디코더는 이 특성에 대해 TRUE 값을 잘못 보고합니다.
Windows 7에서 디코더는 이 특성에 대해 TRUE 값을 잘못 보고합니다. Windows 8에서 디코더는 올바른 값인 FALSE를 보고합니다.

미디어 형식 예제

다음은 원시 AAC 페이로드를 사용하여 6 채널 48kHz AAC-LC 스트림에 필요한 입력 미디어 형식의 예입니다.

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 마지막 2바이트에는 MPEG-4에 정의된 AudioSpecificConfig() 값이 포함됩니다.

  • 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
Windows 7의 Msmpeg2adec.dll
Windows 8의 MSAudDecMFT.dll

추가 정보

코덱 개체

AAC 미디어 형식

오디오 미디어 유형

Microsoft MPEG-1/DD/AAC 오디오 디코더

Media Foundation의 MPEG-4 지원

미디어 파운데이션에서 지원되는 미디어 형식