Hi Malathi, On Fri, Nov 9, 2018 at 4:39 PM Malathi Gottam <mgottam@xxxxxxxxxxxxxx> wrote: > > Handles target type crop by setting the new active rectangle > to hardware. The new rectangle should be within YUV size. > > Signed-off-by: Malathi Gottam <mgottam@xxxxxxxxxxxxxx> > --- > drivers/media/platform/qcom/venus/venc.c | 26 ++++++++++++++++++++++---- > 1 file changed, 22 insertions(+), 4 deletions(-) > > diff --git a/drivers/media/platform/qcom/venus/venc.c b/drivers/media/platform/qcom/venus/venc.c > index ce85962..d26c129 100644 > --- a/drivers/media/platform/qcom/venus/venc.c > +++ b/drivers/media/platform/qcom/venus/venc.c > @@ -478,16 +478,34 @@ static int venc_g_fmt(struct file *file, void *fh, struct v4l2_format *f) > venc_s_selection(struct file *file, void *fh, struct v4l2_selection *s) > { > struct venus_inst *inst = to_inst(file); > + int ret; > + u32 buftype; > > if (s->type != V4L2_BUF_TYPE_VIDEO_OUTPUT) > return -EINVAL; > > switch (s->target) { > case V4L2_SEL_TGT_CROP: > - if (s->r.width != inst->out_width || > - s->r.height != inst->out_height || > - s->r.top != 0 || s->r.left != 0) > - return -EINVAL; > + if (s->r.left != 0) { > + s->r.width += s->r.left; > + s->r.left = 0; > + } > + > + if (s->r.top != 0) { > + s->r.height += s->r.top; > + s->r.top = 0; > + } > + > + if (s->r.width > inst->width) > + s->r.width = inst->width; > + else > + inst->width = s->r.width; > + > + if (s->r.height > inst->height) > + s->r.height = inst->height; > + else > + inst->height = s->r.height; > + >From semantic point of view, it looks fine, but where is the rectangle actually set to the hardware? Best regards, Tomasz