본문 바로가기

API / MFC/Wave In/Out API function

WAVEFORMATEX Structure

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