With this patch, vivid capture thread can now generate a video with
frame rate reduced by a factor of 1000 / 1001. This option can be
selected using a control Reduced Framerate from gui.

Cc: Hans Verkuil <hans.verk...@cisco.com>
Signed-off-by: Prashant Laddha <prlad...@cisco.com>
---
 drivers/media/platform/vivid/vivid-vid-cap.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/media/platform/vivid/vivid-vid-cap.c 
b/drivers/media/platform/vivid/vivid-vid-cap.c
index ed0b878..74ba98f 100644
--- a/drivers/media/platform/vivid/vivid-vid-cap.c
+++ b/drivers/media/platform/vivid/vivid-vid-cap.c
@@ -401,6 +401,7 @@ void vivid_update_format_cap(struct vivid_dev *dev, bool 
keep_controls)
 {
        struct v4l2_bt_timings *bt = &dev->dv_timings_cap.bt;
        unsigned size;
+       u64 pixelclock;
 
        switch (dev->input_type[dev->input]) {
        case WEBCAM:
@@ -430,8 +431,15 @@ void vivid_update_format_cap(struct vivid_dev *dev, bool 
keep_controls)
                dev->src_rect.width = bt->width;
                dev->src_rect.height = bt->height;
                size = V4L2_DV_BT_FRAME_WIDTH(bt) * V4L2_DV_BT_FRAME_HEIGHT(bt);
+               if (dev->reduced_fps && can_reduce_fps(bt)) {
+                       pixelclock = div_u64(bt->pixelclock * 1000, 1001);
+                       bt->flags |= V4L2_DV_FL_REDUCED_FPS;
+               } else {
+                       pixelclock = bt->pixelclock;
+                       bt->flags &= ~V4L2_DV_FL_REDUCED_FPS;
+               }
                dev->timeperframe_vid_cap = (struct v4l2_fract) {
-                       size / 100, (u32)bt->pixelclock / 100
+                       size / 100, (u32)pixelclock / 100
                };
                if (bt->interlaced)
                        dev->field_cap = V4L2_FIELD_ALTERNATE;
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to