mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-22 07:27:12 +08:00
media: i2c: imx219: Fix 1920x1080 mode to use 1:1 pixel aspect ratio
Commit0af46fbc33("media: i2c: imx219: Calculate crop rectangle dynamically") meant that the 1920x1080 mode switched from using no binning to using vertical binning but no horizontal binning, which resulted in stretched pixels. Until proper controls are available to independently select horizontal and vertical binning, restore the original 1:1 pixel aspect ratio by forcing binning to be uniform in both directions. Cc: stable@vger.kernel.org Fixes:0af46fbc33("media: i2c: imx219: Calculate crop rectangle dynamically") Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com> [Add comment & reword commit message] Signed-off-by: Jai Luthra <jai.luthra@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
This commit is contained in:
committed by
Hans Verkuil
parent
c423487bf6
commit
9ef6e4db15
@@ -856,7 +856,7 @@ static int imx219_set_pad_format(struct v4l2_subdev *sd,
|
||||
const struct imx219_mode *mode;
|
||||
struct v4l2_mbus_framefmt *format;
|
||||
struct v4l2_rect *crop;
|
||||
u8 bin_h, bin_v;
|
||||
u8 bin_h, bin_v, binning;
|
||||
u32 prev_line_len;
|
||||
|
||||
format = v4l2_subdev_state_get_format(state, 0);
|
||||
@@ -877,9 +877,12 @@ static int imx219_set_pad_format(struct v4l2_subdev *sd,
|
||||
bin_h = min(IMX219_PIXEL_ARRAY_WIDTH / format->width, 2U);
|
||||
bin_v = min(IMX219_PIXEL_ARRAY_HEIGHT / format->height, 2U);
|
||||
|
||||
/* Ensure bin_h and bin_v are same to avoid 1:2 or 2:1 stretching */
|
||||
binning = min(bin_h, bin_v);
|
||||
|
||||
crop = v4l2_subdev_state_get_crop(state, 0);
|
||||
crop->width = format->width * bin_h;
|
||||
crop->height = format->height * bin_v;
|
||||
crop->width = format->width * binning;
|
||||
crop->height = format->height * binning;
|
||||
crop->left = (IMX219_NATIVE_WIDTH - crop->width) / 2;
|
||||
crop->top = (IMX219_NATIVE_HEIGHT - crop->height) / 2;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user