Header einer Wave-Datei auslesen?

Hallo,

wie kann ich aus einer beliebigen Wave-Datei den Header bzw. die darin enthaltenen Informationen mit C++ (VC++ 6.0) auslesen? Mich interessieren vor allem die Sampling-Frequenz, die Anzahl der Sampling-Bits (8 oder 16) und ob die Datei mono oder stereo ist. Wenn möglich, sollte man diese Werte auch weiterarbeiten können, also z.B.

if (anzahl_samplebits==16) machedas();

Kann mir dabei jemand helfen?

Danke, Robert

wie kann ich aus einer beliebigen Wave-Datei den Header bzw.
die darin enthaltenen Informationen mit C++ (VC++ 6.0)
auslesen? Mich interessieren vor allem die Sampling-Frequenz,
die Anzahl der Sampling-Bits (8 oder 16) und ob die Datei mono
oder stereo ist. Wenn möglich, sollte man diese Werte auch
weiterarbeiten können, also z.B.

if (anzahl_samplebits==16) machedas();

Hi Robert,

hier ein kleines „Quick und Dirty“ c-prg. Kannst natürlich auch die fstream-Klasse in c++ benutzen.

Gruß Frank

#include 

struct waveheader
{
 // RIFF - CHUNK
 char riff\_name[4]; // Enthält den Namen "RIFF"
 long riff\_laenge; // Enthält Länge des Riffchunks
 char riff\_type[4]; // Hier steht "WAVE"
 // FMT - CHUNK
 char fmt\_name[4]; // Enthält "FMT"
 long fmt\_laenge; // Länge des fmt-chunks
 short formattyp; // 0=Mono, 1=Stereo
 short kanalzahl; // Anz. der benutzten Kanäle
 long samplerate; // Sample-Rate in Herz
 long b\_pro\_sec; // Bytes pro Sekunde
 short b\_pro\_sample; // Bytes pro Sample 1=8bitMono 2=8bitStereo 4=16bitStereo
 short Bits\_per\_sample; 
};


void main(void)
{
 waveheader w;
 FILE \*fptr;
 if ( !(fptr=fopen("lalala.wav", "rb"))) return;

 fread((void \*) &w, sizeof(w), 1, fptr);

 if (w.Bits\_per\_sample==16) machedas();
 fclose(fptr); 
}