diff --git a/apps/mp3/mp3.c b/apps/mp3/mp3.c index e2c479ac..0241c177 100644 --- a/apps/mp3/mp3.c +++ b/apps/mp3/mp3.c @@ -196,7 +196,7 @@ long MP3_create(const char* format_parameters, amci_codec_fmt_info_t* format_des void MP3_destroy(long h_inst) { if (h_inst){ if (((mp3_coder_state*)h_inst)->gfp) - free(((mp3_coder_state*)h_inst)->gfp); + lame_close(((mp3_coder_state*)h_inst)->gfp); #ifdef WITH_MPG123DECODER mpg123_delete(((mp3_coder_state*)h_inst)->mpg123_h); #endif @@ -383,11 +383,16 @@ static int MP3_close(FILE* fp, struct amci_file_desc_t* fmt_desc, int options, l unsigned char mp3buffer[7200]; DBG("MP3: close. \n"); if(options == AMCI_WRONLY) { - if ((final_samples = lame_encode_flush((lame_global_flags *)h_codec,mp3buffer, 7200))) { + if (!h_codec || !((mp3_coder_state*)h_codec)->gfp) { + ERROR("no valid codec handle!\n"); + return -1; + } + + if ((final_samples = lame_encode_flush(((mp3_coder_state*)h_codec)->gfp,mp3buffer, 7200))) { fwrite(mp3buffer, 1, final_samples, fp); DBG("MP3: flushing %d bytes from MP3 encoder.\n", final_samples); } - lame_mp3_tags_fid((lame_global_flags *)h_codec,fp); + lame_mp3_tags_fid(((mp3_coder_state*)h_codec)->gfp,fp); } return 0; }