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

WAVEFORMATEX 구조체

WAVEFORMATEX 구조체는, 파형 오디오 데이터의 포맷을 정의한다. 모든 파형 오디오 데이터의 포맷에 공통의 포맷 정보만이 이 구조체에 포함된다. 추가 정보가 필요한 포맷의 경우, 이 구조체는, 추가 정보와 함께 다른 구조체의 선두 멤버로서 포함된다.

이 구조체는 Platform SDK 의 일부로, Mmreg.h 로 선언되고 있지만, 편의상 이 문서에도 기재하고 있다.

구문

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

멤버

wFormatTag

파형 오디오의 포맷 타입. 포맷 태그는, 많은 압축 알고리즘용으로 Microsoft Corporation 에 등록되어 있다. 포맷 태그의 완전한 리스트는, Mmreg.h 헤더 파일에 있다. 1 채널이나 2 채널의 PCM (Pulse Code Modulation) 데이터의 경우, 이 값은 WAVE_FORMAT_PCM 로 할 필요가 있다.

nChannels

파형 오디오 데이터에 포함되는 채널수. 단청의 데이터는 1 채널을 사용해, 스테레오 데이터는 2 채널을 사용한다.

nSamplesPerSec

샘플/초에 나타내는 샘플 레이트 (단위 Hz). wFormatTag 가 WAVE_FORMAT_PCM 의 경우,nSamplesPerSec 의 일반적인 값은 8.0 kHz, 11.025 kHz, 22.05 kHz, 44.1 kHz 가 된다. 비 PCM 포맷의 경우, 이 멤버는 제조업자의 포맷 태그 사양에 따라 산출할 필요가 있다.

nAvgBytesPerSec

포맷 태그에 필요한 평균 데이터 전송 레이트 (단위 바이트/초). wFormatTag 가 WAVE_FORMAT_PCM 의 경우,nAvgBytesPerSecnSamplesPerSecnBlockAlign 의 적과 동일해야 한다. 비 PCM 포맷의 경우, 이 멤버는 제조업자의 포맷 태그 사양에 따라 산출할 필요가 있다.

nBlockAlign

블록 alignment (단위 바이트). 블록 alignment란,wFormatTag 포맷 타입의 데이터의 최소 구성 단위이다. wFormatTag 가 WAVE_FORMAT_PCM 또는 WAVE_FORMAT_EXTENSIBLE 의 경우,nBlockAlignnChannelswBitsPerSample 의 적을 8 (1 바이트 당의 비트수)으로 나눈 값과 동일해야 한다. 비 PCM 포맷의 경우, 이 멤버는 제조업자의 포맷 태그 사양에 따라 산출할 필요가 있다.

소프트웨어는, 한 번에 복수의 nBlockAlign 바이트의 데이터를 처리할 필요가 있다. 장치에 대한 데이터의 쓰기와 읽기는 항상, 블록의 선두로부터 시작 해야 한다. 예를 들어, PCM 데이터의 재생을 샘플의 도중 (즉, 비블록 아라인 경계상)부터 시작 하는 것은 부정하다.

wBitsPerSample

wFormatTag 포맷 타입의 1 샘플 근처의 비트수. wFormatTag 가 WAVE_FORMAT_PCM 의 경우,wBitsPerSample 는 8 또는 16 이 아니면 안된다. wFormatTag 가 WAVE_FORMAT_EXTENSIBLE 의 경우, 이 값은, 임의의 8 의 배수를 지정할 수 있다. 일부의 압축 스킴은 wBitsPerSample 의 값을 정의할 수 없기 때문에, 이 멤버에는 0 을 지정해도 상관없다.

cbSize

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

참조

↑TOP