WAVEFORMATEX 구조체는 웨이브폼 오디오 데이터의 형식을 정의함
이 구조체는 모든 웨어브폼 오디오 데이터 형식이 포함되어 있는 일반적인 형식 정보 typedef struct {
WORD wFormatTag;
WORD nChannels;
DWORD nSamplesPerSec;
DWORD nAvgBytesPerSec;
WORD nBlockAlign;
WORD wBitsPerSample;
WORD cbSize;
}WAVEFORMATEX;
wFormatTag
웨이브폼 오디오 형식 타입
MS사에 등록된 많은 압축 알고리즘 태그 형식
다른 형식은 mmreg.h 에 정의 되어 있음
Windows Media 형식 SDK의 어플리케이션은 일반적으로 다음표에 있는 값을 사용함
┃
┣> 0x0161
┃ ┗ 윈도우 미디어 오디오, 이 형식은 버전 2~9까지 유효
┃
┣> 0x0162
┃ ┗ 윈도우 미디어 오디오 9 Professional
┃
┣> 0x0163
┃ ┗ 윈도우 미디어 오디오 9 Lossless
┃
┣> 0x0001
┃ ┗ PCM 오디오
┃
┗> 0xFFFE
┗ WAVEFORMATEXTENSIBLE.SubFormat 맴버의 지정된 형식을 나타냄
nChannels
오디오 채널 수
모노럴 데이터는 1 채널 / 스테레오 데이터는 2채널 사용
PCM 오디오는 WAVEFORMATEXTENSIBLE 구조체를 사용하지 않으면 2보다 큰 값을 사용할 수 없음
nSamplesPerSec
샘플 속도, 단위:Hertz
보통 값은 8.0 kHz, 11.025 kHz, 22.05 kHz, and 44.1 kHz
PCM 오디오는 WAVEFORMATEXTENSIBLE 구조체를 사용하지 않으면 44,100 kHz보다 큰 값을 사용할 수 없음
nAvgBytesPerSec
대개의 경우 이 멤버는 초당 평균적으로 처리해야 할 데이터의 양(byte 단위)이 들어 있음
만약 wFormatTag의 값이 WAVE_FORMAT_PCM 인경우 nSamplesPerSec의 값과 nBlockAlign의 값이 곱한 값과 같아야 함
PCM 형식이 아닌 경우 이 멤버는 제조사의 사양에 맞는 형식 태크에 따라 계산하여야 함
nBlockAlign
wFormatTag 형식 타입 데이터의 최소 크기, byte 단위
만약 wFormatTag 매개변수 값이 WAVE_FORMAT_PCM 또는 WAVE_FORMAT_EXTENSIBLE 라면 nBlockAlign는
nChannels 값과 wBitsPerSample/8의 값의 곱과 같아야 함
PCM 형식이 아닌 경우 이 멤버는 제조사의 사양에 맞는 형식 태크에 따라 계산하여야 함
wBitsPerSample
wFormatTag 형식 타입의 샘플 당 비트 수
만약 wFormatTag 매개변수 값이 WAVE_FORMAT_PCM이면 wBitsPerSample 매개변수의 값은 8 또는 16의 값과 같아야 함
일부의 압축 스키마는 wBitsPerSample 매개변수를 정의 할수 없어 이 멤버를 0으로 지정
만약 이 형식을 WAVEFORMATEXTENSIBLE 구조체로 만들었을 경우 PCM 오디오의 값을 16이상으로 할 수 있음
cbSize
WAVEFORMATEX 구조체의 끝에 첨부된 추가 형식 정보의 크기(byte 단위)
이 정보는 wFormatTag매개변수가 PCM 형식이 아닌 경우 사용 할 수 있음
만약 wFormatTag의 추가 속성이 필요하지 않다면 이 값은 0로 둠
참조 : http://msdn.microsoft.com/en-us/library/dd757720(VS.85).aspx
'API / MFC > Wave In/Out API function' 카테고리의 다른 글
waveInStart Function (0) | 2010.04.15 |
---|---|
waveInAddBuffer Function (0) | 2010.04.15 |
waveInPrepareHeader Function (0) | 2010.04.15 |
waveInOpen Function (0) | 2010.04.15 |
WAVEHDR Structure (0) | 2010.04.14 |