DirectSound DirectSound C/C++ 레퍼런스 DirectSound 의 구조체 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 블록의 오디오 데이터에 보관 유지되는 샘플수. 이 값은, 블록마다 샘플수가 일정하는 압축 포맷에 대해, 버퍼의 견적에 사용된다. 압축된 오디오 데이터의 각 블록에 포함되는 샘플수가 가변의 경우는, 이 값을 0 으로 설정해 상관없다. 그 경우, 버퍼의 견적과 위치 정보는, 다른 방법으로 얻어올 필요가 있다.
wReserved
operating system에 의한 내부적인 사용을 위해서(때문에) 예약되고 있다. 0 으로 설정한다.
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 |
이 구조체의 더 자세한 정보는, www.microsoft.com 로 제공되고 있는 문서 「Multiple Channel Audio Data and WAVE Files 」를 참조할것.
요건
헤더:mmreg.h, ksproxy.h 로 선언.
참조