[media] media: rcar-vin: fix height for TOP and BOTTOM fields
The height used for V4L2_FIELD_TOP and V4L2_FIELD_BOTTOM where wrong. The frames only contain one field so the height should be half of the frame. Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
parent
d6482537f6
commit
c6b3d8fc79
|
@ -125,6 +125,8 @@ static int rvin_reset_format(struct rvin_dev *vin)
|
|||
switch (vin->format.field) {
|
||||
case V4L2_FIELD_TOP:
|
||||
case V4L2_FIELD_BOTTOM:
|
||||
vin->format.height /= 2;
|
||||
break;
|
||||
case V4L2_FIELD_NONE:
|
||||
case V4L2_FIELD_INTERLACED_TB:
|
||||
case V4L2_FIELD_INTERLACED_BT:
|
||||
|
@ -220,6 +222,22 @@ static int __rvin_try_format(struct rvin_dev *vin,
|
|||
/* Limit to source capabilities */
|
||||
__rvin_try_format_source(vin, which, pix, source);
|
||||
|
||||
switch (pix->field) {
|
||||
case V4L2_FIELD_TOP:
|
||||
case V4L2_FIELD_BOTTOM:
|
||||
pix->height /= 2;
|
||||
source->height /= 2;
|
||||
break;
|
||||
case V4L2_FIELD_NONE:
|
||||
case V4L2_FIELD_INTERLACED_TB:
|
||||
case V4L2_FIELD_INTERLACED_BT:
|
||||
case V4L2_FIELD_INTERLACED:
|
||||
break;
|
||||
default:
|
||||
pix->field = V4L2_FIELD_NONE;
|
||||
break;
|
||||
}
|
||||
|
||||
/* If source can't match format try if VIN can scale */
|
||||
if (source->width != rwidth || source->height != rheight)
|
||||
rvin_scale_try(vin, pix, rwidth, rheight);
|
||||
|
@ -231,19 +249,6 @@ static int __rvin_try_format(struct rvin_dev *vin,
|
|||
v4l_bound_align_image(&pix->width, 2, RVIN_MAX_WIDTH, walign,
|
||||
&pix->height, 4, RVIN_MAX_HEIGHT, 2, 0);
|
||||
|
||||
switch (pix->field) {
|
||||
case V4L2_FIELD_NONE:
|
||||
case V4L2_FIELD_TOP:
|
||||
case V4L2_FIELD_BOTTOM:
|
||||
case V4L2_FIELD_INTERLACED_TB:
|
||||
case V4L2_FIELD_INTERLACED_BT:
|
||||
case V4L2_FIELD_INTERLACED:
|
||||
break;
|
||||
default:
|
||||
pix->field = V4L2_FIELD_NONE;
|
||||
break;
|
||||
}
|
||||
|
||||
pix->bytesperline = max_t(u32, pix->bytesperline,
|
||||
rvin_format_bytesperline(pix));
|
||||
pix->sizeimage = max_t(u32, pix->sizeimage,
|
||||
|
|
Loading…
Reference in New Issue