- Wave File 구조
- 3개의 Chunk로 이루어져 있다.
- Chunk란 말이 생소하다면 블록이라 생각하시면 이해가 쉬울것이다.
- 음성이나 여상 파일은 다른 파일에 비해 매우 크다. 이런 이유 때문에여러 개의 블록으로 나누어 저장하는 방식을 취한다.
- 이러한 방식의 파일을 RIFF(Resoure Interchange File Format)이라 한다.
- 멀티이디어의 특별한 유형의 파일 포맷이다.
- 나뉘어 지는 블록이 Chunk인데 보통 세 개의 Chunk로 나뉘어 진다.
- 첫 번째 Chunk는 부모 Chunk라 하여 여기에는
- 자신의 Chunk ID와
- 파일의 종류를 알려주는 fccType
-
Data Field를 가지고 있다.
부모 Chunk ckid="RIFF" cksize fccType="WAVE" Data Field
자식 Chunk
Format Chunk Chunk ID="fmt"
Chunk Size=16 byte
Format dataData Chunk
ckid="data"
cksize
Data - 부모 Chunk
- Chunk ID(ckid) => 자신의 Chunk ID
- fccType = > 파일의 종류를 알려주기 위한 4 개의 문자로 구성되어 있다.
Wave파일에는 "WAVE"로 되어 Type를 알려준다. - cksize
- Data Field => 자식Chunk Format Chunk 와 Data chunk로 구성 되어있다.
- 자식 Chunk
- Format Chunk
-
- chunk ID(ckid) => "fm t"라는 무자가 들어가 있음.
* 중요
chid,fccType는 항상 4개의 문자로 채워져야 합니다.
따라서 fmt 다음에 공백("fmt ")까지 포함되어 있어야 합니다. - cksize => Wave파일에서는 16 byte 크기의 Foramt data를 가지고 있음.
- Wave Format = >이 정보는 WAVEFORMATEX 구조체가 가지고 있음.
- WAVEFORAMTEX의 구조
typedef struct {
WORD wFormatTag;
WORD nChannels;
DWORD nSamplesPerSec;
DWORD nAvgBytesPerSec;
WORD nBlockAlign;
WORD wBitsPerSample;
WORD cbSize;
} WAVEFORMATEX;멤버 변수 설 명 wFormatTag Wave Format의 형식 nChannels Wave 파일에서 사용하는 채널 수 nSamplesPerSec 초당 sample 수 nAvgBytesPerSec 초당 데이터의 평균 바이트 수 nBlockAlign 샘플당 바이트수 * 채널 수 wBitsPerSample 샘플당 bit 수 cbSize 항상 0
- chunk ID(ckid) => "fm t"라는 무자가 들어가 있음.
- Data Chunk(실제적인 파일의 data를 가지고 있음.)<
Wave Data File 구조
2009. 1. 15. 16:16