summaryrefslogtreecommitdiffstats
path: root/ext/dv
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2004-10-26 17:59:18 +0000
committerWim Taymans <wim.taymans@gmail.com>2004-10-26 17:59:18 +0000
commit17d464c602c9635ea84ba8d1237793bd8fac8d1f (patch)
treefdba0059a4bb1cb941a7895335400978f3ec2d77 /ext/dv
parent3538476c2d330e064793b329e5627ff08b089f4f (diff)
ext/dv/gstdvdec.c: Allow a little margin when negotiating the framerate.
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.
Diffstat (limited to 'ext/dv')
-rw-r--r--ext/dv/gstdvdec.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/ext/dv/gstdvdec.c b/ext/dv/gstdvdec.c
index ea891585..19bf308f 100644
--- a/ext/dv/gstdvdec.c
+++ b/ext/dv/gstdvdec.c
@@ -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) {