mirror of
https://github.com/genesi/linux-legacy.git
synced 2026-09-19 05:04:27 +00:00
ENGR00116028 CROP for TVE 720P
Crop support for outgoing picture to TVE in 720P format
Signed-off-by: Mark.Gutman@freescale.com>
This commit is contained in:
@@ -455,7 +455,7 @@ static void mxc_v4l2out_timer_handler(unsigned long arg)
|
||||
vout->v2f.fmt.pix.pixelformat,
|
||||
vout->v2f.fmt.pix.width,
|
||||
vout->v2f.fmt.pix.height,
|
||||
vout->v2f.fmt.pix.width,
|
||||
vout->bytesperline,
|
||||
vout->offset.u_offset,
|
||||
vout->offset.v_offset,
|
||||
0,
|
||||
@@ -531,7 +531,7 @@ static irqreturn_t mxc_v4l2out_pp_in_irq_handler(int irq, void *dev_id)
|
||||
vout->v2f.fmt.pix.pixelformat,
|
||||
vout->v2f.fmt.pix.width,
|
||||
vout->v2f.fmt.pix.height,
|
||||
vout->v2f.fmt.pix.width,
|
||||
vout->bytesperline,
|
||||
vout->offset.u_offset,
|
||||
vout->offset.v_offset,
|
||||
0,
|
||||
|
||||
@@ -424,49 +424,68 @@ static inline void _ipu_ch_offset_update(int ch,
|
||||
if (uv_stride < stride / 2)
|
||||
uv_stride = stride / 2;
|
||||
|
||||
u_fix = u + (uv_stride * vertical_offset / 2) + horizontal_offset / 4;
|
||||
v_fix = v + (uv_stride * vertical_offset / 2) + horizontal_offset / 4;
|
||||
u_offset = (u == 0) ? stride * (height - vertical_offset - 1) +
|
||||
(stride - horizontal_offset) +
|
||||
(uv_stride * vertical_offset / 2) +
|
||||
horizontal_offset / 2 : u_fix;
|
||||
v_offset = (v == 0) ? u_offset + (uv_stride * height / 2) : v_fix;
|
||||
u_offset = stride * (height - vertical_offset - 1) +
|
||||
(stride - horizontal_offset) +
|
||||
(uv_stride * vertical_offset / 2) +
|
||||
horizontal_offset / 2;
|
||||
v_offset = u_offset + (uv_stride * height / 2);
|
||||
u_fix = u ? (u + (uv_stride * vertical_offset) +
|
||||
(horizontal_offset / 2) -
|
||||
(stride * vertical_offset) - (horizontal_offset)) :
|
||||
u_offset;
|
||||
v_fix = v ? (v + (uv_stride * vertical_offset / 2) +
|
||||
(horizontal_offset / 2) -
|
||||
(stride * vertical_offset) - (horizontal_offset)) :
|
||||
v_offset;
|
||||
|
||||
break;
|
||||
case IPU_PIX_FMT_YVU422P:
|
||||
if (uv_stride < stride / 2)
|
||||
uv_stride = stride / 2;
|
||||
|
||||
u_fix = u + (uv_stride * vertical_offset) + horizontal_offset / 2;
|
||||
v_fix = v + (uv_stride * vertical_offset) + horizontal_offset / 2;
|
||||
|
||||
v_offset = (v == 0) ? stride * (height - vertical_offset - 1) +
|
||||
(stride - horizontal_offset) +
|
||||
(uv_stride * vertical_offset) +
|
||||
horizontal_offset / 2 : v_fix;
|
||||
u_offset = (u == 0) ? v_offset + uv_stride * height : u_fix;
|
||||
v_offset = stride * (height - vertical_offset - 1) +
|
||||
(stride - horizontal_offset) +
|
||||
(uv_stride * vertical_offset) +
|
||||
horizontal_offset / 2;
|
||||
u_offset = v_offset + uv_stride * height;
|
||||
u_fix = u ? (u + (uv_stride * vertical_offset) +
|
||||
horizontal_offset / 2 -
|
||||
(stride * vertical_offset) - (horizontal_offset)) :
|
||||
u_offset;
|
||||
v_fix = v ? (v + (uv_stride * vertical_offset) +
|
||||
horizontal_offset / 2 -
|
||||
(stride * vertical_offset) - (horizontal_offset)) :
|
||||
v_offset;
|
||||
break;
|
||||
case IPU_PIX_FMT_YUV422P:
|
||||
if (uv_stride < stride / 2)
|
||||
uv_stride = stride / 2;
|
||||
|
||||
u_fix = u + (uv_stride * vertical_offset) + horizontal_offset / 2;
|
||||
v_fix = v + (uv_stride * vertical_offset) + horizontal_offset / 2;
|
||||
|
||||
u_offset = (u == 0) ? stride * (height - vertical_offset - 1) +
|
||||
(stride - horizontal_offset) +
|
||||
(uv_stride * vertical_offset) +
|
||||
horizontal_offset / 2 : u_fix;
|
||||
v_offset = (v == 0) ? u_offset + uv_stride * height : v_fix;
|
||||
u_offset = stride * (height - vertical_offset - 1) +
|
||||
(stride - horizontal_offset) +
|
||||
(uv_stride * vertical_offset) +
|
||||
horizontal_offset / 2;
|
||||
v_offset = u_offset + uv_stride * height;
|
||||
u_fix = u ? (u + (uv_stride * vertical_offset) +
|
||||
horizontal_offset / 2 -
|
||||
(stride * vertical_offset) - (horizontal_offset)) :
|
||||
u_offset;
|
||||
v_fix = v ? (v + (uv_stride * vertical_offset) +
|
||||
horizontal_offset / 2 -
|
||||
(stride * vertical_offset) - (horizontal_offset)) :
|
||||
v_offset;
|
||||
break;
|
||||
|
||||
case IPU_PIX_FMT_NV12:
|
||||
uv_stride = stride;
|
||||
u_fix = u + (uv_stride * vertical_offset) + horizontal_offset;
|
||||
u_offset = (u == 0) ? stride * (height - vertical_offset - 1) +
|
||||
(stride - horizontal_offset) +
|
||||
(uv_stride * vertical_offset) +
|
||||
horizontal_offset : u_fix;
|
||||
u_offset = stride * (height - vertical_offset - 1) +
|
||||
(stride - horizontal_offset) +
|
||||
(uv_stride * vertical_offset) +
|
||||
horizontal_offset;
|
||||
u_fix = u ? (u + (uv_stride * vertical_offset) +
|
||||
horizontal_offset -
|
||||
(stride * vertical_offset) - (horizontal_offset)) :
|
||||
u_offset;
|
||||
|
||||
break;
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user