ext/dv/gstdvdec.c: Allow a little margin when negotiating the framerate.
authorWim Taymans <wim.taymans@gmail.com>
Tue, 26 Oct 2004 17:59:18 +0000 (17:59 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Tue, 26 Oct 2004 17:59:18 +0000 (17:59 +0000)
Original commit message from CVS:
* ext/dv/gstdvdec.c: (gst_dvdec_video_getcaps),
(gst_dvdec_video_link), (gst_dvdec_push), (gst_dvdec_loop):
Allow a little margin when negotiating the framerate.

ChangeLog
ext/dv/gstdvdec.c

index c43c566..8381c72 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2004-10-26  Wim Taymans  <wim@fluendo.com>
+
+       * ext/dv/gstdvdec.c: (gst_dvdec_video_getcaps),
+       (gst_dvdec_video_link), (gst_dvdec_push), (gst_dvdec_loop):
+       Allow a little margin when negotiating the framerate.
+
 2004-10-26  Stefan Kost  <ensonic@users.sf.net>
 
        * gst/level/gstlevel.c:
index ea89158..19bf308 100644 (file)
@@ -21,6 +21,7 @@
 #include "config.h"
 #endif
 #include <string.h>
+#include <math.h>
 
 /* First, include the header file for the plugin, to bring in the
  * object definition and other useful things.
@@ -824,8 +825,9 @@ gst_dvdec_video_link (GstPad * pad, const GstCaps * caps)
       !gst_structure_get_double (structure, "framerate", &framerate))
     return GST_PAD_LINK_REFUSED;
 
-  if ((height != dvdec->height)
-      || (framerate != dvdec->framerate / dvdec->drop_factor))
+  /* allow a margin of error for the framerate caused by float rounding errors */
+  if ((height != dvdec->height) ||
+      (fabs (framerate - (dvdec->framerate / dvdec->drop_factor)) > 0.00000001))
     return GST_PAD_LINK_REFUSED;
 
   if (strcmp (gst_structure_get_name (structure), "video/x-raw-rgb") == 0) {