diff options
author | Hans Verkuil <hans.verkuil@cisco.com> | 2015-03-09 18:06:27 +0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@osg.samsung.com> | 2015-04-03 02:55:12 +0300 |
commit | 1f9f23f62fb46d6cef93febe57bf41fb21fd01fa (patch) | |
tree | bfba8aa8d5f56dff9343289e128b0393aacdd56c /drivers/media/platform/vivid/vivid-vid-out.c | |
parent | ddcaee9dd4c00174db8ddf913c87ddf3773c446e (diff) | |
download | linux-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.c | 7 |
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)) { |