]> granicus.if.org Git - handbrake/commitdiff
work: set orig_vrate correctly
authorJohn Stebbins <jstebbins.hb@gmail.com>
Tue, 28 Feb 2017 21:59:06 +0000 (14:59 -0700)
committerJohn Stebbins <jstebbins.hb@gmail.com>
Tue, 28 Feb 2017 21:59:06 +0000 (14:59 -0700)
It was getting set to the title's rate instead of the rate that the
filter chain sets.

An incorrect vrate causes x265 rate control breakage.

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

libhb/work.c

index ad11ee005430cdb92e490f91703cc70e409bf9c5..831f83a8b253393e39c74af5aa249d839ae55ae2 100644 (file)
@@ -1355,7 +1355,6 @@ static void do_job(hb_job_t *job)
     title = job->title;
 
     interjob = hb_interjob_get(job->h);
-    job->orig_vrate = job->vrate;
     if (job->sequence_id != interjob->sequence_id)
     {
         // New job sequence, clear interjob
@@ -1480,6 +1479,7 @@ static void do_job(hb_job_t *job)
         job->cfr = 0;
     }
 
+    job->orig_vrate = job->vrate;
     if (job->pass_id == HB_PASS_ENCODE_2ND)
     {
         correct_framerate(interjob, job);
@@ -1489,6 +1489,8 @@ static void do_job(hb_job_t *job)
      * The frame rate may affect the bitstream's time base, lose superfluous
      * factors for consistency (some encoders reduce fractions, some don't).
      */
+    hb_reduce(&job->orig_vrate.num, &job->orig_vrate.den,
+               job->orig_vrate.num,  job->orig_vrate.den);
     hb_reduce(&job->vrate.num, &job->vrate.den,
                job->vrate.num,  job->vrate.den);