DirectShow DirectShow 레퍼런스 DirectShow 구조체 WAVEFORMATEXTENSIBLE [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
WAVEFORMATEXTENSIBLE 구조체는, 3 개 이상의 채널을 가지는 포맷의 파형 오디오 데이터의 포맷을 정의한다.
이 구조체는 Platform SDK 의 일부로, Mmreg.h 로 선언되고 있지만, 편의상 이 문서에도 기재하고 있다.
구문
typedef struct {
WAVEFORMATEX Format;
union {
WORD wValidBitsPerSample;
WORD wSamplesPerBlock;
WORD wReserved;
} Samples;
DWORD dwChannelMask;
GUID SubFormat;
} WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;
멤버
Format
기본적인 포맷을 지정하는 WAVEFORMATEX 구조체. wFormatTag 멤버는, Mmreg.h 에 정의된 WAVE_FORMAT_EXTENSIBLE 가 아니면 안된다. cbSize 멤버에는 적어도 22 를 지정할 필요가 있다.
wValidBitsPerSample
신호의 정밀도의 비트수. 보통은 WAVEFORMATEX.wBitsPerSample 와 동일하다.
wSamplesPerBlock
오디오 데이터의 1 개의 압축 블록에 포함되는 샘플수. 이 값은, 버퍼 견적에 사용된다. 이 값은, 각 블록에 고정수의 샘플을 가지는 압축 포맷과 함께 사용된다. 압축 오디오 데이터의 각 블록에 가변수의 샘플이 포함되는 경우는, 이 값을 제로로 설정해도 상관없다. 이 경우, 버퍼 견적과 위치 정보는, 다른 방법으로 얻어올 필요가 있다.
wReserved
operating system의 내부 사용을 위해서(때문에) 예약이 끝난 상태. 제로로 설정하는 것.
dwChannelMask
스피커 위치에의 스트림내의 채널 할당을 지정하는 비트 마스크. 「주의」를 참조할것.
SubFormat
KSDATAFORMAT_SUBTYPE_PCM 등, 데이터의 서브 포맷. 서브 포맷 정보는,WAVEFORMATEX 구조체의 wFormatTag 멤버의 태그로 제공되는 정보와 비슷하다.
주의
dwChannelMask 멤버는, 멀티 채널 스트림에 어느 채널이 있는지를 지정한다. 최하정도 비트는 운이 나빠짐 스피커에 대응해, 다음의 최하정도 비트는 오른쪽앞스피커에 대응한다, 라고 하는 상태이다. 다음과 같이 각 비트는 Ksmedia.h 및 Mmreg.h 로 순서에 정의되고 있다.
스피커 위치 | flag bit |
SPEAKER_FRONT_LEFT | 0x1 |
SPEAKER_FRONT_RIGHT | 0x2 |
SPEAKER_FRONT_CENTER | 0x4 |
SPEAKER_LOW_FREQUENCY | 0x8 |
SPEAKER_BACK_LEFT | 0x10 |
SPEAKER_BACK_RIGHT | 0x20 |
SPEAKER_FRONT_LEFT_OF_CENTER | 0x40 |
SPEAKER_FRONT_RIGHT_OF_CENTER | 0x80 |
SPEAKER_BACK_CENTER | 0x100 |
SPEAKER_SIDE_LEFT | 0x200 |
SPEAKER_SIDE_RIGHT | 0x400 |
SPEAKER_TOP_CENTER | 0x800 |
SPEAKER_TOP_FRONT_LEFT | 0x1000 |
SPEAKER_TOP_FRONT_CENTER | 0x2000 |
SPEAKER_TOP_FRONT_RIGHT | 0x4000 |
SPEAKER_TOP_BACK_LEFT | 0x8000 |
SPEAKER_TOP_BACK_CENTER | 0x10000 |
SPEAKER_TOP_BACK_RIGHT | 0x20000 |
이 구조체의 더 자세한 정보는, 문서 「Multiple Channel Audio Data and WAVE Files 」(www.microsoft.com)을 참조할것.