[media] vivid: add support for reduced frame rate in video capture
authorPrashant Laddha <prladdha@cisco.com>
Tue, 22 Sep 2015 14:27:31 +0000 (11:27 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Tue, 17 Nov 2015 17:06:22 +0000 (15:06 -0200)
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.

Signed-off-by: Prashant Laddha <prladdha@cisco.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/platform/vivid/vivid-vid-cap.c

index ef5412311b2fa057a9dc96f5f0f620ddfaa9f0ce..45a2ed85ad83967a706e5ee0bbe8c5d6cd0bf4a1 100644 (file)
@@ -405,6 +405,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:
@@ -434,8 +435,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;
This page took 0.025551 seconds and 5 git commands to generate.