All of lore.kernel.org
 help / color / mirror / Atom feed
From: mgottam@codeaurora.org
To: Tomasz Figa <tfiga@chromium.org>
Cc: Stanimir Varbanov <stanimir.varbanov@linaro.org>,
	Hans Verkuil <hverkuil@xs4all.nl>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Linux Media Mailing List <linux-media@vger.kernel.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	linux-arm-msm <linux-arm-msm@vger.kernel.org>,
	Alexandre Courbot <acourbot@chromium.org>,
	vgarodia@codeaurora.org
Subject: Re: [PATCH] media: venus: add support for selection rectangles
Date: Fri, 09 Nov 2018 07:38:27 +0000	[thread overview]
Message-ID: <a94ef2231f195e757d8af9483cf44899@codeaurora.org> (raw)
In-Reply-To: <CAAFQd5AgQNZpNfAf_aoZfqzpZj7iohCKaBO0t4bntL2q1SyVhg@mail.gmail.com>

On 2018-11-02 03:16, Tomasz Figa wrote:
> On Fri, Nov 2, 2018 at 12:02 AM Stanimir Varbanov
> <stanimir.varbanov@linaro.org> wrote:
>> 
>> Hi Malathi,
>> 
>> On 11/1/18 3:10 PM, mgottam@codeaurora.org wrote:
>> > On 2018-10-16 15:11, Stanimir Varbanov wrote:
>> >> Hi Malathi,
>> >>
>> >> On 10/09/2018 10:53 AM, Malathi Gottam 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@codeaurora.org>
>> >>> ---
>> >>>  drivers/media/platform/qcom/venus/venc.c | 19 +++++++++++++++++--
>> >>>  1 file changed, 17 insertions(+), 2 deletions(-)
>> >>>
>> >>> diff --git a/drivers/media/platform/qcom/venus/venc.c
>> >>> b/drivers/media/platform/qcom/venus/venc.c
>> >>> index 3f50cd0..754c19a 100644
>> >>> --- a/drivers/media/platform/qcom/venus/venc.c
>> >>> +++ b/drivers/media/platform/qcom/venus/venc.c
>> >>> @@ -478,16 +478,31 @@ 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 ||
>> >>> +        if (s->r.width > inst->out_width ||
>> >>> +            s->r.height > inst->out_height ||
>> >>>              s->r.top != 0 || s->r.left != 0)
>> >>>              return -EINVAL;
> 
> Note that returning -EINVAL is not what VIDIOC_S_SELECTION should do 
> here.
> 
> As per the general V4L2 spec [1], VIDIOC_S_SELECTION is expected to
> adjust the crop rectangle "as close as possible to the requested one".
> In this case that would likely mean something like this:
> 
> 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->out_width)
>     s->r.width = inst->out_width;
> 
> if (s->r.height > inst->out_height)
>     s->r.height = inst->out_height;
> 
> [1]
> https://www.kernel.org/doc/html/latest/media/uapi/v4l/vidioc-g-selection.html
> 

Yes Tomasz, I overlooked the spec that we cannot return EINVAL in this 
case.

I will make the necessary changes and update the new patch.
>> >>> +        if (s->r.width != inst->width ||
>> >>> +            s->r.height != inst->height) {
>> >>> +            buftype = HFI_BUFFER_OUTPUT;
>> >>> +            ret = venus_helper_set_output_resolution(inst,
>> >>> +                                 s->r.width,
>> >>> +                                 s->r.height,
>> >>> +                                 buftype);
>> >>
>> >> I'm afraid that set_output_resolution cannot be called at any time. Do
>> >> you think we can set it after start_session?
>> >
>> > Yes Stan, we can set output_resolution after the session has been
>> > initialization.
>> > As per the spec, this call s_selection is an optional step under
>> > Initialization
>> > procedure of encoder even before we request buffers.

Setting this output resolution here I feel it as a repetition as we
have this width and height set to firmware as a part of 
VIDIOC_REQBUFS().
So updating the selection rectangle would be sufficient in this case.

>> 
>> What spec you are referring to? The spec for the encoders [1] or
>> something else.
> 
> For our convenience, Hans was nice enough to host a compiled version 
> at:
> https://hverkuil.home.xs4all.nl/request-api/uapi/v4l/dev-encoder.html
> 
> Best regards,
> Tomasz

      reply	other threads:[~2018-11-09  7:38 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-09  7:53 [PATCH] media: venus: add support for selection rectangles Malathi Gottam
2018-10-16  9:41 ` Stanimir Varbanov
2018-11-01 13:10   ` mgottam
2018-11-01 15:02     ` Stanimir Varbanov
2018-11-02  3:16       ` Tomasz Figa
2018-11-09  7:38         ` mgottam [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a94ef2231f195e757d8af9483cf44899@codeaurora.org \
    --to=mgottam@codeaurora.org \
    --cc=acourbot@chromium.org \
    --cc=hverkuil@xs4all.nl \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=stanimir.varbanov@linaro.org \
    --cc=tfiga@chromium.org \
    --cc=vgarodia@codeaurora.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.