summaryrefslogtreecommitdiffstats
path: root/encoder
diff options
context:
space:
mode:
Diffstat (limited to 'encoder')
-rw-r--r--encoder/arm/ihevce_ssd_calculator_neon.c87
-rw-r--r--encoder/ihevce_cmn_utils_instr_set_router.h4
-rw-r--r--encoder/ihevce_common_utils.c10
-rw-r--r--encoder/ihevce_defs.h7
-rw-r--r--encoder/ihevce_enc_loop_structs.h3
-rw-r--r--encoder/ihevce_enc_loop_utils.c46
-rw-r--r--encoder/ihevce_enc_structs.h3
-rw-r--r--encoder/ihevce_recur_bracketing.c2
-rw-r--r--encoder/ihevce_sao.c8
9 files changed, 95 insertions, 75 deletions
diff --git a/encoder/arm/ihevce_ssd_calculator_neon.c b/encoder/arm/ihevce_ssd_calculator_neon.c
index d62bcfc..9cb659c 100644
--- a/encoder/arm/ihevce_ssd_calculator_neon.c
+++ b/encoder/arm/ihevce_ssd_calculator_neon.c
@@ -54,21 +54,22 @@
/* Function Definitions */
/*****************************************************************************/
static INLINE uint32x4_t ihevce_4x4_ssd_computer_neon(
- UWORD8 *pu1_src, UWORD8 *pu1_pred, WORD32 src_strd, WORD32 pred_strd, WORD32 is_chroma)
+ UWORD8 *pu1_src, UWORD8 *pu1_pred, WORD32 src_strd, WORD32 pred_strd,
+ CHROMA_PLANE_ID_T chroma_plane)
{
uint32x4_t ssd_low, ssd_high;
uint8x16_t src, pred, abs;
uint16x8_t sqabs_low, sqabs_high;
- if(!is_chroma)
+ if(chroma_plane == NULL_PLANE)
{
src = load_unaligned_u8q(pu1_src, src_strd);
pred = load_unaligned_u8q(pu1_pred, pred_strd);
}
else
{
- src = load_unaligned_u8qi(pu1_src, src_strd);
- pred = load_unaligned_u8qi(pu1_pred, pred_strd);
+ src = load_unaligned_u8qi(pu1_src + chroma_plane, src_strd);
+ pred = load_unaligned_u8qi(pu1_pred + chroma_plane, pred_strd);
}
abs = vabdq_u8(src, pred);
sqabs_low = vmull_u8(vget_low_u8(abs), vget_low_u8(abs));
@@ -80,21 +81,22 @@ static INLINE uint32x4_t ihevce_4x4_ssd_computer_neon(
}
static INLINE uint32x4_t
- ihevce_1x8_ssd_computer_neon(UWORD8 *pu1_src, UWORD8 *pu1_pred, WORD32 is_chroma)
+ ihevce_1x8_ssd_computer_neon(UWORD8 *pu1_src, UWORD8 *pu1_pred,
+ CHROMA_PLANE_ID_T chroma_plane)
{
uint32x4_t ssd_val;
uint8x8_t src, pred, abs;
uint16x8_t sqabs;
- if(!is_chroma)
+ if(chroma_plane == NULL_PLANE)
{
src = vld1_u8(pu1_src);
pred = vld1_u8(pu1_pred);
}
else
{
- src = vld2_u8(pu1_src).val[0];
- pred = vld2_u8(pu1_pred).val[0];
+ src = vld2_u8(pu1_src).val[chroma_plane];
+ pred = vld2_u8(pu1_pred).val[chroma_plane];
}
abs = vabd_u8(src, pred);
sqabs = vmull_u8(abs, abs);
@@ -104,21 +106,22 @@ static INLINE uint32x4_t
}
static INLINE uint32x4_t
- ihevce_1x16_ssd_computer_neon(UWORD8 *pu1_src, UWORD8 *pu1_pred, WORD32 is_chroma)
+ ihevce_1x16_ssd_computer_neon(UWORD8 *pu1_src, UWORD8 *pu1_pred,
+ CHROMA_PLANE_ID_T chroma_plane)
{
uint32x4_t ssd_low, ssd_high;
uint8x16_t src, pred, abs;
uint16x8_t sqabs_low, sqabs_high;
- if(!is_chroma)
+ if(chroma_plane == NULL_PLANE)
{
src = vld1q_u8(pu1_src);
pred = vld1q_u8(pu1_pred);
}
else
{
- src = vld2q_u8(pu1_src).val[0];
- pred = vld2q_u8(pu1_pred).val[0];
+ src = vld2q_u8(pu1_src).val[chroma_plane];
+ pred = vld2q_u8(pu1_pred).val[chroma_plane];
}
abs = vabdq_u8(src, pred);
sqabs_low = vmull_u8(vget_low_u8(abs), vget_low_u8(abs));
@@ -130,13 +133,14 @@ static INLINE uint32x4_t
}
static INLINE uint32x4_t
- ihevce_1x32_ssd_computer_neon(UWORD8 *pu1_src, UWORD8 *pu1_pred, WORD32 is_chroma)
+ ihevce_1x32_ssd_computer_neon(UWORD8 *pu1_src, UWORD8 *pu1_pred,
+ CHROMA_PLANE_ID_T chroma_plane)
{
uint32x4_t ssd_0, ssd_1, ssd_2, ssd_3;
uint8x16_t src_0, pred_0, src_1, pred_1, abs_0, abs_1;
uint16x8_t sqabs_0, sqabs_1, sqabs_2, sqabs_3;
- if(!is_chroma)
+ if(chroma_plane == NULL_PLANE)
{
src_0 = vld1q_u8(pu1_src);
pred_0 = vld1q_u8(pu1_pred);
@@ -145,10 +149,10 @@ static INLINE uint32x4_t
}
else
{
- src_0 = vld2q_u8(pu1_src).val[0];
- pred_0 = vld2q_u8(pu1_pred).val[0];
- src_1 = vld2q_u8(pu1_src + 32).val[0];
- pred_1 = vld2q_u8(pu1_pred + 32).val[0];
+ src_0 = vld2q_u8(pu1_src).val[chroma_plane];
+ pred_0 = vld2q_u8(pu1_pred).val[chroma_plane];
+ src_1 = vld2q_u8(pu1_src + 32).val[chroma_plane];
+ pred_1 = vld2q_u8(pu1_pred + 32).val[chroma_plane];
}
abs_0 = vabdq_u8(src_0, pred_0);
abs_1 = vabdq_u8(src_1, pred_1);
@@ -167,7 +171,8 @@ static INLINE uint32x4_t
}
static INLINE uint32x4_t
- ihevce_1x64_ssd_computer_neon(UWORD8 *pu1_src, UWORD8 *pu1_pred, WORD32 is_chroma)
+ ihevce_1x64_ssd_computer_neon(UWORD8 *pu1_src, UWORD8 *pu1_pred,
+ CHROMA_PLANE_ID_T chroma_plane)
{
uint32x4_t ssd_0, ssd_1, ssd_2, ssd_3;
uint32x4_t ssd_4, ssd_5, ssd_6, ssd_7;
@@ -177,7 +182,7 @@ static INLINE uint32x4_t
uint16x8_t sqabs_0, sqabs_1, sqabs_2, sqabs_3;
uint16x8_t sqabs_4, sqabs_5, sqabs_6, sqabs_7;
- if(!is_chroma)
+ if(chroma_plane == NULL_PLANE)
{
src_0 = vld1q_u8(pu1_src);
pred_0 = vld1q_u8(pu1_pred);
@@ -190,14 +195,14 @@ static INLINE uint32x4_t
}
else
{
- src_0 = vld2q_u8(pu1_src).val[0];
- pred_0 = vld2q_u8(pu1_pred).val[0];
- src_1 = vld2q_u8(pu1_src + 32).val[0];
- pred_1 = vld2q_u8(pu1_pred + 32).val[0];
- src_2 = vld2q_u8(pu1_src + 64).val[0];
- pred_2 = vld2q_u8(pu1_pred + 64).val[0];
- src_3 = vld2q_u8(pu1_src + 96).val[0];
- pred_3 = vld2q_u8(pu1_pred + 96).val[0];
+ src_0 = vld2q_u8(pu1_src).val[chroma_plane];
+ pred_0 = vld2q_u8(pu1_pred).val[chroma_plane];
+ src_1 = vld2q_u8(pu1_src + 32).val[chroma_plane];
+ pred_1 = vld2q_u8(pu1_pred + 32).val[chroma_plane];
+ src_2 = vld2q_u8(pu1_src + 64).val[chroma_plane];
+ pred_2 = vld2q_u8(pu1_pred + 64).val[chroma_plane];
+ src_3 = vld2q_u8(pu1_src + 96).val[chroma_plane];
+ pred_3 = vld2q_u8(pu1_pred + 96).val[chroma_plane];
}
abs_0 = vabdq_u8(src_0, pred_0);
abs_1 = vabdq_u8(src_1, pred_1);
@@ -236,7 +241,7 @@ static LWORD64 ihevce_ssd_calculator_plane_neon(
UWORD32 ref_stride,
UWORD32 wd,
UWORD32 ht,
- WORD32 is_chroma)
+ CHROMA_PLANE_ID_T chroma_plane)
{
uint32x4_t ssd = vdupq_n_u32(0);
uint32x2_t sum;
@@ -248,13 +253,13 @@ static LWORD64 ihevce_ssd_calculator_plane_neon(
for(row = ht; row > 0; row--)
{
if(wd == 8)
- ssd = vaddq_u32(ssd, ihevce_1x8_ssd_computer_neon(pu1_inp, pu1_ref, is_chroma));
+ ssd = vaddq_u32(ssd, ihevce_1x8_ssd_computer_neon(pu1_inp, pu1_ref, chroma_plane));
else if(wd == 16)
- ssd = vaddq_u32(ssd, ihevce_1x16_ssd_computer_neon(pu1_inp, pu1_ref, is_chroma));
+ ssd = vaddq_u32(ssd, ihevce_1x16_ssd_computer_neon(pu1_inp, pu1_ref, chroma_plane));
else if(wd == 32)
- ssd = vaddq_u32(ssd, ihevce_1x32_ssd_computer_neon(pu1_inp, pu1_ref, is_chroma));
+ ssd = vaddq_u32(ssd, ihevce_1x32_ssd_computer_neon(pu1_inp, pu1_ref, chroma_plane));
else if(wd == 64)
- ssd = vaddq_u32(ssd, ihevce_1x64_ssd_computer_neon(pu1_inp, pu1_ref, is_chroma));
+ ssd = vaddq_u32(ssd, ihevce_1x64_ssd_computer_neon(pu1_inp, pu1_ref, chroma_plane));
else if(wd % 8 == 0)
{
UWORD32 col;
@@ -262,7 +267,7 @@ static LWORD64 ihevce_ssd_calculator_plane_neon(
for(col = 0; col < wd; col += 8)
{
- ssd = vaddq_u32(ssd, ihevce_1x8_ssd_computer_neon(inp, ref, is_chroma));
+ ssd = vaddq_u32(ssd, ihevce_1x8_ssd_computer_neon(inp, ref, chroma_plane));
ref = ref + 8;
inp = inp + 8;
}
@@ -275,7 +280,7 @@ static LWORD64 ihevce_ssd_calculator_plane_neon(
else if(wd == 4)
{
assert(ht == 4);
- ssd = ihevce_4x4_ssd_computer_neon(pu1_inp, pu1_ref, inp_stride, ref_stride, is_chroma);
+ ssd = ihevce_4x4_ssd_computer_neon(pu1_inp, pu1_ref, inp_stride, ref_stride, chroma_plane);
}
sum = vadd_u32(vget_low_u32(ssd), vget_high_u32(ssd));
@@ -283,13 +288,17 @@ static LWORD64 ihevce_ssd_calculator_plane_neon(
}
LWORD64 ihevce_ssd_calculator_neon(
- UWORD8 *pu1_inp, UWORD8 *pu1_ref, UWORD32 inp_stride, UWORD32 ref_stride, UWORD32 wd, UWORD32 ht)
+ UWORD8 *pu1_inp, UWORD8 *pu1_ref, UWORD32 inp_stride, UWORD32 ref_stride, UWORD32 wd,
+ UWORD32 ht, CHROMA_PLANE_ID_T chroma_plane)
{
- return ihevce_ssd_calculator_plane_neon(pu1_inp, pu1_ref, inp_stride, ref_stride, wd, ht, 0);
+ return ihevce_ssd_calculator_plane_neon(pu1_inp, pu1_ref, inp_stride, ref_stride, wd, ht,
+ chroma_plane);
}
LWORD64 ihevce_chroma_interleave_ssd_calculator_neon(
- UWORD8 *pu1_inp, UWORD8 *pu1_ref, UWORD32 inp_stride, UWORD32 ref_stride, UWORD32 wd, UWORD32 ht)
+ UWORD8 *pu1_inp, UWORD8 *pu1_ref, UWORD32 inp_stride, UWORD32 ref_stride, UWORD32 wd,
+ UWORD32 ht, CHROMA_PLANE_ID_T chroma_plane)
{
- return ihevce_ssd_calculator_plane_neon(pu1_inp, pu1_ref, inp_stride, ref_stride, wd, ht, 1);
+ return ihevce_ssd_calculator_plane_neon(pu1_inp, pu1_ref, inp_stride, ref_stride, wd, ht,
+ chroma_plane);
}
diff --git a/encoder/ihevce_cmn_utils_instr_set_router.h b/encoder/ihevce_cmn_utils_instr_set_router.h
index be7554f..f385372 100644
--- a/encoder/ihevce_cmn_utils_instr_set_router.h
+++ b/encoder/ihevce_cmn_utils_instr_set_router.h
@@ -40,6 +40,7 @@
#define __IHEVCE_CMN_UTILS_INSTR_SET_ROUTER_H_
#include "ihevc_typedefs.h"
+#include "ihevc_defs.h"
#include "ihevce_defs.h"
/*****************************************************************************/
@@ -47,7 +48,8 @@
/*****************************************************************************/
typedef UWORD32 FT_CALC_HAD_SATD_8BIT(UWORD8 *, WORD32, UWORD8 *, WORD32, WORD16 *, WORD32);
-typedef LWORD64 FT_SSD_CALCULATOR(UWORD8 *, UWORD8 *, UWORD32, UWORD32, UWORD32, UWORD32);
+typedef LWORD64 FT_SSD_CALCULATOR(
+ UWORD8 *, UWORD8 *, UWORD32, UWORD32, UWORD32, UWORD32, CHROMA_PLANE_ID_T);
typedef LWORD64 FT_SSD_AND_SAD_CALCULATOR(UWORD8 *, WORD32, UWORD8 *, WORD32, WORD32, UWORD32 *);
diff --git a/encoder/ihevce_common_utils.c b/encoder/ihevce_common_utils.c
index dd99132..e7fb036 100644
--- a/encoder/ihevce_common_utils.c
+++ b/encoder/ihevce_common_utils.c
@@ -858,11 +858,12 @@ WORD32 ihevce_osal_delete(void *pv_hle_ctxt)
*******************************************************************************
*/
LWORD64 ihevce_ssd_calculator(
- UWORD8 *pu1_inp, UWORD8 *pu1_ref, UWORD32 inp_stride, UWORD32 ref_stride, UWORD32 wd, UWORD32 ht)
+ UWORD8 *pu1_inp, UWORD8 *pu1_ref, UWORD32 inp_stride, UWORD32 ref_stride, UWORD32 wd,
+ UWORD32 ht, CHROMA_PLANE_ID_T chroma_plane)
{
UWORD32 i, j;
LWORD64 ssd = 0;
-
+ UNUSED(chroma_plane);
for(i = 0; i < ht; i++)
{
for(j = 0; j < wd; j++)
@@ -910,10 +911,13 @@ LWORD64 ihevce_ssd_calculator(
*******************************************************************************
*/
LWORD64 ihevce_chroma_interleave_ssd_calculator(
- UWORD8 *pu1_inp, UWORD8 *pu1_ref, UWORD32 inp_stride, UWORD32 ref_stride, UWORD32 wd, UWORD32 ht)
+ UWORD8 *pu1_inp, UWORD8 *pu1_ref, UWORD32 inp_stride, UWORD32 ref_stride, UWORD32 wd,
+ UWORD32 ht, CHROMA_PLANE_ID_T chroma_plane)
{
UWORD32 i, j;
LWORD64 ssd = 0;
+ pu1_inp += chroma_plane;
+ pu1_ref += chroma_plane;
/* run a loop and find the ssd by doing diff followed by square */
for(i = 0; i < ht; i++)
diff --git a/encoder/ihevce_defs.h b/encoder/ihevce_defs.h
index ffc35e3..23871ea 100644
--- a/encoder/ihevce_defs.h
+++ b/encoder/ihevce_defs.h
@@ -967,13 +967,6 @@ typedef enum
} REF_LISTS_t;
-typedef enum
-{
- NULL_PLANE = -1,
- U_PLANE = 0,
- V_PLANE = 1
-} CHROMA_PLANE_ID_T;
-
typedef enum SSD_TYPE_T
{
NULL_TYPE = -1,
diff --git a/encoder/ihevce_enc_loop_structs.h b/encoder/ihevce_enc_loop_structs.h
index 74417c7..0768871 100644
--- a/encoder/ihevce_enc_loop_structs.h
+++ b/encoder/ihevce_enc_loop_structs.h
@@ -215,7 +215,8 @@ typedef UWORD32 (*pf_res_trans_chroma)(
WORD16 *pi2_dst,
WORD32 src_strd,
WORD32 pred_strd,
- WORD32 dst_strd_chr_flag);
+ WORD32 dst_strd,
+ CHROMA_PLANE_ID_T e_chroma_plane);
/** \breif function pointer prototype for quantization and inv Quant for ssd
calc. for all transform sizes */
diff --git a/encoder/ihevce_enc_loop_utils.c b/encoder/ihevce_enc_loop_utils.c
index 9aa7bc8..4665cd0 100644
--- a/encoder/ihevce_enc_loop_utils.c
+++ b/encoder/ihevce_enc_loop_utils.c
@@ -2188,7 +2188,8 @@ WORD32 ihevce_t_q_iq_ssd_scan_fxn(
pi2_trans_values,
src_strd,
pred_strd,
- ((trans_size << 16) + 0)); /* dst strd and chroma flag are packed together */
+ trans_size,
+ NULL_PLANE);
cbf = ps_ctxt->apf_quant_iquant_ssd
[i4_perform_coeff_level_rdoq + (e_ssd_type != FREQUENCY_DOMAIN_SSD) * 2](
@@ -2297,7 +2298,7 @@ WORD32 ihevce_t_q_iq_ssd_scan_fxn(
zero_cbf_cost =
ps_ctxt->s_cmn_opt_func.pf_ssd_calculator(
- pu1_src, pu1_pred, src_strd, pred_strd, trans_size, trans_size);
+ pu1_src, pu1_pred, src_strd, pred_strd, trans_size, trans_size, NULL_PLANE);
}
/************************************************************************/
@@ -7601,7 +7602,8 @@ LWORD64 ihevce_chroma_cu_prcs_rdopt(
pred_strd,
chrm_src_stride,
trans_size,
- trans_size);
+ trans_size,
+ U_PLANE);
if(u1_compute_spatial_ssd)
{
@@ -7861,12 +7863,13 @@ LWORD64 ihevce_chroma_cu_prcs_rdopt(
curr_cr_cod_cost = trans_ssd_v =
ps_ctxt->s_cmn_opt_func.pf_chroma_interleave_ssd_calculator(
- pu1_cur_pred + 1,
- pu1_cur_src + 1,
+ pu1_cur_pred,
+ pu1_cur_src,
pred_strd,
chrm_src_stride,
trans_size,
- trans_size);
+ trans_size,
+ V_PLANE);
if(u1_compute_spatial_ssd)
{
@@ -10487,7 +10490,8 @@ LWORD64 ihevce_it_recon_ssd(
i4_zero_row);
return ps_ctxt->s_cmn_opt_func.pf_ssd_calculator(
- pu1_recon, pu1_src, i4_recon_stride, i4_src_strd, u1_trans_size, u1_trans_size);
+ pu1_recon, pu1_src, i4_recon_stride, i4_src_strd, u1_trans_size, u1_trans_size,
+ e_chroma_plane);
}
else
{
@@ -10507,12 +10511,13 @@ LWORD64 ihevce_it_recon_ssd(
e_chroma_plane);
return ps_ctxt->s_cmn_opt_func.pf_chroma_interleave_ssd_calculator(
- pu1_recon + (e_chroma_plane == V_PLANE),
- pu1_src + (e_chroma_plane == V_PLANE),
+ pu1_recon,
+ pu1_src,
i4_recon_stride,
i4_src_strd,
u1_trans_size,
- u1_trans_size);
+ u1_trans_size,
+ e_chroma_plane);
}
}
@@ -10628,12 +10633,13 @@ WORD32 ihevce_chroma_t_q_iq_ssd_scan_fxn(
if(u1_is_skip)
{
pi8_cost[0] = ps_ctxt->s_cmn_opt_func.pf_chroma_interleave_ssd_calculator(
- pu1_pred + e_chroma_plane,
- pu1_src + e_chroma_plane,
+ pu1_pred,
+ pu1_src,
pred_strd,
src_strd,
trans_size,
- trans_size);
+ trans_size,
+ e_chroma_plane);
if(e_ssd_type == SPATIAL_DOMAIN_SSD)
{
@@ -10735,13 +10741,14 @@ WORD32 ihevce_chroma_t_q_iq_ssd_scan_fxn(
/* ---------- call residue and transform block ------- */
u4_blk_sad = ps_ctxt->apf_chrm_resd_trns[trans_idx - 1](
- pu1_src + (e_chroma_plane == V_PLANE),
- pu1_pred + (e_chroma_plane == V_PLANE),
+ pu1_src,
+ pu1_pred,
pi4_trans_scratch,
pi2_trans_values,
src_strd,
pred_strd,
- ((trans_size << 16) + 1)); /* dst strd and chroma flag are packed together */
+ trans_size,
+ e_chroma_plane);
(void)u4_blk_sad;
/* -------- calculate SSD calculation in Transform Domain ------ */
@@ -10855,12 +10862,13 @@ WORD32 ihevce_chroma_t_q_iq_ssd_scan_fxn(
zero_cbf_cost_u =
ps_ctxt->s_cmn_opt_func.pf_chroma_interleave_ssd_calculator(
- pu1_pred + (e_chroma_plane == V_PLANE),
- pu1_src + (e_chroma_plane == V_PLANE),
+ pu1_pred,
+ pu1_src,
pred_strd,
src_strd,
trans_size,
- trans_size);
+ trans_size,
+ e_chroma_plane);
}
/************************************************************************/
diff --git a/encoder/ihevce_enc_structs.h b/encoder/ihevce_enc_structs.h
index 2c442b9..ac39673 100644
--- a/encoder/ihevce_enc_structs.h
+++ b/encoder/ihevce_enc_structs.h
@@ -221,7 +221,8 @@ typedef UWORD32 (*pf_res_trans_luma)(
WORD16 *pi2_dst,
WORD32 src_strd,
WORD32 pred_strd,
- WORD32 dst_strd_chr_flag);
+ WORD32 dst_strd,
+ CHROMA_PLANE_ID_T e_chroma_plane);
typedef WORD32 (*pf_quant)(
WORD16 *pi2_coeffs,
diff --git a/encoder/ihevce_recur_bracketing.c b/encoder/ihevce_recur_bracketing.c
index 2967b37..15d09b4 100644
--- a/encoder/ihevce_recur_bracketing.c
+++ b/encoder/ihevce_recur_bracketing.c
@@ -451,7 +451,7 @@ void ihevce_pu_calc_4x4_blk(
if(u1_use_satd)
{
ps_func_selector->ihevc_resi_trans_4x4_ttype1_fptr(
- pu1_src, &pred[0], (WORD32 *)pi2_tmp, pi2_trans_out, src_stride, 4, (4 << 16) | 0);
+ pu1_src, &pred[0], (WORD32 *)pi2_tmp, pi2_trans_out, src_stride, 4, 4, NULL_PLANE);
sad = ihevce_ipe_pass_satd(pi2_trans_out, 4, 4);
}
diff --git a/encoder/ihevce_sao.c b/encoder/ihevce_sao.c
index 4e7ea0a..d658535 100644
--- a/encoder/ihevce_sao.c
+++ b/encoder/ihevce_sao.c
@@ -779,7 +779,7 @@ void ihevce_sao_analyse(
distortion =
ps_sao_ctxt->ps_cmn_utils_optimised_function_list->pf_ssd_calculator(pu1_src_luma,
s_sao_ctxt.pu1_cur_luma_recon_buf, luma_src_stride,
- s_sao_ctxt.i4_cur_luma_recon_stride, ctb_wd, ctb_ht);
+ s_sao_ctxt.i4_cur_luma_recon_stride, ctb_wd, ctb_ht, NULL_PLANE);
// clang-format on
ps_sao_ctxt->ps_rdopt_entropy_ctxt->i4_curr_buf_idx = curr_buf_idx;
@@ -1145,7 +1145,8 @@ void ihevce_sao_analyse(
ps_sao_ctxt->ps_cmn_utils_optimised_function_list->pf_ssd_calculator(pu1_src_luma,
s_sao_ctxt.pu1_cur_luma_recon_buf, luma_src_stride,
s_sao_ctxt.i4_cur_luma_recon_stride, ctb_wd,
- ctb_ht);
+ ctb_ht,
+ NULL_PLANE);
} // clang-format on
if(ps_sao_ctxt->ps_slice_hdr->i1_slice_sao_chroma_flag)
@@ -1155,7 +1156,8 @@ void ihevce_sao_analyse(
s_sao_ctxt.pu1_cur_chroma_recon_buf,
chroma_src_stride,
s_sao_ctxt.i4_cur_chroma_recon_stride, ctb_wd,
- (ctb_ht >> !u1_is_422));
+ (ctb_ht >> !u1_is_422),
+ NULL_PLANE);
} // clang-format on
/*chroma distortion is added after correction because of lambda difference*/