DirectSound DirectSound C/C++ 레퍼런스 DirectSound 의 구조체 WAVEFORMATEX   [목차열람] [주소복사] [슬롯비우기]
WAVEFORMATEX
 
Microsoft DirectX 9.0

WAVEFORMATEX

WAVEFORMATEX 구조체는, 웨이브 폼 오디오 데이터의 포맷을 정의한다. 이 구조체에는, 모든 웨이브 폼 오디오 데이터 형식에 공통의 포맷 정보만이 포함된다. 추가 정보가 필요한 포맷에서는, 이 구조체가 최초의 멤버로서 다른 정보와 함께 다른 구조체에 포함된다.

이 구조체는 Platform SDK 의 일부이며, Dsound.h 에서는 선언되지 않다. 편의상 여기서 설명하고 있다.

구문

typedef struct { 
  WORD  wFormatTag; 
  WORD  nChannels; 
  DWORD nSamplesPerSec; 
  DWORD nAvgBytesPerSec; 
  WORD  nBlockAlign; 
  WORD  wBitsPerSample; 
  WORD  cbSize; 
} WAVEFORMATEX; 

멤버

wFormatTag

웨이브 폼 오디오 포맷의 타입. 많은 압축 알고리즘의 포맷 태그가, Microsoft 로 등록되어 있다. 포맷 태그의 완전한 리스트는, 헤더 파일 Mmreg.h 에 기술되고 있다. 1 채널 또는 2 채널의 PCM 데이터의 경우, 이 값은 WAVE_FORMAT_PCM 가 아니면 안된다.

nChannels

웨이브 폼 오디오 데이터의 채널수. 단청의 데이터는 1 개의 채널을 사용해, 스테레오 데이터는 2 개의 채널을 사용한다.

nSamplesPerSec

샘플링 레이트. 1 초 쯤의 샘플수 (Hz)로 나타낸다. wFormatTag 가 WAVE_FORMAT_PCM 의 경우,nSamplesPerSec 의 일반적인 값은 8.0 kHz, 11.025 kHz, 22.05 kHz, 44.1 kHz 이다. PCM 포맷이 아닌 경우는, 메이커의 포맷 태그의 사양에 따라 이 멤버를 계산할 필요가 있다.

nAvgBytesPerSec

포맷 태그로 필요한 평균 데이터 전송 속도. 단위는, 1 초 쯤의 바이트수. wFormatTag 가 WAVE_FORMAT_PCM 인 경우,nAvgBytesPerSecnSamplesPerSecnBlockAlign 의 적에 동일해야 한다. PCM 포맷이 아닌 경우는, 메이커의 포맷 태그의 사양에 따라 이 멤버를 계산할 필요가 있다.

nBlockAlign

브록크아라이먼트 (바이트 단위). 브록크아라이먼트는,wFormatTag 포맷 타입의 데이터의 최소단위이다. wFormatTag 가 WAVE_FORMAT_PCM 또는 WAVE_FORMAT_EXTENSIBLE 인 경우,nBlockAlignnChannelswBitsPerSample 의 적을 8 으로 나눈 값 (바이트 근처의 비트수)에 동일해야 한다. PCM 포맷이 아닌 경우는, 메이커의 포맷 태그의 사양에 따라 이 멤버를 계산할 필요가 있다.

소프트웨어는, 데이터의 복수의 nBlockAlign 바이트를, 한 번에 처리해야 한다. 장치에 기입하는 데이터, 장치로부터 읽어들이는 데이터는, 항상 블록의 선두로부터 시작 해야 한다. 예를 들어, PCM 데이터의 재생을, 샘플의 중간 (즉, 비브록크아라이먼트의 경계)으로 시작 하는 것은 부정하다.

wBitsPerSample

wFormatTag 포맷 타입의, 샘플링 근처의 비트수. wFormatTag 가 WAVE_FORMAT_PCM 인 경우,wBitsPerSample 는 8 또는 16 이 아니면 안된다. PCM 포맷이 아닌 경우는, 메이커의 포맷 태그의 사양에 따라 이 멤버를 설정할 필요가 있다. wFormatTag 가 WAVE_FORMAT_EXTENSIBLE 인 경우는, 임의의 8 의 배수를 설정할 수 있다. 압축 스킴이 wBitsPerSample 의 값을 정의할 수 없는 것도 있으므로, 이 멤버는 0 이 된다.

cbSize

WAVEFORMATEX 구조체의 뒤로 추가되는 포맷 정보의 사이즈 (바이트 단위). 이 정보를 비 PCM 포맷으로 사용해,wFormatTag 의 추가 속성을 저장 할 수가 있다. wFormatTag 로 필요한 추가 정보가 없는 경우, 이 멤버는 0 으로 설정해야 한다. WAVE_FORMAT_PCM 포맷에서는 (그리고 WAVE_FORMAT_PCM 포맷의 경우에 한정해), 이 멤버는 무시된다.

요건

  헤더:mmreg.h 로 선언.

참조

↑TOP