2007년 4월 3일 화요일

Uncompressed wave file 에서 정보 추출

압축되지 않은 wave 파일에서 header 정보를 가져오는 소스


[CODE] #include typedef struct { char wavRIFFChunk[4]; long wavSize; char wavWAVEChunk[4]; char wavFMTChunk[4]; long wavFormatSize; short wavPCMFormatFlag; short wavChannel; long wavSampleRate; long wavSampleRatePerSec; short wavPerSecScale; short wavBits; char wavDataChunk[4]; long wavDataSize; }wav_header; int main(int argc, char** argv) { wav_header in_wav; FILE* fp; char pBuffer[5]; if(argc != 2) { printf("usage : getwavinfo.exe [wav_file]\n"); return 1; } if((fp = fopen(argv[1], "rb")) == NULL) { printf("file open error : %s\n", argv[1]); return 1; } fread(&in_wav, sizeof(wav_header), 1, fp); fclose(fp); strncpy(pBuffer, in_wav.wavRIFFChunk, 4); pBuffer[4] = 0; printf("Riff Chunk : %s\n", pBuffer); printf("Size : %d byte(s)\n", in_wav.wavSize); strncpy(pBuffer, in_wav.wavWAVEChunk, 4); pBuffer[4] = 0; printf("Wave Chunk : %s\n", pBuffer); strncpy(pBuffer, in_wav.wavFMTChunk, 4); pBuffer[4] = 0; printf("FMT Chunk : %s\n", pBuffer); printf("Format Size : %d\n", in_wav.wavFormatSize); printf("PCM Format Flag : %d\n", in_wav.wavPCMFormatFlag); printf("Channels : %d\n", in_wav.wavChannel); printf("Sample Rate : %d\n", in_wav.wavSampleRate); printf("Sample Rate Per Second : %d\n", in_wav.wavSampleRatePerSec); printf("Per Second Scale : %d\n", in_wav.wavPerSecScale); printf("Bits Per Sample : %d\n", in_wav.wavBits); strncpy(pBuffer, in_wav.wavDataChunk, 4); pBuffer[4] = 0; printf("Data Chunk : %s\n", pBuffer); printf("Data Size : %d\n", in_wav.wavDataSize); return 0; } [/CODE]

댓글 없음:

댓글 쓰기