hb_lock( mux->mutex );
if ( --mux->ref == 0 )
{
+ // Update state before closing muxer. Closing the muxer
+ // may initiate optimization which can take a while and
+ // we want the muxing state to be visible while this is
+ // happening.
+ if( job->pass == 0 || job->pass == 2 )
+ {
+ /* Update the UI */
+ hb_state_t state;
+ state.state = HB_STATE_MUXING;
+ state.param.muxing.progress = 0;
+ hb_set_state( job->h, &state );
+ }
+
if( mux->m )
{
mux->m->end( mux->m );
struct stat sb;
uint64_t bytes_total, frames_total;
- /* Update the UI */
- hb_state_t state;
- state.state = HB_STATE_MUXING;
- state.param.muxing.progress = 0;
- hb_set_state( job->h, &state );
-
if( !stat( job->file, &sb ) )
{
hb_deep_log( 2, "mux: file size, %"PRId64" bytes", (uint64_t) sb.st_size );
}
}
+ hb_handle_t * h = job->h;
+ hb_state_t state;
+ hb_get_state( h, &state );
+
+ hb_log("work: average encoding speed for job is %f fps", state.param.working.rate_avg);
+
job->done = 1;
if( muxer != NULL )
{
free( sync );
}
- hb_handle_t * h = job->h;
- hb_state_t state;
- hb_get_state( h, &state );
-
- hb_log("work: average encoding speed for job is %f fps", state.param.working.rate_avg);
-
cleanup:
/* Stop the write thread (thread_close will block until the muxer finishes) */
job->done = 1;