]> granicus.if.org Git - handbrake/commitdiff
libhb: fix Bob + CFR Same As Source + 2 Pass encode
authorJohn Stebbins <jstebbins.hb@gmail.com>
Thu, 9 Feb 2017 17:23:19 +0000 (10:23 -0700)
committerJohn Stebbins <jstebbins.hb@gmail.com>
Thu, 9 Feb 2017 17:23:19 +0000 (10:23 -0700)
The bob filter predicts the resulting output framerate as 2 * input
framerate.  So during 2 pass encoding, we must adjust the framerate with
the knows 1st pass values *after* any predictions made by filters.

Fixes https://github.com/HandBrake/HandBrake/issues/556

libhb/work.c

index 8aa920860ee50b099cb3423ac3e0f5f6cf5ce2ad..9010f1d3aa32371c2b45dcc2bbace96f58fe33ca 100644 (file)
@@ -1363,10 +1363,6 @@ static void do_job(hb_job_t *job)
         memset(interjob, 0, sizeof(*interjob));
         interjob->sequence_id = job->sequence_id;
     }
-    else if (job->pass_id == HB_PASS_ENCODE_2ND)
-    {
-        correct_framerate(interjob, job);
-    }
 
     job->list_work = hb_list_init();
     w = hb_get_work(job->h, WORK_READER);
@@ -1484,6 +1480,11 @@ static void do_job(hb_job_t *job)
         job->cfr = 0;
     }
 
+    if (job->pass_id == HB_PASS_ENCODE_2ND)
+    {
+        correct_framerate(interjob, job);
+    }
+
     /*
      * The frame rate may affect the bitstream's time base, lose superfluous
      * factors for consistency (some encoders reduce fractions, some don't).