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만 적용됩니다. 디코더는 다음 페이로드 유형을 지원합니다.
|
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 | 추가 형식 정보입니다. | 이 특성의 값은 하위 형식에 따라 달라집니다.
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 |
|