]> granicus.if.org Git - handbrake/commitdiff
libhb: fix incorrect audio gaps
authorjstebbins <jstebbins.hb@gmail.com>
Sun, 1 Apr 2012 15:34:47 +0000 (15:34 +0000)
committerjstebbins <jstebbins.hb@gmail.com>
Sun, 1 Apr 2012 15:34:47 +0000 (15:34 +0000)
When the duratation of an audio packet is not evenly divisible by the
90khz clock, we were loosing a fraction of a tick per audio packet.  This
causes every packet to be tagged with a timestamp that is a little early
and eventually a gap must be filled to maintain sync.

git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4574 b64f7644-9d1e-0410-96f1-a4d463321fa5

libhb/decavcodec.c

index 33b45fa12fc69b91a9fc3fc8b10ab697621e437b..bb7c4c3c30026de504ed85d3e3c731d659a5f290 100644 (file)
@@ -1483,7 +1483,9 @@ static void decodeAudio( hb_audio_t * audio, hb_work_private_t *pv, uint8_t *dat
     int pos = 0;
     int loop_limit = 256;
 
-    if ( pts != -1 )
+    // If we are givn a pts, use it.
+    // But don't loose partial ticks.
+    if ( pts != -1 && (int64_t)pv->pts_next != pts )
         pv->pts_next = pts;
     while ( pos < size )
     {