All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 3/5] media: mediatek: vcodec: Get SRC buffer from bitstream instead of M2M
  2024-10-12  6:43 [PATCH v5 0/5] media: mediatek: vcodec: fix v4l2_ctrl_request_complete fail Yunfei Dong
@ 2024-10-12  6:43 ` Yunfei Dong
  2024-11-07  9:51   ` Chen-Yu Tsai
  0 siblings, 1 reply; 4+ messages in thread
From: Yunfei Dong @ 2024-10-12  6:43 UTC (permalink / raw)
  To: Nícolas F . R . A . Prado, Sebastian Fricke,
	Nicolas Dufresne, Hans Verkuil, AngeloGioacchino Del Regno,
	Benjamin Gaignard, Nathan Hebert, Daniel Almeida
  Cc: Hsin-Yi Wang, Fritz Koenig, Daniel Vetter, Steve Cho, Yunfei Dong,
	linux-media, devicetree, linux-kernel, linux-arm-kernel,
	linux-mediatek, Project_Global_Chrome_Upstream_Group

Getting the SRC buffer from M2M will pick a different than the one
used for current decode operation when the SRC buffer is removed
from ready list.

Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com>
---
 .../vcodec/decoder/vdec/vdec_av1_req_lat_if.c     | 13 +++++++------
 .../vcodec/decoder/vdec/vdec_vp9_req_lat_if.c     | 15 +++++++--------
 2 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_av1_req_lat_if.c b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_av1_req_lat_if.c
index 90217cc8e242..a744740ba5f1 100644
--- a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_av1_req_lat_if.c
+++ b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_av1_req_lat_if.c
@@ -1062,19 +1062,20 @@ static inline void vdec_av1_slice_vsi_to_remote(struct vdec_av1_slice_vsi *vsi,
 
 static int vdec_av1_slice_setup_lat_from_src_buf(struct vdec_av1_slice_instance *instance,
 						 struct vdec_av1_slice_vsi *vsi,
+						 struct mtk_vcodec_mem *bs,
 						 struct vdec_lat_buf *lat_buf)
 {
-	struct vb2_v4l2_buffer *src;
+	struct mtk_video_dec_buf *src_buf_info;
 	struct vb2_v4l2_buffer *dst;
 
-	src = v4l2_m2m_next_src_buf(instance->ctx->m2m_ctx);
-	if (!src)
+	src_buf_info = container_of(bs, struct mtk_video_dec_buf, bs_buffer);
+	if (!src_buf_info)
 		return -EINVAL;
 
-	lat_buf->vb2_v4l2_src = src;
+	lat_buf->vb2_v4l2_src = &src_buf_info->m2m_buf.vb;
 
 	dst = &lat_buf->ts_info;
-	v4l2_m2m_buf_copy_metadata(src, dst, true);
+	v4l2_m2m_buf_copy_metadata(lat_buf->vb2_v4l2_src, dst, true);
 	vsi->frame.cur_ts = dst->vb2_buf.timestamp;
 
 	return 0;
@@ -1724,7 +1725,7 @@ static int vdec_av1_slice_setup_lat(struct vdec_av1_slice_instance *instance,
 	struct vdec_av1_slice_vsi *vsi = &pfc->vsi;
 	int ret;
 
-	ret = vdec_av1_slice_setup_lat_from_src_buf(instance, vsi, lat_buf);
+	ret = vdec_av1_slice_setup_lat_from_src_buf(instance, vsi, bs, lat_buf);
 	if (ret)
 		return ret;
 
diff --git a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c
index 3dceb668ba1c..c50a454ab4f7 100644
--- a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c
+++ b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c
@@ -712,19 +712,18 @@ int vdec_vp9_slice_setup_single_from_src_to_dst(struct vdec_vp9_slice_instance *
 }
 
 static int vdec_vp9_slice_setup_lat_from_src_buf(struct vdec_vp9_slice_instance *instance,
+						 struct mtk_vcodec_mem *bs,
 						 struct vdec_lat_buf *lat_buf)
 {
-	struct vb2_v4l2_buffer *src;
-	struct vb2_v4l2_buffer *dst;
+	struct mtk_video_dec_buf *src_buf_info;
 
-	src = v4l2_m2m_next_src_buf(instance->ctx->m2m_ctx);
-	if (!src)
+	src_buf_info = container_of(bs, struct mtk_video_dec_buf, bs_buffer);
+	if (!src_buf_info)
 		return -EINVAL;
 
-	lat_buf->vb2_v4l2_src = src;
+	lat_buf->vb2_v4l2_src = &src_buf_info->m2m_buf.vb;
 
-	dst = &lat_buf->ts_info;
-	v4l2_m2m_buf_copy_metadata(src, dst, true);
+	v4l2_m2m_buf_copy_metadata(lat_buf->vb2_v4l2_src, &lat_buf->ts_info, true);
 	return 0;
 }
 
@@ -1154,7 +1153,7 @@ static int vdec_vp9_slice_setup_lat(struct vdec_vp9_slice_instance *instance,
 	struct vdec_vp9_slice_vsi *vsi = &pfc->vsi;
 	int ret;
 
-	ret = vdec_vp9_slice_setup_lat_from_src_buf(instance, lat_buf);
+	ret = vdec_vp9_slice_setup_lat_from_src_buf(instance, bs, lat_buf);
 	if (ret)
 		goto err;
 
-- 
2.46.0



^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v5 3/5] media: mediatek: vcodec: Get SRC buffer from bitstream instead of M2M
@ 2024-10-19 16:17 kernel test robot
  0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2024-10-19 16:17 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20241012064333.27269-4-yunfei.dong@mediatek.com>
References: <20241012064333.27269-4-yunfei.dong@mediatek.com>
TO: Yunfei Dong <yunfei.dong@mediatek.com>
TO: "Nícolas F . R . A . Prado" <nfraprado@collabora.com>
TO: Sebastian Fricke <sebastian.fricke@collabora.com>
TO: Nicolas Dufresne <nicolas.dufresne@collabora.com>
TO: Hans Verkuil <hverkuil@xs4all.nl>
TO: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
TO: Benjamin Gaignard <benjamin.gaignard@collabora.com>
TO: Nathan Hebert <nhebert@chromium.org>
TO: Daniel Almeida <daniel.almeida@collabora.com>
CC: "Hsin-Yi Wang" <hsinyi@chromium.org>
CC: Fritz Koenig <frkoenig@chromium.org>
CC: Daniel Vetter <daniel@ffwll.ch>
CC: Steve Cho <stevecho@chromium.org>
CC: Yunfei Dong <yunfei.dong@mediatek.com>
CC: linux-media@vger.kernel.org
CC: devicetree@vger.kernel.org
CC: linux-kernel@vger.kernel.org
CC: linux-arm-kernel@lists.infradead.org
CC: linux-mediatek@lists.infradead.org
CC: Project_Global_Chrome_Upstream_Group@mediatek.com

Hi Yunfei,

kernel test robot noticed the following build warnings:

[auto build test WARNING on media-tree/master]
[also build test WARNING on linus/master v6.12-rc3 next-20241018]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Yunfei-Dong/media-mediatek-vcodec-setting-request-complete-before-buffer-done/20241012-144607
base:   git://linuxtv.org/media_tree.git master
patch link:    https://lore.kernel.org/r/20241012064333.27269-4-yunfei.dong%40mediatek.com
patch subject: [PATCH v5 3/5] media: mediatek: vcodec: Get SRC buffer from bitstream instead of M2M
:::::: branch date: 7 days ago
:::::: commit date: 7 days ago
config: arm-randconfig-r072-20241016 (https://download.01.org/0day-ci/archive/20241020/202410200022.8uNnjxzj-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 14.1.0

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202410200022.8uNnjxzj-lkp@intel.com/

smatch warnings:
drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c:721 vdec_vp9_slice_setup_lat_from_src_buf() warn: can 'src_buf_info' even be NULL?
drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_av1_req_lat_if.c:1072 vdec_av1_slice_setup_lat_from_src_buf() warn: can 'src_buf_info' even be NULL?

vim +/src_buf_info +721 drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c

b0f407c19648ae drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c         Yunfei Dong 2022-05-13  713  
5d418351ca8f17 drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c         Yunfei Dong 2022-05-12  714  static int vdec_vp9_slice_setup_lat_from_src_buf(struct vdec_vp9_slice_instance *instance,
af58c67202dda7 drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c Yunfei Dong 2024-10-12  715  						 struct mtk_vcodec_mem *bs,
5d418351ca8f17 drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c         Yunfei Dong 2022-05-12  716  						 struct vdec_lat_buf *lat_buf)
5d418351ca8f17 drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c         Yunfei Dong 2022-05-12  717  {
af58c67202dda7 drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c Yunfei Dong 2024-10-12  718  	struct mtk_video_dec_buf *src_buf_info;
5d418351ca8f17 drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c         Yunfei Dong 2022-05-12  719  
af58c67202dda7 drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c Yunfei Dong 2024-10-12  720  	src_buf_info = container_of(bs, struct mtk_video_dec_buf, bs_buffer);
af58c67202dda7 drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c Yunfei Dong 2024-10-12 @721  	if (!src_buf_info)
5d418351ca8f17 drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c         Yunfei Dong 2022-05-12  722  		return -EINVAL;
5d418351ca8f17 drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c         Yunfei Dong 2022-05-12  723  
af58c67202dda7 drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c Yunfei Dong 2024-10-12  724  	lat_buf->vb2_v4l2_src = &src_buf_info->m2m_buf.vb;
5d418351ca8f17 drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c         Yunfei Dong 2022-05-12  725  
af58c67202dda7 drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c Yunfei Dong 2024-10-12  726  	v4l2_m2m_buf_copy_metadata(lat_buf->vb2_v4l2_src, &lat_buf->ts_info, true);
5d418351ca8f17 drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c         Yunfei Dong 2022-05-12  727  	return 0;
5d418351ca8f17 drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c         Yunfei Dong 2022-05-12  728  }
5d418351ca8f17 drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c         Yunfei Dong 2022-05-12  729  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v5 3/5] media: mediatek: vcodec: Get SRC buffer from bitstream instead of M2M
@ 2024-10-20 21:37 kernel test robot
  0 siblings, 0 replies; 4+ messages in thread
From: kernel test robot @ 2024-10-20 21:37 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20241012064333.27269-4-yunfei.dong@mediatek.com>
References: <20241012064333.27269-4-yunfei.dong@mediatek.com>
TO: Yunfei Dong <yunfei.dong@mediatek.com>
TO: "Nícolas F . R . A . Prado" <nfraprado@collabora.com>
TO: Sebastian Fricke <sebastian.fricke@collabora.com>
TO: Nicolas Dufresne <nicolas.dufresne@collabora.com>
TO: Hans Verkuil <hverkuil@xs4all.nl>
TO: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
TO: Benjamin Gaignard <benjamin.gaignard@collabora.com>
TO: Nathan Hebert <nhebert@chromium.org>
TO: Daniel Almeida <daniel.almeida@collabora.com>
CC: "Hsin-Yi Wang" <hsinyi@chromium.org>
CC: Fritz Koenig <frkoenig@chromium.org>
CC: Daniel Vetter <daniel@ffwll.ch>
CC: Steve Cho <stevecho@chromium.org>
CC: Yunfei Dong <yunfei.dong@mediatek.com>
CC: linux-media@vger.kernel.org
CC: devicetree@vger.kernel.org
CC: linux-kernel@vger.kernel.org
CC: linux-arm-kernel@lists.infradead.org
CC: linux-mediatek@lists.infradead.org
CC: Project_Global_Chrome_Upstream_Group@mediatek.com

Hi Yunfei,

kernel test robot noticed the following build warnings:

[auto build test WARNING on media-tree/master]
[also build test WARNING on linus/master v6.12-rc3 next-20241018]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Yunfei-Dong/media-mediatek-vcodec-setting-request-complete-before-buffer-done/20241012-144607
base:   git://linuxtv.org/media_tree.git master
patch link:    https://lore.kernel.org/r/20241012064333.27269-4-yunfei.dong%40mediatek.com
patch subject: [PATCH v5 3/5] media: mediatek: vcodec: Get SRC buffer from bitstream instead of M2M
:::::: branch date: 9 days ago
:::::: commit date: 9 days ago
config: arm-randconfig-r072-20241016 (https://download.01.org/0day-ci/archive/20241021/202410210753.AzGgWmKA-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 14.1.0

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202410210753.AzGgWmKA-lkp@intel.com/

smatch warnings:
drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c:721 vdec_vp9_slice_setup_lat_from_src_buf() warn: can 'src_buf_info' even be NULL?
drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_av1_req_lat_if.c:1072 vdec_av1_slice_setup_lat_from_src_buf() warn: can 'src_buf_info' even be NULL?

vim +/src_buf_info +721 drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c

b0f407c19648ae drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c         Yunfei Dong 2022-05-13  713  
5d418351ca8f17 drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c         Yunfei Dong 2022-05-12  714  static int vdec_vp9_slice_setup_lat_from_src_buf(struct vdec_vp9_slice_instance *instance,
af58c67202dda7 drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c Yunfei Dong 2024-10-12  715  						 struct mtk_vcodec_mem *bs,
5d418351ca8f17 drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c         Yunfei Dong 2022-05-12  716  						 struct vdec_lat_buf *lat_buf)
5d418351ca8f17 drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c         Yunfei Dong 2022-05-12  717  {
af58c67202dda7 drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c Yunfei Dong 2024-10-12  718  	struct mtk_video_dec_buf *src_buf_info;
5d418351ca8f17 drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c         Yunfei Dong 2022-05-12  719  
af58c67202dda7 drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c Yunfei Dong 2024-10-12  720  	src_buf_info = container_of(bs, struct mtk_video_dec_buf, bs_buffer);
af58c67202dda7 drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c Yunfei Dong 2024-10-12 @721  	if (!src_buf_info)
5d418351ca8f17 drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c         Yunfei Dong 2022-05-12  722  		return -EINVAL;
5d418351ca8f17 drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c         Yunfei Dong 2022-05-12  723  
af58c67202dda7 drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c Yunfei Dong 2024-10-12  724  	lat_buf->vb2_v4l2_src = &src_buf_info->m2m_buf.vb;
5d418351ca8f17 drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c         Yunfei Dong 2022-05-12  725  
af58c67202dda7 drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c Yunfei Dong 2024-10-12  726  	v4l2_m2m_buf_copy_metadata(lat_buf->vb2_v4l2_src, &lat_buf->ts_info, true);
5d418351ca8f17 drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c         Yunfei Dong 2022-05-12  727  	return 0;
5d418351ca8f17 drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c         Yunfei Dong 2022-05-12  728  }
5d418351ca8f17 drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_req_lat_if.c         Yunfei Dong 2022-05-12  729  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v5 3/5] media: mediatek: vcodec: Get SRC buffer from bitstream instead of M2M
  2024-10-12  6:43 ` [PATCH v5 3/5] media: mediatek: vcodec: Get SRC buffer from bitstream instead of M2M Yunfei Dong
@ 2024-11-07  9:51   ` Chen-Yu Tsai
  0 siblings, 0 replies; 4+ messages in thread
From: Chen-Yu Tsai @ 2024-11-07  9:51 UTC (permalink / raw)
  To: Yunfei Dong
  Cc: Nícolas F . R . A . Prado, Sebastian Fricke,
	Nicolas Dufresne, Hans Verkuil, AngeloGioacchino Del Regno,
	Benjamin Gaignard, Nathan Hebert, Daniel Almeida, Hsin-Yi Wang,
	Fritz Koenig, Daniel Vetter, Steve Cho, linux-media, devicetree,
	linux-kernel, linux-arm-kernel, linux-mediatek,
	Project_Global_Chrome_Upstream_Group

On Sat, Oct 12, 2024 at 2:44 PM Yunfei Dong <yunfei.dong@mediatek.com> wrote:
>
> Getting the SRC buffer from M2M will pick a different than the one
> used for current decode operation when the SRC buffer is removed
> from ready list.
>
> Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com>
> ---
>  .../vcodec/decoder/vdec/vdec_av1_req_lat_if.c     | 13 +++++++------
>  .../vcodec/decoder/vdec/vdec_vp9_req_lat_if.c     | 15 +++++++--------
>  2 files changed, 14 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_av1_req_lat_if.c b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_av1_req_lat_if.c
> index 90217cc8e242..a744740ba5f1 100644
> --- a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_av1_req_lat_if.c
> +++ b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_av1_req_lat_if.c
> @@ -1062,19 +1062,20 @@ static inline void vdec_av1_slice_vsi_to_remote(struct vdec_av1_slice_vsi *vsi,
>
>  static int vdec_av1_slice_setup_lat_from_src_buf(struct vdec_av1_slice_instance *instance,
>                                                  struct vdec_av1_slice_vsi *vsi,
> +                                                struct mtk_vcodec_mem *bs,
>                                                  struct vdec_lat_buf *lat_buf)
>  {
> -       struct vb2_v4l2_buffer *src;
> +       struct mtk_video_dec_buf *src_buf_info;
>         struct vb2_v4l2_buffer *dst;
>
> -       src = v4l2_m2m_next_src_buf(instance->ctx->m2m_ctx);
> -       if (!src)
> +       src_buf_info = container_of(bs, struct mtk_video_dec_buf, bs_buffer);
> +       if (!src_buf_info)
>                 return -EINVAL;

This doesn't make sense.

First of all, you are getting the container of bs, and
mtk_video_dec_buf.bs_buffer is at a non-zero offset, so even if bs is NULL,
container_of(bs, struct mtk_video_dec_buf, bs_buffer) is not going to be
NULL.

Second, vdec_av1_slice_setup_lat_from_src_buf() is called from
vdec_av1_slice_setup_lat(), which itself is called from
vdec_av1_slice_lat_decode(). Earlier in that function, bs is already
checked. If bs is NULL, it's considered a request to flush the decoder.

The other changes look OK. It's just the check that seems meaningless.

>
> -       lat_buf->vb2_v4l2_src = src;
> +       lat_buf->vb2_v4l2_src = &src_buf_info->m2m_buf.vb;
>
>         dst = &lat_buf->ts_info;
> -       v4l2_m2m_buf_copy_metadata(src, dst, true);
> +       v4l2_m2m_buf_copy_metadata(lat_buf->vb2_v4l2_src, dst, true);
>         vsi->frame.cur_ts = dst->vb2_buf.timestamp;
>
>         return 0;
> @@ -1724,7 +1725,7 @@ static int vdec_av1_slice_setup_lat(struct vdec_av1_slice_instance *instance,
>         struct vdec_av1_slice_vsi *vsi = &pfc->vsi;
>         int ret;
>
> -       ret = vdec_av1_slice_setup_lat_from_src_buf(instance, vsi, lat_buf);
> +       ret = vdec_av1_slice_setup_lat_from_src_buf(instance, vsi, bs, lat_buf);
>         if (ret)
>                 return ret;
>
> diff --git a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c
> index 3dceb668ba1c..c50a454ab4f7 100644
> --- a/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c
> +++ b/drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c
> @@ -712,19 +712,18 @@ int vdec_vp9_slice_setup_single_from_src_to_dst(struct vdec_vp9_slice_instance *
>  }
>
>  static int vdec_vp9_slice_setup_lat_from_src_buf(struct vdec_vp9_slice_instance *instance,
> +                                                struct mtk_vcodec_mem *bs,
>                                                  struct vdec_lat_buf *lat_buf)
>  {
> -       struct vb2_v4l2_buffer *src;
> -       struct vb2_v4l2_buffer *dst;
> +       struct mtk_video_dec_buf *src_buf_info;
>
> -       src = v4l2_m2m_next_src_buf(instance->ctx->m2m_ctx);
> -       if (!src)
> +       src_buf_info = container_of(bs, struct mtk_video_dec_buf, bs_buffer);
> +       if (!src_buf_info)
>                 return -EINVAL;

Same thing here.

> -       lat_buf->vb2_v4l2_src = src;
> +       lat_buf->vb2_v4l2_src = &src_buf_info->m2m_buf.vb;
>
> -       dst = &lat_buf->ts_info;
> -       v4l2_m2m_buf_copy_metadata(src, dst, true);
> +       v4l2_m2m_buf_copy_metadata(lat_buf->vb2_v4l2_src, &lat_buf->ts_info, true);
>         return 0;
>  }
>
> @@ -1154,7 +1153,7 @@ static int vdec_vp9_slice_setup_lat(struct vdec_vp9_slice_instance *instance,
>         struct vdec_vp9_slice_vsi *vsi = &pfc->vsi;
>         int ret;
>
> -       ret = vdec_vp9_slice_setup_lat_from_src_buf(instance, lat_buf);
> +       ret = vdec_vp9_slice_setup_lat_from_src_buf(instance, bs, lat_buf);
>         if (ret)
>                 goto err;
>
> --
> 2.46.0
>
>


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-11-07 10:05 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-20 21:37 [PATCH v5 3/5] media: mediatek: vcodec: Get SRC buffer from bitstream instead of M2M kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2024-10-19 16:17 kernel test robot
2024-10-12  6:43 [PATCH v5 0/5] media: mediatek: vcodec: fix v4l2_ctrl_request_complete fail Yunfei Dong
2024-10-12  6:43 ` [PATCH v5 3/5] media: mediatek: vcodec: Get SRC buffer from bitstream instead of M2M Yunfei Dong
2024-11-07  9:51   ` Chen-Yu Tsai

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.