[PATCH v5 06/12] media: mediatek: jpeg: refactor jpeg buffer payload setting
Kyrie Wu (吴晗)
Kyrie.Wu at mediatek.com
Thu Jun 5 19:50:22 PDT 2025
On Fri, 2025-05-30 at 13:33 -0400, Nicolas Dufresne wrote:
> External email : Please do not click links or open attachments until
> you have verified the sender or the content.
>
>
> Hi Kyrie,
>
> Le vendredi 30 mai 2025 à 15:45 +0800, Kyrie Wu a écrit :
> > 1. for multi-core jpegdec:
> > core0: |<-------- decoding buffer0 and resolution changed to
> > smaller
> > core1: |<-------- decoding buffer1
> > core0: |<- handling resolution changing
> > core0: |<- vb2_set_plane_payload
> > 2. the payload size is changed on the step of set format. Because
> > core1
> > is running and streaming has not been stopped, the format cannot be
> > set again, resulting in no change in the payload size.
> > 3. at this time, the payload size is bigger than buffer length,
> > it will print a warnning call trace
> > 4. set payload size must less than buffer length
>
> You'll have to rework the text in this commit message, I must admit I
> don't
> understand from this text what exactly the problem is, make it really
> hard to
> review your solution.
Dear Nicolas,
I'm terribly sorry for the inconvenience caused to you. I will change
the commit message and let it read easier.
Thanks.
>
> >
> > Signed-off-by: Kyrie Wu <kyrie.wu at mediatek.com>
> > ---
> > .../platform/mediatek/jpeg/mtk_jpeg_core.c | 18
> > +++++++++++++++---
> > 1 file changed, 15 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
> > b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
> > index 0074d1edb534..52d59bb5c9ad 100644
> > --- a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
> > +++ b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
> > @@ -720,10 +720,22 @@ static int mtk_jpeg_buf_prepare(struct
> > vb2_buffer *vb)
> > plane_fmt = q_data->pix_mp.plane_fmt[i];
> > if (ctx->enable_exif &&
> > q_data->fmt->fourcc == V4L2_PIX_FMT_JPEG)
> > - vb2_set_plane_payload(vb, i,
> > plane_fmt.sizeimage +
> > - MTK_JPEG_MAX_EXIF_SIZE)
> > ;
> > + if (vb->planes[i].length >
> > (plane_fmt.sizeimage +
> > + MTK_JPEG_MAX_EXIF_SIZE))
> > + vb2_set_plane_payload(vb, i,
> > + plane_fmt.sizei
> > mage +
> > + MTK_JPEG_MAX_EX
> > IF_SIZE);
> > + else
> > + vb2_set_plane_payload(vb, i,
> > + vb-
> > >planes[i].length);
> > +
> > else
> > - vb2_set_plane_payload(vb,
> > i, plane_fmt.sizeimage);
> > + if (vb->planes[i].length >
> > plane_fmt.sizeimage)
> > + vb2_set_plane_payload(vb, i,
> > + plane_fmt.sizei
> > mage);
> > + else
> > + vb2_set_plane_payload(vb, i,
> > + vb-
> > >planes[i].length);
>
> Is this the same as ?
>
> unsigned long max_size = plane_fmt.sizeimage;
>
> if (ctx->enable_exif && q_data->fmt->fourcc ==
> V4L2_PIX_FMT_JPEG)
> max_size += MTK_JPEG_MAX_EXIF_SIZE;
>
> vb2_set_plane_payload(vb, i, MIN(vb-
> >planes[i].length, max_size));
>
> It is unclear to me how this isn't just a workaround though, looking
> forward
> your reworked commit message.
>
> Nicolas
Yes, Thanks for you suggestion. I will fix it in the next version.
Regards,
Kyrie.
>
> > }
> >
> > return 0;
More information about the Linux-mediatek
mailing list