Wave파일 열어 봤다.
struct WAVEHEADER
{
char dwChunkID[4]; //RIFF
DWORD dwChunkSize; //ChunkID와 ChunkSize를 제외한 크기
char dwFormat[4]; //WAVE
char dwSubChunk1ID[4]; //"fmt "
DWORD dwSubChunk1Size;
unsigned short usAudioFormat; //PCM = 1
unsigned short usChannel; // Mono = 1, Stereo = 2, Etc
DWORD dwSampleRate; // 8800, 44100, etc
DWORD dwByteRate; // SampleRate * NumChannels * BitsPerSample / 8
unsigned short usBlockAlign; // NumChannel * BitPerSample / 8
unsigned short usBitsPerSameple; // 8bits = 8, 16bits = 16, etc
char dwSubChunk2ID[4]; //data
DWORD dwSubChunk2Size; //소리 자료 사이즈
};
void Load_Wave_File(char *fname)
{
FILE *fp;
char* pData;
fp = fopen(fname,"rb");
struct WAVEHEADER data;
fread( &data, sizeof(struct WAVEHEADER), 1, fp );
pData = new char[data.dwSubChunk2Size];
fread( pData, data.dwSubChunk2Size, 1, fp );
char temp;
fread ( &temp, 1, 1, fp );
int iSize = ftell(fp);
fseek( fp, 0, SEEK_END );
iSize = ftell(fp);
fclose(fp);
}
스펙은 https://ccrma.stanford.edu/courses/422/projects/WaveFormat/ 이곳을 참고해서 만들었다. WAVE, PCM이외에는 처리 하지 않음. ㅎㅎ 안되는건 포맷을 변환
Posted by Junios

