Re: [PATCH v1 5/5] media: venus: update number of bytes used field properly for EOS frames

From: Alexandre Courbot
Date: Mon Nov 12 2018 - 03:12:27 EST


Hi Stan,

On Thu, Nov 8, 2018 at 7:16 PM Stanimir Varbanov
<stanimir.varbanov@xxxxxxxxxx> wrote:
>
> Hi,
>
> On 9/29/18 3:00 PM, Srinu Gorle wrote:
> > - In video decoder session, update number of bytes used for
> > yuv buffers appropriately for EOS buffers.
> >
> > Signed-off-by: Srinu Gorle <sgorle@xxxxxxxxxxxxxx>
> > ---
> > drivers/media/platform/qcom/venus/vdec.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
>
> NACK, that was already discussed see:
>
> https://patchwork.kernel.org/patch/10630411/

I believe you are referring to this discussion?

https://lkml.org/lkml/2018/10/2/302

In this case, with https://patchwork.kernel.org/patch/10630411/
applied, I am seeing the troublesome case of having the last (empty)
buffer being returned with a payload of obs_sz, which I believe is
incorrect. The present patch seems to restore the correct behavior.

An alternative would be to set the payload as follows:

vb2_set_plane_payload(vb, 0, bytesused);

This works for SDM845, but IIRC we weren't sure that this would
display the correct behavior with all firmware versions?

>
> >
> > diff --git a/drivers/media/platform/qcom/venus/vdec.c b/drivers/media/platform/qcom/venus/vdec.c
> > index 311f209..a48eed1 100644
> > --- a/drivers/media/platform/qcom/venus/vdec.c
> > +++ b/drivers/media/platform/qcom/venus/vdec.c
> > @@ -978,7 +978,7 @@ static void vdec_buf_done(struct venus_inst *inst, unsigned int buf_type,
> >
> > if (vbuf->flags & V4L2_BUF_FLAG_LAST) {
> > const struct v4l2_event ev = { .type = V4L2_EVENT_EOS };
> > -
> > + vb->planes[0].bytesused = bytesused;
> > v4l2_event_queue_fh(&inst->fh, &ev);
> > }
> > } else {
> >
>
> --
> regards,
> Stan