summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjstebbins <[email protected]>2010-04-22 01:57:09 +0000
committerjstebbins <[email protected]>2010-04-22 01:57:09 +0000
commitfa7502ca1b3fb07a785e59d9834009df54bfb19a (patch)
treee2e41939b759591cac1f64c3b898ae3ca5b25d68
parent264340057fe7b79509bc1a206583ea1ccab975c0 (diff)
fix fps logging when there is no audio track.
where there's no audio, the muxer closes earlier than when there is audio due to reference counting. upon close, the muxer sets the muxing state which overwrites the current state that includes the avg fps. so log the avg fps before closing mux. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3251 b64f7644-9d1e-0410-96f1-a4d463321fa5
-rw-r--r--libhb/muxcommon.c19
-rw-r--r--libhb/work.c12
2 files changed, 19 insertions, 12 deletions
diff --git a/libhb/muxcommon.c b/libhb/muxcommon.c
index 702285bba..b6b5a2a57 100644
--- a/libhb/muxcommon.c
+++ b/libhb/muxcommon.c
@@ -289,6 +289,19 @@ void muxClose( hb_work_object_t * w )
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 );
@@ -301,12 +314,6 @@ void muxClose( hb_work_object_t * w )
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 );
diff --git a/libhb/work.c b/libhb/work.c
index eea492b9c..935ffa490 100644
--- a/libhb/work.c
+++ b/libhb/work.c
@@ -939,6 +939,12 @@ static void do_job( hb_job_t * job, int cpu_count )
}
}
+ 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 )
{
@@ -953,12 +959,6 @@ static void do_job( hb_job_t * job, int cpu_count )
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;