68 lines
1.8 KiB
C
68 lines
1.8 KiB
C
#include <stdio.h>
|
|
#include <stdint.h>
|
|
|
|
// Definition Wav struct
|
|
struct Wav
|
|
{
|
|
char chunkID[4];
|
|
uint32_t chunkSize;
|
|
char format[4];
|
|
char subchunk1ID[4];
|
|
uint32_t subchunk1Size;
|
|
uint16_t audioFormat;
|
|
uint16_t numChannels;
|
|
uint32_t sampleRate;
|
|
uint32_t byteRate;
|
|
uint16_t blockAlign;
|
|
uint16_t bitsPerSample;
|
|
char subchunk2ID[4];
|
|
uint32_t subchunk2Size;
|
|
|
|
};
|
|
|
|
// Union zum Auslesen des Wav struct
|
|
union ReadWav
|
|
{
|
|
struct Wav header;
|
|
char c[44];
|
|
};
|
|
|
|
int main()
|
|
{
|
|
char inputFileName[260];
|
|
|
|
printf("Input file name: ");
|
|
scanf("%s", inputFileName);
|
|
|
|
// FILE pointer auf Datei zum einlesen
|
|
FILE *inputFile = fopen(inputFileName, "r");
|
|
|
|
if (!inputFile)
|
|
{
|
|
printf("Input file not found/corrupted!\n");
|
|
return 1;
|
|
}
|
|
|
|
// Wav-Header über char Array einlesen und Freigabe von FILE pointer
|
|
union ReadWav wavData;
|
|
fread(wavData.c, sizeof(wavData.c), 1, inputFile);
|
|
fclose(inputFile);
|
|
|
|
// Headerdaten über struct ausgeben
|
|
printf("ChunkID: %.4s\n", wavData.header.chunkID);
|
|
printf("ChunkSize: %d bytes\n", wavData.header.chunkSize);
|
|
printf("Format: %.4s\n", wavData.header.format);
|
|
printf("Subchunk1ID: %.4s\n", wavData.header.subchunk1ID);
|
|
printf("Subchunk1Size: %d bytes\n", wavData.header.subchunk1Size);
|
|
printf("AudioFormat: %d\n", wavData.header.audioFormat);
|
|
printf("NumChannels: %d\n", wavData.header.numChannels);
|
|
printf("SampleRate: %d Hz\n", wavData.header.sampleRate);
|
|
printf("ByteRate: %d bytes/second\n", wavData.header.byteRate);
|
|
printf("BlockAlign: %d bytes\n", wavData.header.blockAlign);
|
|
printf("BitsPerSample: %d\n", wavData.header.bitsPerSample);
|
|
printf("Subchunk2ID: %.4s\n", wavData.header.subchunk2ID);
|
|
printf("Subchunk2Size: %d bytes\n", wavData.header.subchunk2Size);
|
|
|
|
return 0;
|
|
}
|