Thread (24 messages) 24 messages, 2 authors, 2025-06-06

Re: [PATCH v5 06/12] media: mediatek: jpeg: refactor jpeg buffer payload setting

From: Kyrie Wu (吴晗) <hidden>
Date: 2025-06-06 02:50:31
Also in: linux-devicetree, linux-media, linux-mediatek, lkml

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 :
quoted
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.
quoted
Signed-off-by: Kyrie Wu <redacted>
---
 .../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-
quoted
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-
quoted
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-
quoted
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.
quoted
      }

      return 0;
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help