summaryrefslogtreecommitdiff
path: root/drivers/media/platform/vivid/vivid-vid-out.c
diff options
context:
space:
mode:
authorHans Verkuil <hans.verkuil@cisco.com>2015-03-09 18:06:27 +0300
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>2015-04-03 02:55:12 +0300
commit1f9f23f62fb46d6cef93febe57bf41fb21fd01fa (patch)
treebfba8aa8d5f56dff9343289e128b0393aacdd56c /drivers/media/platform/vivid/vivid-vid-out.c
parentddcaee9dd4c00174db8ddf913c87ddf3773c446e (diff)
downloadlinux-1f9f23f62fb46d6cef93febe57bf41fb21fd01fa.tar.xz
[media] vivid: add downsampling support
Add support in vivid for downsampling. Most of the changes are in vivid_copy_buffer which needs to know about the right line widths. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
Diffstat (limited to 'drivers/media/platform/vivid/vivid-vid-out.c')
-rw-r--r--drivers/media/platform/vivid/vivid-vid-out.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/media/platform/vivid/vivid-vid-out.c b/drivers/media/platform/vivid/vivid-vid-out.c
index eeafb6c93c64..6c6deef3521c 100644
--- a/drivers/media/platform/vivid/vivid-vid-out.c
+++ b/drivers/media/platform/vivid/vivid-vid-out.c
@@ -43,7 +43,7 @@ static int vid_out_queue_setup(struct vb2_queue *vq, const struct v4l2_format *f
unsigned p;
for (p = vfmt->buffers; p < vfmt->planes; p++)
- size += dev->bytesperline_out[p] * h;
+ size += dev->bytesperline_out[p] * h / vfmt->vdownsampling[p];
if (dev->field_out == V4L2_FIELD_ALTERNATE) {
/*
@@ -331,7 +331,8 @@ int vivid_g_fmt_vid_out(struct file *file, void *priv,
for (p = fmt->buffers; p < fmt->planes; p++) {
unsigned stride = dev->bytesperline_out[p];
- mp->plane_fmt[0].sizeimage += stride * mp->height;
+ mp->plane_fmt[0].sizeimage +=
+ (stride * mp->height) / fmt->vdownsampling[p];
}
return 0;
}
@@ -405,7 +406,7 @@ int vivid_try_fmt_vid_out(struct file *file, void *priv,
}
for (p = fmt->buffers; p < fmt->planes; p++)
pfmt[0].sizeimage += (pfmt[0].bytesperline * fmt->bit_depth[p]) /
- fmt->bit_depth[0];
+ (fmt->bit_depth[0] * fmt->vdownsampling[p]);
mp->ycbcr_enc = V4L2_YCBCR_ENC_DEFAULT;
mp->quantization = V4L2_QUANTIZATION_DEFAULT;
if (vivid_is_svid_out(dev)) {