void encoder_progress( lame_global_flags const* gf ) { if (global_ui_config.silent <= 0) { int const frames = lame_get_frameNum(gf); int const frames_diff = frames - global_encoder_progress.last_frame_num; if (global_ui_config.update_interval <= 0) { /* most likely --disptime x not used */ if (frames_diff < 100 && frames_diff != 0) { /* true, most of the time */ return; } global_encoder_progress.last_frame_num = (frames/100)*100; } else { if (frames != 0 && frames != 9) { double const act = GetRealTime(); double const dif = act - global_encoder_progress.last_time; if (dif >= 0 && dif < global_ui_config.update_interval) { return; } } global_encoder_progress.last_time = GetRealTime(); /* from now! disp_time seconds */ } if (global_ui_config.brhist) { brhist_jump_back(); } timestatus(gf); if (global_ui_config.brhist) { brhist_disp(gf); } console_flush(); } }
void encoder_progress_end( lame_global_flags const* gf ) { if (global_ui_config.silent <= 0) { if (global_ui_config.brhist) { brhist_jump_back(); } timestatus(gf); if (global_ui_config.brhist) { brhist_disp(gf); } timestatus_finish(); } }
void timestatus_klemm ( const lame_global_flags* const gfp ) { static double last_time = 0.; if ( silent <= 0 ) if ( lame_get_frameNum(gfp) == 0 || lame_get_frameNum(gfp) == 9 || GetRealTime () - last_time >= update_interval || GetRealTime () - last_time < 0 ) { #ifdef BRHIST brhist_jump_back(); #endif timestatus ( lame_get_out_samplerate( gfp ), lame_get_frameNum(gfp), lame_get_totalframes(gfp), lame_get_framesize(gfp) ); #ifdef BRHIST if ( brhist ) { brhist_disp ( gfp ); } #endif last_time = GetRealTime (); /* from now! disp_time seconds */ } }
int lame_encoder(lame_global_flags * gf, FILE * outf, int nogap, char *inPath, char *outPath) { unsigned char mp3buffer[LAME_MAXMP3BUFFER]; int Buffer[2][1152]; int iread, imp3; static const char *mode_names[2][4] = { {"stereo", "j-stereo", "dual-ch", "single-ch"}, {"stereo", "force-ms", "dual-ch", "single-ch"} }; int frames; if (silent < 10) { lame_print_config(gf); /* print useful information about options being used */ fprintf(stderr, "Encoding %s%s to %s\n", strcmp(inPath, "-") ? inPath : "<stdin>", strlen(inPath) + strlen(outPath) < 66 ? "" : "\n ", strcmp(outPath, "-") ? outPath : "<stdout>"); fprintf(stderr, "Encoding as %g kHz ", 1.e-3 * lame_get_out_samplerate(gf)); { const char *appendix = ""; switch (lame_get_VBR(gf)) { case vbr_mt: case vbr_rh: case vbr_mtrh: appendix = "ca. "; fprintf(stderr, "VBR(q=%i)", lame_get_VBR_q(gf)); break; case vbr_abr: fprintf(stderr, "average %d kbps", lame_get_VBR_mean_bitrate_kbps(gf)); break; default: fprintf(stderr, "%3d kbps", lame_get_brate(gf)); break; } fprintf(stderr, " %s MPEG-%u%s Layer III (%s%gx) qval=%i\n", mode_names[lame_get_force_ms(gf)][lame_get_mode(gf)], 2 - lame_get_version(gf), lame_get_out_samplerate(gf) < 16000 ? ".5" : "", appendix, 0.1 * (int) (10. * lame_get_compression_ratio(gf) + 0.5), lame_get_quality(gf)); } if (silent <= -10) lame_print_internals(gf); fflush(stderr); } /* encode until we hit eof */ do { /* read in 'iread' samples */ iread = get_audio(gf, Buffer); frames = lame_get_frameNum(gf); /********************** status display *****************************/ if (silent <= 0) { if (update_interval > 0) { timestatus_klemm(gf); } else { if (0 == frames % 50) { #ifdef BRHIST brhist_jump_back(); #endif timestatus(lame_get_out_samplerate(gf), frames, lame_get_totalframes(gf), lame_get_framesize(gf)); #ifdef BRHIST if (brhist) brhist_disp(gf); #endif } } } /* encode */ imp3 = lame_encode_buffer_int(gf, Buffer[0], Buffer[1], iread, mp3buffer, sizeof(mp3buffer)); /* was our output buffer big enough? */ if (imp3 < 0) { if (imp3 == -1) fprintf(stderr, "mp3 buffer is not big enough... \n"); else fprintf(stderr, "mp3 internal error: error code=%i\n", imp3); return 1; } if (fwrite(mp3buffer, 1, imp3, outf) != imp3) { fprintf(stderr, "Error writing mp3 output \n"); return 1; } } while (iread); if (nogap) imp3 = lame_encode_flush_nogap(gf, mp3buffer, sizeof(mp3buffer)); /* may return one more mp3 frame */ else imp3 = lame_encode_flush(gf, mp3buffer, sizeof(mp3buffer)); /* may return one more mp3 frame */ if (imp3 < 0) { if (imp3 == -1) fprintf(stderr, "mp3 buffer is not big enough... \n"); else fprintf(stderr, "mp3 internal error: error code=%i\n", imp3); return 1; } if (silent <= 0) { #ifdef BRHIST brhist_jump_back(); #endif frames = lame_get_frameNum(gf); timestatus(lame_get_out_samplerate(gf), frames, lame_get_totalframes(gf), lame_get_framesize(gf)); #ifdef BRHIST if (brhist) { brhist_disp(gf); } brhist_disp_total(gf); #endif timestatus_finish(); } fwrite(mp3buffer, 1, imp3, outf); return 0; }