]> granicus.if.org Git - handbrake/commitdiff
libhb: merge fix for overlapping start time bug in CFR mode to bugfix branch
authorjstebbins <jstebbins.hb@gmail.com>
Thu, 12 Apr 2012 18:23:36 +0000 (18:23 +0000)
committerjstebbins <jstebbins.hb@gmail.com>
Thu, 12 Apr 2012 18:23:36 +0000 (18:23 +0000)
git-svn-id: svn://svn.handbrake.fr/HandBrake/branches/0.9.x@4592 b64f7644-9d1e-0410-96f1-a4d463321fa5

libhb/render.c

index 5fded023eafa7acec18c0943391d8135b9ac1005..bac205eb375eec6f6a329bdc997a821ea8e2c2ac 100644 (file)
@@ -467,6 +467,7 @@ static void adjust_frame_rate( hb_work_private_t *pv, hb_buffer_t **buf_out )
             if ( out->stop <= cfr_stop )
             {
                 out->stop = cfr_stop;
+                pv->out_last_stop = out->stop;
             }
         }
         else
@@ -477,6 +478,7 @@ static void adjust_frame_rate( hb_work_private_t *pv, hb_buffer_t **buf_out )
             // each of which is a frame time long.
             double excess_dur = (double)out->stop - cfr_stop;
             out->stop = cfr_stop;
+            pv->out_last_stop = out->stop;
             for ( ; excess_dur >= pv->frame_rate; excess_dur -= pv->frame_rate )
             {
                 /* next frame too far ahead - dup current frame */
@@ -487,12 +489,12 @@ static void adjust_frame_rate( hb_work_private_t *pv, hb_buffer_t **buf_out )
                 dup->start = cfr_stop;
                 cfr_stop += pv->frame_rate;
                 dup->stop = cfr_stop;
+                pv->out_last_stop = dup->stop;
                 out = insert_buffer_in_chain( out, dup );
                 ++pv->dups;
                 ++pv->count_frames;
             }
         }
-        pv->out_last_stop = out->stop;
         out = out->next;
     }
 }