x264: Fix dts comparision
authorEdward Hervey <edward@collabora.com>
Fri, 26 Jul 2013 14:39:12 +0000 (16:39 +0200)
committerEdward Hervey <edward@collabora.com>
Fri, 26 Jul 2013 14:47:30 +0000 (16:47 +0200)
We were assigning to a guint64 value (frame->dts) the sum of a unsigned
and signed value... resulting it the result never being < 0.

Instead just check if it is smaller before assigning to frame->dts.

ext/x264/gstx264enc.c

index e4631d41b9949f5779c6f6edd7701ea58ad115bf..037de66569d78388397eaff55434d781b289615e 100644 (file)
@@ -1900,12 +1900,13 @@ gst_x264_enc_encode_frame (GstX264Enc * encoder, x264_picture_t * pic_in,
     }
   }
 
-  frame->dts = pic_out.i_dts + encoder->dts_offset;
-  /* should be ok now, surprise if not */
-  if (frame->dts < 0) {
+  if (pic_out.i_dts + encoder->dts_offset < 0) {
+    /* should be ok now, surprise if not */
     GST_WARNING_OBJECT (encoder, "negative dts after offset compensation");
     frame->dts = GST_CLOCK_TIME_NONE;
-  }
+  } else
+    frame->dts = pic_out.i_dts + encoder->dts_offset;
+
 
   if (pic_out.b_keyframe) {
     GST_DEBUG_OBJECT (encoder, "Output keyframe");