lame verwenden um mp3 datei zu lesen und wieder speichern
-
hi, warum bekomme ich bei folgendem code eine exeption wenn ich read = hip_decode_headers aufrufe? zum code soll noch ein filter implementiert werden...
lg
int main() { int read, write; FILE *mp3_in = fopen("music_noisy.mp3", "rb"); FILE *mp3_out = fopen("music_noisy2.mp3", "wb"); const int PCM_SIZE = 8192; const int MP3_SIZE = 8192; short int pcm_buffer[PCM_SIZE*2]; short int pcm_buffer1[PCM_SIZE]; short int pcm_buffer2[PCM_SIZE]; unsigned char mp3_buffer[MP3_SIZE]; mp3data_struct mp3data = {0}; memset(pcm_buffer, 0, sizeof(pcm_buffer)); memset(pcm_buffer1, 0, sizeof(pcm_buffer1)); memset(pcm_buffer2, 0, sizeof(pcm_buffer2)); memset(mp3_buffer, 0, sizeof(mp3_buffer)); lame_t lame = lame_init(); hip_t l = hip_decode_init(); lame_set_in_samplerate(lame, 44100); lame_set_VBR(lame, vbr_default); //lame_set_mode(lame, MONO); lame_init_params(lame); do { read = fread(mp3_buffer, sizeof(unsigned char), MP3_SIZE, mp3_in); read = hip_decode_headers(l, mp3_buffer, MP3_SIZE, pcm_buffer1, pcm_buffer2, &mp3data); memcpy(pcm_buffer, pcm_buffer1, sizeof(pcm_buffer1)); memcpy(&pcm_buffer[PCM_SIZE], pcm_buffer2, sizeof(pcm_buffer2)); write = lame_encode_buffer_interleaved(lame, pcm_buffer, read, mp3_buffer, MP3_SIZE); fwrite(mp3_buffer, write, 1, mp3_out); } while (read != 0); hip_decode_exit(l); lame_close(lame); fclose(mp3_out); fclose(mp3_in); return 0; }