DirectShow DirectShow 레퍼런스 DirectShow 구조체 MPEG1WAVEFORMAT [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
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 스트림에는, 복수의 계층으로부터의 프레임이 포함되는 경우가 있다. 그 경우, 플래그를 비트마다 OR 로 묶는 것.
dwHeadBitrate
bit rate (비트/초)를 지정한다. 이 값에는, MPEG 프레임의 헤더 코드는 아니고, 실제의 bit rate를 지정한다. bit rate가 변수인가, 또는 표준이 아닌 bit rate의 경우는, 이 필드를 제로로 설정한다.
fwHeadMode
다음의 정수로 정의되도록(듯이) 스트림 모드를 지정한다.
값 | 설명 |
ACM_MPEG_STEREO | 스테레오 |
ACM_MPEG_JOINTSTEREO | Joint 스테레오 |
ACM_MPEG_DUALCHANNEL | 듀얼 채널 |
ACM_MPEG_SINGLECHANNEL | 단일 채널 |
일부의 MPEG 스트림에는, 모드가 다른 프레임이 포함되는 경우가 있다. 그 경우, 플래그를 비트마다 OR 로 묶는 것.
fwHeadModeExt
다음에 나타내는 Joint 스테레오 인코딩용의 모드 extension를 지정한다.
값 | MPEG 프레임 헤더 코드 | 계층 1 으로 계층 2 | 계층 3 |
0x01 | '00' | 대역 4 ~ 31 의 인텐시티스테레오 | 인텐시티스테레오를 오프, 미들 사이드 (MS) 스테레오를 오프 |
0x02 | '01' | 띠 8 ~ 31 의 인텐시티스테레오 | 인텐시티스테레오를 온, MS 스테레오를 오프 |
0x04 | '10' | 대역 12 ~ 31 의 인텐시티스테레오 | 인텐시티스테레오를 오프, MS 스테레오를 온 |
0x08 | '11' | 대역 16 ~ 31 의 인텐시티스테레오 | 인텐시티스테레오를 오프, MS 스테레오를 온 |
이러한 값은, 비트마다 OR 에 의해 연결되고 있는 일이 있다. 보통, 엔코더는 신호의 특성에 응해 extension 모드를 동적으로 바꾼다. 따라서, 표준의 Joint 스테레오 인코딩에서는, 이 필드에 0x0F (모든 플래그의 비트마다 OR)를 설정한다. 다만, 이 필드를 사용해, 엔코더를 지정할 수 있는 일련의 인코딩의 종류를 제한할 수 있다.
이 필드는,fwHeadMode 에 ACM_MPEG_JOINTSTEREO 가 포함되는 경우에 한해서 적용된다. 그 외의 모드에 대해서는, 이 필드에는 제로를 설정한다.
wHeadEmphasis
디코더에 필요한 데엔파시스를 지정한다.
값 | MPEG 프레임 헤더 코드 | 필요한 데엔파시스 |
1 | '00' | 없음 |
2 | '01' | 50/15 ms 강조 |
3 | '10' | 예약이 끝난 상태 |
4 | '11' | CCITT J. 17 |
fwHeadFlags
다음의 플래그의 0 개 이상의 비트마다 편성을 지정한다.
값 | 설명 |
ACM_MPEG_PRIVATEBIT | Private 비트를 설정한다. |
ACM_MPEG_COPYRIGHT | 저작권 비트를 설정한다. |
ACM_MPEG_ORIGINALHOME | 오리지날/홈 비트를 설정한다. |
ACM_MPEG_PROTECTIONBIT | 보호 비트를 설정해, 16 비트의 에러 보호 코드를 각 프레임에 삽입한다. |
ACM_MPEG_ID_MPEG1 | ID 비트를 1 으로 설정해, 스트림을 MPEG-1 오디오 스트림으로서 정의한다. |
엔코더는 이러한 플래그를 사용해, MPEG 오디오 프레임 헤더의 대응하는 비트를 설정한다.
dwPTSLow
오디오 스트림의 선두 프레임에 있는 프레젠테이션 타임 스탬프 (PTS)의 최하정도 32 비트를 지정한다.
dwPTSHigh
PTS 의 최상정도 비트를 지정한다. dwPTSLow 필드와 dwPTSHigh 필드는, 단일의 64 비트값이라고 볼 수가 있다.
주의
MPEG-1 오디오의 경우,wfx 멤버에 정의되는 WAVEFORMATEX 구조체에는 다음의 값을 갖게할 필요가 있다.
WAVEFORMATEX 멤버 | 설명 |
wFormatTag | 반드시 WAVE_FORMAT_MPEG 를 지정하는 것. |
nChannels | 단청의의 경우는 1, 스테레오의 경우는 2. |
nSamplesPerSec | 샘플링 주파수가 고정의 경우는, 샘플링 주파수를 지정한다. 샘플링 주파수가 가변의 경우, 이 필드는 0 으로 설정한다. |
nAvgBytesPerSec | 평균 데이터 레이트를 지정한다. 계층 3 으로 가변 bit rate 인코딩이 사용되고 있는 경우, 이 값은 올바른 MPEG-1 bit rate가 아닐 가능성이 있다. |
nBlockAlign | 고정 오디오 프레임장을 가지는 오디오 스트림의 경우, 이 필드에서 오디오 프레임의 길이를 지정한다. 프레임장이 가변의 경우, 이 필드는 1 으로 설정한다.
샘플링 주파수가 32 kHz 또는 48 kHz 로 bit rate가 일정한 경우, 오디오 frame size는 일정한다. 그러한 경우,nBlockAlign 는 다음의 방법으로 요구하는 것.
bit rate가 가변 또는 샘플링 주파수가 44.1 kHz 의 경우, 오디오 frame size는 일정은 아니기 때문에,nBlockAlign 에는 반드시 1 을 지정하는 것. |
wBitsPerSample | 미사용. 제로를 설정한다. |
cbSize | WAVEFORMATEX 구조체의 뒤의 포맷 데이터의 사이즈를 지정한다 (바이트 단위). 표준적인 MPEG1WAVEFORMAT 구조체의 경우, 이 값은 22 바이트이다. |
참조