From 4ca7bace36c093a1344431efd8a3ac50da36eab0 Mon Sep 17 00:00:00 2001 From: Hongjin Li Date: Tue, 25 Mar 2025 15:14:50 +0800 Subject: [PATCH] fix[hal_rcb]: Fix rcb buf size calc issue Platform: RV1126B/RK3576 Spec: h265/h264/avs2/vp9/av1 Signed-off-by: Hongjin Li Change-Id: I29e673dc40813e13fe8028b0191aa29d704eb6d8 --- mpp/hal/rkdec/av1d/hal_av1d_vdpu383.c | 2 +- mpp/hal/rkdec/avs2d/hal_avs2d_vdpu383.c | 2 +- mpp/hal/rkdec/h264d/hal_h264d_vdpu383.c | 2 +- mpp/hal/rkdec/h264d/hal_h264d_vdpu384a.c | 2 +- mpp/hal/rkdec/h265d/hal_h265d_vdpu383.c | 2 +- mpp/hal/rkdec/h265d/hal_h265d_vdpu384a.c | 2 +- mpp/hal/rkdec/vp9d/hal_vp9d_vdpu383.c | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/mpp/hal/rkdec/av1d/hal_av1d_vdpu383.c b/mpp/hal/rkdec/av1d/hal_av1d_vdpu383.c index c8228748..706f342f 100644 --- a/mpp/hal/rkdec/av1d/hal_av1d_vdpu383.c +++ b/mpp/hal/rkdec/av1d/hal_av1d_vdpu383.c @@ -1894,7 +1894,7 @@ static void av1d_refine_rcb_size(Vdpu383RcbInfo *rcb_info, if (width > 4096) filterd_row_append = 27648; rcb_bits = (RK_U32)(MPP_ALIGN(width, 64) * (32 * bit_depth + 10)); - rcb_info[RCB_FILTERD_ROW].size = MPP_RCB_BYTES(rcb_bits / 2); + rcb_info[RCB_FILTERD_ROW].size = filterd_row_append + MPP_RCB_BYTES(rcb_bits / 2); rcb_info[RCB_FILTERD_PROTECT_ROW].size = filterd_row_append + MPP_RCB_BYTES(rcb_bits / 2); rcb_bits += ext_row_align_size; if (tile_row_num > 1) diff --git a/mpp/hal/rkdec/avs2d/hal_avs2d_vdpu383.c b/mpp/hal/rkdec/avs2d/hal_avs2d_vdpu383.c index 48df5ac1..26bb5f2f 100644 --- a/mpp/hal/rkdec/avs2d/hal_avs2d_vdpu383.c +++ b/mpp/hal/rkdec/avs2d/hal_avs2d_vdpu383.c @@ -309,7 +309,7 @@ static void avs2d_refine_rcb_size(Vdpu383RcbInfo *rcb_info, if (width > 4096) filterd_row_append = 27648; rcb_bits = MPP_ALIGN(width, 64) * (30 * bit_depth + 9); - rcb_info[RCB_FILTERD_ROW].size = MPP_RCB_BYTES(rcb_bits / 2); + rcb_info[RCB_FILTERD_ROW].size = filterd_row_append + MPP_RCB_BYTES(rcb_bits / 2); rcb_info[RCB_FILTERD_PROTECT_ROW].size = filterd_row_append + MPP_RCB_BYTES(rcb_bits / 2); rcb_info[RCB_FILTERD_TILE_ROW].size = 0; diff --git a/mpp/hal/rkdec/h264d/hal_h264d_vdpu383.c b/mpp/hal/rkdec/h264d/hal_h264d_vdpu383.c index 6dc1746e..2cd3386a 100644 --- a/mpp/hal/rkdec/h264d/hal_h264d_vdpu383.c +++ b/mpp/hal/rkdec/h264d/hal_h264d_vdpu383.c @@ -762,7 +762,7 @@ static void h264d_refine_rcb_size(H264dHalCtx_t *p_hal, Vdpu383RcbInfo *rcb_info rcb_bits = width * 17 * ((6 + 3 * row_uv_para) * (mbaff ? 2 : 1) + 2 * row_uv_para + 1.5); if (width > 4096) filterd_row_append = 27648; - rcb_info[RCB_FILTERD_ROW].size = MPP_RCB_BYTES(rcb_bits / 2); + rcb_info[RCB_FILTERD_ROW].size = filterd_row_append + MPP_RCB_BYTES(rcb_bits / 2); rcb_info[RCB_FILTERD_PROTECT_ROW].size = filterd_row_append + MPP_RCB_BYTES(rcb_bits / 2); rcb_info[RCB_FILTERD_TILE_ROW].size = 0; diff --git a/mpp/hal/rkdec/h264d/hal_h264d_vdpu384a.c b/mpp/hal/rkdec/h264d/hal_h264d_vdpu384a.c index 8df1985a..048de523 100644 --- a/mpp/hal/rkdec/h264d/hal_h264d_vdpu384a.c +++ b/mpp/hal/rkdec/h264d/hal_h264d_vdpu384a.c @@ -708,7 +708,7 @@ static void h264d_refine_rcb_size(H264dHalCtx_t *p_hal, Vdpu384aRcbInfo *rcb_inf rcb_bits = width * 13 * ((6 + 3 * row_uv_para) * (mbaff ? 2 : 1) + 2 * row_uv_para + 1.5); if (width > 4096) filterd_row_append = 27648; - rcb_info[RCB_FILTERD_ROW].size = MPP_RCB_BYTES(rcb_bits / 2); + rcb_info[RCB_FILTERD_ROW].size = filterd_row_append + MPP_RCB_BYTES(rcb_bits / 2); rcb_info[RCB_FILTERD_PROTECT_ROW].size = filterd_row_append + MPP_RCB_BYTES(rcb_bits / 2); rcb_info[RCB_FILTERD_TILE_ROW].size = 0; diff --git a/mpp/hal/rkdec/h265d/hal_h265d_vdpu383.c b/mpp/hal/rkdec/h265d/hal_h265d_vdpu383.c index 53969b88..4a32c795 100644 --- a/mpp/hal/rkdec/h265d/hal_h265d_vdpu383.c +++ b/mpp/hal/rkdec/h265d/hal_h265d_vdpu383.c @@ -704,7 +704,7 @@ static void h265d_refine_rcb_size(Vdpu383RcbInfo *rcb_info, // save space mode : half for RCB_FILTERD_ROW, half for RCB_FILTERD_PROTECT_ROW if (width > 4096) filterd_row_append = 27648; - rcb_info[RCB_FILTERD_ROW].size = MPP_RCB_BYTES(rcb_bits / 2); + rcb_info[RCB_FILTERD_ROW].size = MPP_RCB_BYTES(rcb_bits / 2) + filterd_row_append; rcb_info[RCB_FILTERD_PROTECT_ROW].size = MPP_RCB_BYTES(rcb_bits / 2) + filterd_row_append; rcb_bits += ext_row_align_size; if (tile_row_cut_num) diff --git a/mpp/hal/rkdec/h265d/hal_h265d_vdpu384a.c b/mpp/hal/rkdec/h265d/hal_h265d_vdpu384a.c index 90fbf076..0800c626 100644 --- a/mpp/hal/rkdec/h265d/hal_h265d_vdpu384a.c +++ b/mpp/hal/rkdec/h265d/hal_h265d_vdpu384a.c @@ -698,7 +698,7 @@ static void h265d_refine_rcb_size(Vdpu384aRcbInfo *rcb_info, // save space mode : half for RCB_FILTERD_ROW, half for RCB_FILTERD_PROTECT_ROW if (width > 4096) filterd_row_append = 27648; - rcb_info[RCB_FILTERD_ROW].size = MPP_RCB_BYTES(rcb_bits / 2); + rcb_info[RCB_FILTERD_ROW].size = MPP_RCB_BYTES(rcb_bits / 2) + filterd_row_append; rcb_info[RCB_FILTERD_PROTECT_ROW].size = MPP_RCB_BYTES(rcb_bits / 2) + filterd_row_append; rcb_bits += ext_row_align_size; if (tile_row_cut_num) diff --git a/mpp/hal/rkdec/vp9d/hal_vp9d_vdpu383.c b/mpp/hal/rkdec/vp9d/hal_vp9d_vdpu383.c index 43e5c679..ed78d127 100644 --- a/mpp/hal/rkdec/vp9d/hal_vp9d_vdpu383.c +++ b/mpp/hal/rkdec/vp9d/hal_vp9d_vdpu383.c @@ -422,7 +422,7 @@ static void vp9d_refine_rcb_size(Vdpu383RcbInfo *rcb_info, if (width > 4096) filterd_row_append = 27648; rcb_bits = (RK_U32)(MPP_ALIGN(width, 64) * (41 * bit_depth + 13)); - rcb_info[RCB_FILTERD_ROW].size = MPP_RCB_BYTES(rcb_bits / 2); + rcb_info[RCB_FILTERD_ROW].size = filterd_row_append + MPP_RCB_BYTES(rcb_bits / 2); rcb_info[RCB_FILTERD_PROTECT_ROW].size = filterd_row_append + MPP_RCB_BYTES(rcb_bits / 2); rcb_bits += ext_row_align_size; if (tile_row_num > 1)