From: Peter Seiderer Date: Fri, 14 Nov 2014 11:59:31 +0000 (+0100) Subject: v4l2object: reuse caps framerate if not overwritten by v4l2 device X-Git-Tag: 1.6.0~649 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c88e042458cf8f612ccb8680c9305eb287fdc2cd;p=platform%2Fupstream%2Fgst-plugins-good.git v4l2object: reuse caps framerate if not overwritten by v4l2 device Enables duration setting in v4l2src. https://bugzilla.gnome.org/show_bug.cgi?id=740403 --- diff --git a/sys/v4l2/gstv4l2object.c b/sys/v4l2/gstv4l2object.c index 8168b80..64e881f 100644 --- a/sys/v4l2/gstv4l2object.c +++ b/sys/v4l2/gstv4l2object.c @@ -2801,12 +2801,20 @@ gst_v4l2_object_set_format (GstV4l2Object * v4l2object, GstCaps * caps) if (v4l2_ioctl (fd, VIDIOC_S_PARM, &streamparm) < 0) goto set_parm_failed; - /* get new values */ - fps_d = streamparm.parm.capture.timeperframe.numerator; - fps_n = streamparm.parm.capture.timeperframe.denominator; - - GST_INFO_OBJECT (v4l2object->element, "Set framerate to %u/%u", fps_n, - fps_d); + if (streamparm.parm.capture.timeperframe.numerator > 0 && + streamparm.parm.capture.timeperframe.denominator > 0) { + /* get new values */ + fps_d = streamparm.parm.capture.timeperframe.numerator; + fps_n = streamparm.parm.capture.timeperframe.denominator; + + GST_INFO_OBJECT (v4l2object->element, "Set framerate to %u/%u", fps_n, + fps_d); + } else { + /* fix v4l2 capture driver to provide framerate values */ + GST_WARNING_OBJECT (v4l2object->element, + "Reuse caps framerate %u/%u - fix v4l2 capture driver", + fps_n, fps_d); + } GST_VIDEO_INFO_FPS_N (&info) = fps_n; GST_VIDEO_INFO_FPS_D (&info) = fps_d;