decodieren schlägt fehl - mpglib
-
Hallo
ich habe mir die "mpglib" runtergeladen um damit MP3's zu decodieren.
Schon am ersten Beispiel hackts bei mir
der beispielcode:
#include <windows.h> #include "mpglibdll.h" HINSTANCE hmpglibdll; INITMP3 InitMP3; EXITMP3 ExitMP3; DECODEMP3 decodeMP3; char buf[16384]; struct mpstr mp; int main (void) { int size; char out[8192]; int len,ret; hmpglibdll = LoadLibrary("mpglib.dll"); if (!hmpglibdll) return (NO_DLL_FOUND); InitMP3 = (INITMP3) GetProcAddress(hmpglibdll, TEXT_INITMP3); ExitMP3 = (EXITMP3) GetProcAddress(hmpglibdll, TEXT_EXITMP3); decodeMP3 = (DECODEMP3) GetProcAddress(hmpglibdll, TEXT_DECODEMP3); InitMP3(&mp); while( !eof() ) { len = read(0,buf,16384); if(len <= 0) break; ret = decodeMP3(&mp,buf,len,out,8192,&size); while(ret == MP3_OK) { write(1,out,size); ret = decodeMP3(&mp,NULL,0,out,8192,&size); } } ExitMP3(&mp); FreeLibrary(hmpglibdll); return (0); }das wollte ich so umschreiben, dass es mit dateien statt der ein und ausgabe arbeitet
#include <windows.h> #include "mpglibdll.h" #include <stdio.h> #include <fstream> HINSTANCE hmpglibdll; INITMP3 InitMP3; EXITMP3 ExitMP3; DECODEMP3 decodeMP3; char buf[16384]; struct mpstr mp; int main (void) { int size; char out[8192]; int ret; DWORD len; hmpglibdll = LoadLibrary("mpglib.dll"); if (!hmpglibdll) return (-1); InitMP3 = (INITMP3) GetProcAddress(hmpglibdll, TEXT_INITMP3); ExitMP3 = (EXITMP3) GetProcAddress(hmpglibdll, TEXT_EXITMP3); decodeMP3 = (DECODEMP3) GetProcAddress(hmpglibdll, TEXT_DECODEMP3); InitMP3(&mp); std::fstream infile("E:\\input.mp3", std::ios::binary | std::ios::in); std::fstream outfile("E:\\output.wav", std::ios::binary | std::ios::out); while(!infile.eof()) { len = 16384; infile.read(buf, 16384); ret = decodeMP3(&mp,buf,len,out,8192,&size); while(ret == MP3_OK) { outfile.write(out, size); ret = decodeMP3(&mp,NULL,0,out,8192,&size); } } ExitMP3(&mp); FreeLibrary(hmpglibdll); return (0); }allerdings bricht die funktion ab und ich habe schrott in der datei...
was hab ich falsch gemacht?