cosmetic changes to minimize diff with main branch
Some checks are pending
CMake / build (cmake, aarch64-linux-gnu-gcc, -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/aarch64_toolchain.cmake, aarch64-linux-gnu-g++, ubuntu-latest-cross-aarch64-cmake, ubuntu-latest) (push) Waiting to run
CMake / build (cmake, arm-linux-gnueabihf-gcc, -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/aarch32_toolchain.cmake, arm-linux-gnueabihf-g++, ubuntu-latest-cross-aarch32-cmake, ubuntu-latest) (push) Waiting to run
CMake / build (cmake, clang, , clang++, macos-latest-clang-cmake, macos-latest) (push) Waiting to run
CMake / build (cmake, clang, , clang++, ubuntu-24.04-arm-clang-cmake, ubuntu-24.04-arm) (push) Waiting to run
CMake / build (cmake, clang, , clang++, ubuntu-latest-clang-cmake, ubuntu-latest) (push) Waiting to run
CMake / build (cmake, clang, -DSANITIZE=fuzzer-no-link,address, clang++, ubuntu-latest-clang-cmake-asan-fuzzer, ubuntu-latest) (push) Waiting to run
CMake / build (cmake, clang, -G Ninja, clang++, ubuntu-latest-clang-cmake-ninja, ubuntu-latest) (push) Waiting to run
CMake / build (cmake, gcc, , g++, ubuntu-latest-gcc-cmake, ubuntu-latest) (push) Waiting to run

This commit is contained in:
Harish Mahendrakar 2026-09-16 21:18:32 -07:00 • committed by Harish Mahendrakar
parent 8ae8e3842d
commit 1fbe122b62
6 changed files with 82 additions and 88 deletions

View file

@ -91,7 +91,6 @@
#include "ihevcd_decode.h"
#include "ihevcd_job_queue.h"
#include "ihevcd_statistics.h"
#include "ihevcd_parse_residual.h"
#define ALIGNED_FREE(ps_codec, y) \
@ -177,12 +176,6 @@ static IV_API_CALL_STATUS_T api_check_struct_sanity(iv_obj_t *ps_handle,
return IV_FAIL;
}
if(ps_handle->pv_fxns != ihevcd_cxa_api_function)
{
*(pu4_api_op + 1) |= 1 << IVD_UNSUPPORTEDPARAM;
*(pu4_api_op + 1) |= IVD_INVALID_HANDLE_NULL;
return IV_FAIL;
}
if(ps_handle->pv_codec_handle == NULL)
{
@ -1182,7 +1175,6 @@ WORD32 ihevcd_init(codec_t *ps_codec)
/* If the codec is in shared mode and required format is 420 SP VU interleaved then change
* reference buffers chroma format
*/
/* Nithya: 422 assignment happens after sps parsing */
if(IV_YUV_420SP_VU == ps_codec->e_chroma_fmt)
{
ps_codec->e_ref_chroma_fmt = IV_YUV_420SP_VU;
@ -1237,7 +1229,8 @@ WORD32 ihevcd_init(codec_t *ps_codec)
ihevc_dpb_mgr_init((dpb_mgr_t *)ps_codec->pv_dpb_mgr);
ps_codec->e_processor_soc = SOC_GENERIC;
ps_codec->u4_nctb = 0x7FFFFFFF; //MAX_NCTB;
/* The following can be over-ridden using soc parameter as a hack */
ps_codec->u4_nctb = 0x7FFFFFFF;
ihevcd_init_arch(ps_codec);
ihevcd_init_function_ptr(ps_codec);
@ -1968,6 +1961,7 @@ WORD32 ihevcd_allocate_dynamic_bufs(codec_t *ps_codec)
size += ps_codec->i4_pixel_size_uv * max_ctb_rows * 2;
}
size = ALIGN64(size);
pu1_buf = ps_codec->pf_aligned_alloc(pv_mem_ctxt, 128, size);
@ -1989,8 +1983,8 @@ WORD32 ihevcd_allocate_dynamic_bufs(codec_t *ps_codec)
}
ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_left_chroma = (UWORD8 *)pu1_buf;
pu1_buf += MAX(ht, wd) * (chroma_pixel_strd / v_samp_factor) * ps_codec->i4_pixel_size_uv;
}
for(i = 0; i < MAX_PROCESS_THREADS; i++)
{
ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_top_luma = (UWORD8 *)pu1_buf;
@ -2006,8 +2000,8 @@ WORD32 ihevcd_allocate_dynamic_bufs(codec_t *ps_codec)
}
ps_codec->s_parse.s_sao_ctxt.pu1_sao_src_top_chroma = (UWORD8 *)pu1_buf;
pu1_buf += wd * (chroma_pixel_strd / h_samp_factor) * ps_codec->i4_pixel_size_uv;
}
for(i = 0; i < MAX_PROCESS_THREADS; i++)
{
ps_codec->as_process[i].s_sao_ctxt.pu1_sao_src_luma_top_left_ctb = (UWORD8 *)pu1_buf;
@ -2195,15 +2189,15 @@ WORD32 ihevcd_allocate_dynamic_bufs(codec_t *ps_codec)
ps_codec->as_process[i].pu1_tile_idx = (UWORD16 *)pv_buf + wd / MIN_CTB_SIZE /* Offset 1 row */;
}
if (sizeof(UWORD8) == pixel_size)
{
/* 4 bytes per color component per CTB */
size = 3 * 4;
}
else /* HBD: currently upto 12 bit depth case */
{
size = sizeof(sao_10bd_t);
}
if (sizeof(UWORD8) == pixel_size)
{
/* 4 bytes per color component per CTB */
size = 3 * 4;
}
else /* HBD: currently upto 12 bit depth case */
{
size = sizeof(sao_10bd_t);
}
/* MAX number of CTBs in a row */
size *= wd / MIN_CTB_SIZE;

View file

@ -360,28 +360,28 @@ void ihevcd_deblk_ctb(deblk_ctxt_t *ps_deblk,
filter_p, filter_q);
if (BIT_DEPTH_LUMA == u1_bit_depth_luma)
{
ps_codec->s_func_selector.ihevc_deblk_luma_vert_fptr(pu1_src, src_strd,
u4_bs & 3, qp_p, qp_q,
i1_beta_offset_div2,
i1_tc_offset_div2,
filter_p, filter_q);
}
ps_codec->s_func_selector.ihevc_deblk_luma_vert_fptr(pu1_src, src_strd,
u4_bs & 3, qp_p, qp_q,
i1_beta_offset_div2,
i1_tc_offset_div2,
filter_p, filter_q);
}
else
{
ps_codec->s_func_selector.ihevc_hbd_deblk_luma_vert_fptr((UWORD16 *)pu1_src,
src_strd,
u4_bs & 3, qp_p, qp_q,
i1_beta_offset_div2,
i1_tc_offset_div2,
filter_p, filter_q,
u1_bit_depth_luma);
src_strd,
u4_bs & 3, qp_p, qp_q,
i1_beta_offset_div2,
i1_tc_offset_div2,
filter_p, filter_q,
u1_bit_depth_luma);
}
}
pu1_src += 4 * src_strd * pixel_size_y;
u4_bs = u4_bs >> 2;
row++;
} /* End of loop over rows */
}
if((64 == ctb_size) ||
((32 == ctb_size) && (col & 1)))
@ -516,20 +516,20 @@ void ihevcd_deblk_ctb(deblk_ctxt_t *ps_deblk,
filter_p, filter_q);
if (BIT_DEPTH_LUMA == u1_bit_depth_luma)
{
ps_codec->s_func_selector.ihevc_deblk_luma_horz_fptr(pu1_src, src_strd,
u4_bs & 3, qp_p, qp_q,
i1_beta_offset_div2,
i1_tc_offset_div2, filter_p, filter_q);
}
ps_codec->s_func_selector.ihevc_deblk_luma_horz_fptr(pu1_src, src_strd,
u4_bs & 3, qp_p, qp_q,
i1_beta_offset_div2,
i1_tc_offset_div2, filter_p, filter_q);
}
else
{
ps_codec->s_func_selector.ihevc_hbd_deblk_luma_horz_fptr((UWORD16 *)pu1_src,
src_strd,
u4_bs & 3, qp_p, qp_q,
i1_beta_offset_div2,
i1_tc_offset_div2,
filter_p, filter_q,
u1_bit_depth_luma);
src_strd,
u4_bs & 3, qp_p, qp_q,
i1_beta_offset_div2,
i1_tc_offset_div2,
filter_p, filter_q,
u1_bit_depth_luma);
}
}
@ -579,8 +579,8 @@ void ihevcd_deblk_ctb(deblk_ctxt_t *ps_deblk,
WORD32 shift = 0;
if(is_yuv444 && 6 != log2_ctb_size)
shift = (col & 1) << (log2_ctb_size - 1);
/* BS for the column - Last row is excluded and the top row is included*/
u4_bs = (pu4_vert_bs[0] >> shift) << 2;
@ -739,7 +739,7 @@ void ihevcd_deblk_ctb(deblk_ctxt_t *ps_deblk,
pu1_src += 4 * chroma_strd * pixel_size_uv;
u4_bs = u4_bs >> (2 * v_samp_factor);
row++;
} /* End of loop over rows */
}
pu1_src -= ((((src_strd * chroma_pixel_strd) / (h_samp_factor * v_samp_factor)) << log2_ctb_size) * pixel_size_uv);
if(is_yuv444)
@ -754,8 +754,8 @@ void ihevcd_deblk_ctb(deblk_ctxt_t *ps_deblk,
}
}
/* Chroma Horizontal Edge */
if(CHROMA_FMT_IDC_MONOCHROME != ps_sps->i1_chroma_format_idc && 0 == i4_is_last_ctb_y)
{

View file

@ -187,6 +187,7 @@ static void ihevcd_fill_outargs(codec_t *ps_codec,
void *pv_api_ip,
void *pv_api_op)
{
ihevcd_cxa_video_decode_ip_t *ps_hevcd_dec_ip;
ihevcd_cxa_video_decode_op_t *ps_hevcd_dec_op;
ivd_video_decode_ip_t *ps_dec_ip;

View file

@ -1799,6 +1799,7 @@ IHEVCD_ERROR_T ihevcd_fmt_conv(codec_t *ps_codec,
pu1_uv_dst_tmp = pu1_u_dst + ((cur_row + 1) / 2) * ALIGN2(ps_codec->i4_disp_strd) * ps_codec->i4_pixel_size_uv;
}
/* In case of multi threaded implementation, format conversion might be called
* before reconstruction is completed. If the frame being converted/copied
* is same as the frame being reconstructed,
@ -1830,7 +1831,7 @@ IHEVCD_ERROR_T ihevcd_fmt_conv(codec_t *ps_codec,
/*Check if the row below is completely processed before proceeding with format conversion*/
status = 1;
for( ctb_in_row = 0; ctb_in_row < ps_sps->i2_pic_wd_in_ctb ; ctb_in_row++)
for(ctb_in_row = 0; (WORD32)ctb_in_row < ps_sps->i2_pic_wd_in_ctb; ctb_in_row++)
{
pu1_buf = (ps_codec->pu1_proc_map + idx + ctb_in_row);
status &= *pu1_buf;
@ -1853,21 +1854,21 @@ IHEVCD_ERROR_T ihevcd_fmt_conv(codec_t *ps_codec,
{
if(1 == ps_codec->i4_pixel_size_y)
{
ihevcd_fmt_conv_420sp_to_420sp_ft *fmt_conv_fptr;
if(ps_codec->i4_disp_wd >= MIN_FMT_CONV_SIMD_WIDTH)
{
fmt_conv_fptr = ps_codec->s_func_selector.ihevcd_fmt_conv_420sp_to_420sp_fptr;
ihevcd_fmt_conv_420sp_to_420sp_ft *fmt_conv_fptr;
if(ps_codec->i4_disp_wd >= MIN_FMT_CONV_SIMD_WIDTH)
{
fmt_conv_fptr = ps_codec->s_func_selector.ihevcd_fmt_conv_420sp_to_420sp_fptr;
}
else
{
fmt_conv_fptr = ihevcd_fmt_conv_420sp_to_420sp;
}
fmt_conv_fptr(pu1_y_src, pu1_uv_src,
pu1_y_dst_tmp, pu1_uv_dst_tmp,
ps_codec->i4_disp_wd, num_rows,
ps_codec->i4_strd, ps_codec->i4_strd,
ps_codec->i4_disp_strd, ps_codec->i4_disp_strd);
}
else
{
fmt_conv_fptr = ihevcd_fmt_conv_420sp_to_420sp;
}
fmt_conv_fptr(pu1_y_src, pu1_uv_src,
pu1_y_dst_tmp, pu1_uv_dst_tmp,
ps_codec->i4_disp_wd, num_rows,
ps_codec->i4_strd, ps_codec->i4_strd,
ps_codec->i4_disp_strd, ps_codec->i4_disp_strd);
}
else
{
ihevcd_hbd_fmt_conv_420sp_to_420sp((UWORD16 *)pu1_y_src, (UWORD16 *)pu1_uv_src,
@ -1993,7 +1994,6 @@ IHEVCD_ERROR_T ihevcd_fmt_conv(codec_t *ps_codec,
else
{
fmt_conv_fptr = ihevcd_fmt_conv_420sp_to_420p;
}
if(0 == disable_luma_copy)
{

View file

@ -37,7 +37,6 @@
#ifndef _IHEVCD_STRUCTS_H_
#define _IHEVCD_STRUCTS_H_
typedef enum
{
INIT_DONE, HEADER_DONE, FIRST_FRAME_DONE,
@ -1884,6 +1883,21 @@ struct _codec_t
*/
IV_COLOR_FORMAT_T e_ref_chroma_fmt;
/**
* Frame skip mode
*/
IVD_FRAME_SKIP_MODE_T e_pic_skip_mode;
/**
* Display or decode order dump of output
*/
IVD_DISPLAY_FRAME_OUT_MODE_T e_pic_out_order;
/**
* Coding type of the picture that is decoded
*/
IV_PICTURE_CODING_TYPE_T e_dec_pic_type;
/**
* ChromaFormatIDC
*/
@ -1919,21 +1933,6 @@ struct _codec_t
*/
WORD32 i4_qp_bd_offset_uv;
/**
* Frame skip mode
*/
IVD_FRAME_SKIP_MODE_T e_pic_skip_mode;
/**
* Display or decode order dump of output
*/
IVD_DISPLAY_FRAME_OUT_MODE_T e_pic_out_order;
/**
* Coding type of the picture that is decoded
*/
IV_PICTURE_CODING_TYPE_T e_dec_pic_type;
/**
* Flag to signal if a frame was decoded in this call
*/
@ -2411,14 +2410,14 @@ struct _codec_t
pf_sao_chroma apf_sao_chroma[4];
/* HBD function pointers */
pf_hbd_intra_pred_luma apf_hbd_intra_pred_luma[11];
pf_hbd_intra_pred_chroma apf_hbd_intra_pred_chroma[11];
pf_hbd_itrans_recon apf_hbd_itrans_recon[9];
pf_hbd_itrans_recon_dc apf_hbd_itrans_recon_dc[2];
pf_hbd_recon apf_hbd_recon[9];
pf_hbd_sao_luma apf_hbd_sao_luma[4];
pf_hbd_sao_chroma apf_hbd_sao_chroma[4];
pf_hbd_inter_pred apf_hbd_inter_pred[22];
pf_hbd_intra_pred_luma apf_hbd_intra_pred_luma[11];
pf_hbd_intra_pred_chroma apf_hbd_intra_pred_chroma[11];
pf_hbd_itrans_recon apf_hbd_itrans_recon[9];
pf_hbd_itrans_recon_dc apf_hbd_itrans_recon_dc[2];
pf_hbd_recon apf_hbd_recon[9];
pf_hbd_sao_luma apf_hbd_sao_luma[4];
pf_hbd_sao_chroma apf_hbd_sao_chroma[4];
pf_hbd_inter_pred apf_hbd_inter_pred[22];
/** Funtion pointers for all the leaf level functions */
func_selector_t s_func_selector;

View file

@ -1013,8 +1013,8 @@ void dump_output(vid_dec_ctx_t *ps_app_ctx,
fwrite(buf, 1, s_dump_disp_frm_buf.u4_v_wd * pixel_size, ps_op_file);
buf += s_dump_disp_frm_buf.u4_v_strd * pixel_size;
}
}
}
}
if(0 != chksum_save)
{