aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarish Mahendrakar <hmahendrakar@google.com>2023-10-23 18:03:06 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-10-23 18:03:06 +0000
commitded35ac0acea91eba36e8ad52c6ff7399dda89e8 (patch)
tree6c8a739f423a7be83e823ddc50eb24409b0e90d3
parentdf9458bc328fe8c232660ce2d1e1d880f0a9ad53 (diff)
parent0150e6a5568d377e99f61e8f734c24caac7986db (diff)
downloadlibhevc-ded35ac0acea91eba36e8ad52c6ff7399dda89e8.tar.gz
Upgrade libhevc to v1.3.0 am: 0150e6a556
Original change: https://android-review.googlesource.com/c/platform/external/libhevc/+/2799053 Change-Id: I8622730020cec92d2b8ee969170a2bb7a1007cf1 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--Android.bp433
-rw-r--r--METADATA6
-rw-r--r--decoder/ihevcd_api.c1
-rw-r--r--encoder/hme_interface.h3
-rw-r--r--encoder/hme_refine.c17
-rw-r--r--encoder/ihevce_enc_loop_inter_mode_sifter.c23
-rw-r--r--encoder/ihevce_rc_interface.c14
7 files changed, 268 insertions, 229 deletions
diff --git a/Android.bp b/Android.bp
index 7e8a6e7..f969183 100644
--- a/Android.bp
+++ b/Android.bp
@@ -59,64 +59,64 @@ cc_library_static {
],
srcs: [
- "common/ihevc_quant_tables.c",
- "common/ihevc_inter_pred_filters.c",
- "common/ihevc_weighted_pred.c",
- "common/ihevc_padding.c",
- "common/ihevc_deblk_edge_filter.c",
- "common/ihevc_deblk_tables.c",
+ "common/ihevc_buf_mgr.c",
"common/ihevc_cabac_tables.c",
- "common/ihevc_common_tables.c",
- "common/ihevc_intra_pred_filters.c",
"common/ihevc_chroma_intra_pred_filters.c",
- "common/ihevc_mem_fns.c",
- "common/ihevc_sao.c",
- "common/ihevc_trans_tables.c",
- "common/ihevc_recon.c",
- "common/ihevc_itrans.c",
- "common/ihevc_itrans_recon.c",
- "common/ihevc_iquant_recon.c",
- "common/ihevc_iquant_itrans_recon.c",
- "common/ihevc_itrans_recon_32x32.c",
- "common/ihevc_itrans_recon_16x16.c",
- "common/ihevc_itrans_recon_8x8.c",
- "common/ihevc_chroma_itrans_recon.c",
- "common/ihevc_chroma_iquant_recon.c",
"common/ihevc_chroma_iquant_itrans_recon.c",
- "common/ihevc_chroma_recon.c",
+ "common/ihevc_chroma_iquant_recon.c",
+ "common/ihevc_chroma_itrans_recon.c",
"common/ihevc_chroma_itrans_recon_16x16.c",
"common/ihevc_chroma_itrans_recon_8x8.c",
- "common/ihevc_buf_mgr.c",
+ "common/ihevc_chroma_recon.c",
+ "common/ihevc_common_tables.c",
+ "common/ihevc_deblk_edge_filter.c",
+ "common/ihevc_deblk_tables.c",
"common/ihevc_disp_mgr.c",
"common/ihevc_dpb_mgr.c",
+ "common/ihevc_inter_pred_filters.c",
+ "common/ihevc_intra_pred_filters.c",
+ "common/ihevc_iquant_itrans_recon.c",
+ "common/ihevc_iquant_recon.c",
+ "common/ihevc_itrans.c",
+ "common/ihevc_itrans_recon.c",
+ "common/ihevc_itrans_recon_16x16.c",
+ "common/ihevc_itrans_recon_32x32.c",
+ "common/ihevc_itrans_recon_8x8.c",
+ "common/ihevc_mem_fns.c",
+ "common/ihevc_padding.c",
+ "common/ihevc_quant_tables.c",
+ "common/ihevc_recon.c",
+ "common/ihevc_sao.c",
+ "common/ihevc_trans_tables.c",
+ "common/ihevc_weighted_pred.c",
"common/ithread.c",
- "decoder/ihevcd_version.c",
"decoder/ihevcd_api.c",
+ "decoder/ihevcd_bitstream.c",
+ "decoder/ihevcd_boundary_strength.c",
+ "decoder/ihevcd_cabac.c",
+ "decoder/ihevcd_common_tables.c",
+ "decoder/ihevcd_deblk.c",
"decoder/ihevcd_decode.c",
+ "decoder/ihevcd_fmt_conv.c",
+ "decoder/ihevcd_get_mv.c",
+ "decoder/ihevcd_ilf_padding.c",
+ "decoder/ihevcd_inter_pred.c",
+ "decoder/ihevcd_intra_pred_mode_prediction.c",
+ "decoder/ihevcd_iquant_itrans_recon_ctb.c",
+ "decoder/ihevcd_itrans_recon_dc.c",
+ "decoder/ihevcd_job_queue.c",
+ "decoder/ihevcd_mv_merge.c",
+ "decoder/ihevcd_mv_pred.c",
"decoder/ihevcd_nal.c",
- "decoder/ihevcd_bitstream.c",
"decoder/ihevcd_parse_headers.c",
- "decoder/ihevcd_parse_slice_header.c",
- "decoder/ihevcd_parse_slice.c",
"decoder/ihevcd_parse_residual.c",
- "decoder/ihevcd_cabac.c",
- "decoder/ihevcd_intra_pred_mode_prediction.c",
+ "decoder/ihevcd_parse_slice.c",
+ "decoder/ihevcd_parse_slice_header.c",
"decoder/ihevcd_process_slice.c",
- "decoder/ihevcd_utils.c",
- "decoder/ihevcd_job_queue.c",
"decoder/ihevcd_ref_list.c",
- "decoder/ihevcd_get_mv.c",
- "decoder/ihevcd_mv_pred.c",
- "decoder/ihevcd_mv_merge.c",
- "decoder/ihevcd_iquant_itrans_recon_ctb.c",
- "decoder/ihevcd_itrans_recon_dc.c",
- "decoder/ihevcd_common_tables.c",
- "decoder/ihevcd_boundary_strength.c",
- "decoder/ihevcd_deblk.c",
- "decoder/ihevcd_inter_pred.c",
"decoder/ihevcd_sao.c",
- "decoder/ihevcd_ilf_padding.c",
- "decoder/ihevcd_fmt_conv.c",
+ "decoder/ihevcd_utils.c",
+ "decoder/ihevcd_version.c",
],
arch: {
@@ -130,90 +130,90 @@ cc_library_static {
"-DDEFAULT_ARCH=D_ARCH_ARMV8_GENERIC",
],
local_include_dirs: [
- "decoder/arm",
"common/arm",
- "decoder/arm64",
"common/arm64",
+ "decoder/arm",
+ "decoder/arm64",
],
srcs: [
- "decoder/arm/ihevcd_function_selector.c",
- "decoder/arm/ihevcd_function_selector_noneon.c",
- "decoder/arm64/ihevcd_function_selector_av8.c",
"common/arm/ihevc_intra_pred_filters_neon_intr.c",
"common/arm/ihevc_weighted_pred_neon_intr.c",
- "common/arm64/ihevc_mem_fns.s",
- "common/arm64/ihevc_itrans_recon_32x32.s",
- "common/arm64/ihevc_weighted_pred_bi_default.s",
- "common/arm64/ihevc_weighted_pred_bi.s",
- "common/arm64/ihevc_weighted_pred_uni.s",
+ "common/arm64/ihevc_deblk_chroma_horz.s",
+ "common/arm64/ihevc_deblk_chroma_vert.s",
"common/arm64/ihevc_deblk_luma_horz.s",
"common/arm64/ihevc_deblk_luma_vert.s",
- "common/arm64/ihevc_deblk_chroma_vert.s",
- "common/arm64/ihevc_deblk_chroma_horz.s",
- "common/arm64/ihevc_sao_band_offset_luma.s",
- "common/arm64/ihevc_sao_band_offset_chroma.s",
- "common/arm64/ihevc_sao_edge_offset_class0.s",
- "common/arm64/ihevc_sao_edge_offset_class0_chroma.s",
- "common/arm64/ihevc_sao_edge_offset_class1.s",
- "common/arm64/ihevc_sao_edge_offset_class1_chroma.s",
- "common/arm64/ihevc_sao_edge_offset_class2.s",
- "common/arm64/ihevc_sao_edge_offset_class2_chroma.s",
- "common/arm64/ihevc_sao_edge_offset_class3.s",
- "common/arm64/ihevc_sao_edge_offset_class3_chroma.s",
- "common/arm64/ihevc_inter_pred_luma_horz_w16out.s",
- "common/arm64/ihevc_inter_pred_filters_luma_horz.s",
- "common/arm64/ihevc_inter_pred_filters_luma_vert.s",
+ "common/arm64/ihevc_inter_pred_chroma_copy.s",
+ "common/arm64/ihevc_inter_pred_chroma_copy_w16out.s",
"common/arm64/ihevc_inter_pred_chroma_horz.s",
"common/arm64/ihevc_inter_pred_chroma_horz_w16out.s",
"common/arm64/ihevc_inter_pred_chroma_vert.s",
- "common/arm64/ihevc_inter_pred_chroma_vert_w16out.s",
"common/arm64/ihevc_inter_pred_chroma_vert_w16inp.s",
"common/arm64/ihevc_inter_pred_chroma_vert_w16inp_w16out.s",
+ "common/arm64/ihevc_inter_pred_chroma_vert_w16out.s",
+ "common/arm64/ihevc_inter_pred_filters_luma_horz.s",
+ "common/arm64/ihevc_inter_pred_filters_luma_vert.s",
"common/arm64/ihevc_inter_pred_filters_luma_vert_w16inp.s",
"common/arm64/ihevc_inter_pred_filters_luma_vert_w16out.s",
- "common/arm64/ihevc_inter_pred_luma_vert_w16inp_w16out.s",
- "common/arm64/ihevc_inter_pred_luma_copy_w16out.s",
"common/arm64/ihevc_inter_pred_luma_copy.s",
- "common/arm64/ihevc_inter_pred_chroma_copy.s",
- "common/arm64/ihevc_inter_pred_chroma_copy_w16out.s",
- "common/arm64/ihevc_itrans_recon_4x4_ttype1.s",
- "common/arm64/ihevc_itrans_recon_4x4.s",
- "common/arm64/ihevc_itrans_recon_8x8.s",
- "common/arm64/ihevc_itrans_recon_16x16.s",
- "common/arm64/ihevc_intra_pred_chroma_planar.s",
+ "common/arm64/ihevc_inter_pred_luma_copy_w16out.s",
+ "common/arm64/ihevc_inter_pred_luma_horz_w16out.s",
+ "common/arm64/ihevc_inter_pred_luma_vert_w16inp_w16out.s",
"common/arm64/ihevc_intra_pred_chroma_dc.s",
"common/arm64/ihevc_intra_pred_chroma_horz.s",
- "common/arm64/ihevc_intra_pred_chroma_ver.s",
"common/arm64/ihevc_intra_pred_chroma_mode2.s",
"common/arm64/ihevc_intra_pred_chroma_mode_18_34.s",
+ "common/arm64/ihevc_intra_pred_chroma_mode_27_to_33.s",
+ "common/arm64/ihevc_intra_pred_chroma_mode_3_to_9.s",
+ "common/arm64/ihevc_intra_pred_chroma_planar.s",
+ "common/arm64/ihevc_intra_pred_chroma_ver.s",
"common/arm64/ihevc_intra_pred_filters_chroma_mode_11_to_17.s",
"common/arm64/ihevc_intra_pred_filters_chroma_mode_19_to_25.s",
- "common/arm64/ihevc_intra_pred_chroma_mode_3_to_9.s",
- "common/arm64/ihevc_intra_pred_chroma_mode_27_to_33.s",
- "common/arm64/ihevc_intra_pred_luma_planar.s",
+ "common/arm64/ihevc_intra_pred_filters_luma_mode_11_to_17.s",
+ "common/arm64/ihevc_intra_pred_filters_luma_mode_19_to_25.s",
+ "common/arm64/ihevc_intra_pred_luma_dc.s",
"common/arm64/ihevc_intra_pred_luma_horz.s",
"common/arm64/ihevc_intra_pred_luma_mode2.s",
- "common/arm64/ihevc_intra_pred_luma_mode_27_to_33.s",
"common/arm64/ihevc_intra_pred_luma_mode_18_34.s",
- "common/arm64/ihevc_intra_pred_luma_vert.s",
- "common/arm64/ihevc_intra_pred_luma_dc.s",
- "common/arm64/ihevc_intra_pred_filters_luma_mode_11_to_17.s",
- "common/arm64/ihevc_intra_pred_filters_luma_mode_19_to_25.s",
+ "common/arm64/ihevc_intra_pred_luma_mode_27_to_33.s",
"common/arm64/ihevc_intra_pred_luma_mode_3_to_9.s",
+ "common/arm64/ihevc_intra_pred_luma_planar.s",
+ "common/arm64/ihevc_intra_pred_luma_vert.s",
+ "common/arm64/ihevc_itrans_recon_16x16.s",
+ "common/arm64/ihevc_itrans_recon_32x32.s",
+ "common/arm64/ihevc_itrans_recon_4x4.s",
+ "common/arm64/ihevc_itrans_recon_4x4_ttype1.s",
+ "common/arm64/ihevc_itrans_recon_8x8.s",
+ "common/arm64/ihevc_mem_fns.s",
"common/arm64/ihevc_padding.s",
- "decoder/arm64/ihevcd_itrans_recon_dc_luma.s",
- "decoder/arm64/ihevcd_itrans_recon_dc_chroma.s",
+ "common/arm64/ihevc_sao_band_offset_chroma.s",
+ "common/arm64/ihevc_sao_band_offset_luma.s",
+ "common/arm64/ihevc_sao_edge_offset_class0.s",
+ "common/arm64/ihevc_sao_edge_offset_class0_chroma.s",
+ "common/arm64/ihevc_sao_edge_offset_class1.s",
+ "common/arm64/ihevc_sao_edge_offset_class1_chroma.s",
+ "common/arm64/ihevc_sao_edge_offset_class2.s",
+ "common/arm64/ihevc_sao_edge_offset_class2_chroma.s",
+ "common/arm64/ihevc_sao_edge_offset_class3.s",
+ "common/arm64/ihevc_sao_edge_offset_class3_chroma.s",
+ "common/arm64/ihevc_weighted_pred_bi.s",
+ "common/arm64/ihevc_weighted_pred_bi_default.s",
+ "common/arm64/ihevc_weighted_pred_uni.s",
+ "decoder/arm/ihevcd_function_selector.c",
+ "decoder/arm/ihevcd_function_selector_noneon.c",
"decoder/arm64/ihevcd_fmt_conv_420sp_to_420p.s",
"decoder/arm64/ihevcd_fmt_conv_420sp_to_420sp.s",
"decoder/arm64/ihevcd_fmt_conv_420sp_to_rgba8888.s",
+ "decoder/arm64/ihevcd_function_selector_av8.c",
+ "decoder/arm64/ihevcd_itrans_recon_dc_chroma.s",
+ "decoder/arm64/ihevcd_itrans_recon_dc_luma.s",
],
},
arm: {
local_include_dirs: [
- "decoder/arm",
"common/arm",
+ "decoder/arm",
],
srcs: [
@@ -236,74 +236,74 @@ cc_library_static {
neon: {
srcs: [
- "decoder/arm/ihevcd_function_selector_a9q.c",
- "common/arm/ihevc_intra_ref_substitution_a9q.c",
- "common/arm/ihevc_intra_pred_filters_neon_intr.c",
- "common/arm/ihevc_weighted_pred_neon_intr.c",
- "common/arm/ihevc_mem_fns.s",
- "common/arm/ihevc_itrans_recon_32x32.s",
- "common/arm/ihevc_weighted_pred_bi_default.s",
- "common/arm/ihevc_weighted_pred_bi.s",
- "common/arm/ihevc_weighted_pred_uni.s",
+ "common/arm/ihevc_deblk_chroma_horz.s",
+ "common/arm/ihevc_deblk_chroma_vert.s",
"common/arm/ihevc_deblk_luma_horz.s",
"common/arm/ihevc_deblk_luma_vert.s",
- "common/arm/ihevc_deblk_chroma_vert.s",
- "common/arm/ihevc_deblk_chroma_horz.s",
- "common/arm/ihevc_sao_band_offset_luma.s",
- "common/arm/ihevc_sao_band_offset_chroma.s",
- "common/arm/ihevc_sao_edge_offset_class0.s",
- "common/arm/ihevc_sao_edge_offset_class0_chroma.s",
- "common/arm/ihevc_sao_edge_offset_class1.s",
- "common/arm/ihevc_sao_edge_offset_class1_chroma.s",
- "common/arm/ihevc_sao_edge_offset_class2.s",
- "common/arm/ihevc_sao_edge_offset_class2_chroma.s",
- "common/arm/ihevc_sao_edge_offset_class3.s",
- "common/arm/ihevc_sao_edge_offset_class3_chroma.s",
- "common/arm/ihevc_inter_pred_luma_horz_w16out.s",
- "common/arm/ihevc_inter_pred_filters_luma_horz.s",
- "common/arm/ihevc_inter_pred_filters_luma_vert.s",
+ "common/arm/ihevc_inter_pred_chroma_copy.s",
+ "common/arm/ihevc_inter_pred_chroma_copy_w16out.s",
"common/arm/ihevc_inter_pred_chroma_horz.s",
"common/arm/ihevc_inter_pred_chroma_horz_w16out.s",
"common/arm/ihevc_inter_pred_chroma_vert.s",
- "common/arm/ihevc_inter_pred_chroma_vert_w16out.s",
"common/arm/ihevc_inter_pred_chroma_vert_w16inp.s",
"common/arm/ihevc_inter_pred_chroma_vert_w16inp_w16out.s",
+ "common/arm/ihevc_inter_pred_chroma_vert_w16out.s",
+ "common/arm/ihevc_inter_pred_filters_luma_horz.s",
+ "common/arm/ihevc_inter_pred_filters_luma_vert.s",
"common/arm/ihevc_inter_pred_filters_luma_vert_w16inp.s",
- "common/arm/ihevc_inter_pred_luma_vert_w16inp_w16out.s",
- "common/arm/ihevc_inter_pred_luma_copy_w16out.s",
"common/arm/ihevc_inter_pred_luma_copy.s",
- "common/arm/ihevc_inter_pred_chroma_copy.s",
- "common/arm/ihevc_inter_pred_chroma_copy_w16out.s",
- "common/arm/ihevc_itrans_recon_4x4_ttype1.s",
- "common/arm/ihevc_itrans_recon_4x4.s",
- "common/arm/ihevc_itrans_recon_8x8.s",
- "common/arm/ihevc_itrans_recon_16x16.s",
- "common/arm/ihevc_intra_pred_chroma_planar.s",
+ "common/arm/ihevc_inter_pred_luma_copy_w16out.s",
+ "common/arm/ihevc_inter_pred_luma_horz_w16out.s",
+ "common/arm/ihevc_inter_pred_luma_vert_w16inp_w16out.s",
"common/arm/ihevc_intra_pred_chroma_dc.s",
"common/arm/ihevc_intra_pred_chroma_horz.s",
- "common/arm/ihevc_intra_pred_chroma_ver.s",
"common/arm/ihevc_intra_pred_chroma_mode2.s",
"common/arm/ihevc_intra_pred_chroma_mode_18_34.s",
+ "common/arm/ihevc_intra_pred_chroma_mode_27_to_33.s",
+ "common/arm/ihevc_intra_pred_chroma_mode_3_to_9.s",
+ "common/arm/ihevc_intra_pred_chroma_planar.s",
+ "common/arm/ihevc_intra_pred_chroma_ver.s",
"common/arm/ihevc_intra_pred_filters_chroma_mode_11_to_17.s",
"common/arm/ihevc_intra_pred_filters_chroma_mode_19_to_25.s",
- "common/arm/ihevc_intra_pred_chroma_mode_3_to_9.s",
- "common/arm/ihevc_intra_pred_chroma_mode_27_to_33.s",
- "common/arm/ihevc_intra_pred_luma_planar.s",
+ "common/arm/ihevc_intra_pred_filters_luma_mode_11_to_17.s",
+ "common/arm/ihevc_intra_pred_filters_luma_mode_19_to_25.s",
+ "common/arm/ihevc_intra_pred_filters_neon_intr.c",
+ "common/arm/ihevc_intra_pred_luma_dc.s",
"common/arm/ihevc_intra_pred_luma_horz.s",
"common/arm/ihevc_intra_pred_luma_mode2.s",
- "common/arm/ihevc_intra_pred_luma_mode_27_to_33.s",
"common/arm/ihevc_intra_pred_luma_mode_18_34.s",
- "common/arm/ihevc_intra_pred_luma_vert.s",
- "common/arm/ihevc_intra_pred_luma_dc.s",
- "common/arm/ihevc_intra_pred_filters_luma_mode_11_to_17.s",
- "common/arm/ihevc_intra_pred_filters_luma_mode_19_to_25.s",
+ "common/arm/ihevc_intra_pred_luma_mode_27_to_33.s",
"common/arm/ihevc_intra_pred_luma_mode_3_to_9.s",
+ "common/arm/ihevc_intra_pred_luma_planar.s",
+ "common/arm/ihevc_intra_pred_luma_vert.s",
+ "common/arm/ihevc_intra_ref_substitution_a9q.c",
+ "common/arm/ihevc_itrans_recon_16x16.s",
+ "common/arm/ihevc_itrans_recon_32x32.s",
+ "common/arm/ihevc_itrans_recon_4x4.s",
+ "common/arm/ihevc_itrans_recon_4x4_ttype1.s",
+ "common/arm/ihevc_itrans_recon_8x8.s",
+ "common/arm/ihevc_mem_fns.s",
"common/arm/ihevc_padding.s",
- "decoder/arm/ihevcd_itrans_recon_dc_luma.s",
- "decoder/arm/ihevcd_itrans_recon_dc_chroma.s",
+ "common/arm/ihevc_sao_band_offset_chroma.s",
+ "common/arm/ihevc_sao_band_offset_luma.s",
+ "common/arm/ihevc_sao_edge_offset_class0.s",
+ "common/arm/ihevc_sao_edge_offset_class0_chroma.s",
+ "common/arm/ihevc_sao_edge_offset_class1.s",
+ "common/arm/ihevc_sao_edge_offset_class1_chroma.s",
+ "common/arm/ihevc_sao_edge_offset_class2.s",
+ "common/arm/ihevc_sao_edge_offset_class2_chroma.s",
+ "common/arm/ihevc_sao_edge_offset_class3.s",
+ "common/arm/ihevc_sao_edge_offset_class3_chroma.s",
+ "common/arm/ihevc_weighted_pred_bi.s",
+ "common/arm/ihevc_weighted_pred_bi_default.s",
+ "common/arm/ihevc_weighted_pred_neon_intr.c",
+ "common/arm/ihevc_weighted_pred_uni.s",
"decoder/arm/ihevcd_fmt_conv_420sp_to_420p.s",
"decoder/arm/ihevcd_fmt_conv_420sp_to_420sp.s",
"decoder/arm/ihevcd_fmt_conv_420sp_to_rgba8888.s",
+ "decoder/arm/ihevcd_function_selector_a9q.c",
+ "decoder/arm/ihevcd_itrans_recon_dc_chroma.s",
+ "decoder/arm/ihevcd_itrans_recon_dc_luma.s",
],
cflags: [
"-UDISABLE_NEON",
@@ -323,37 +323,37 @@ cc_library_static {
],
local_include_dirs: [
- "decoder/x86",
"common/x86",
+ "decoder/x86",
],
srcs: [
- "decoder/x86/ihevcd_function_selector.c",
- "decoder/x86/ihevcd_function_selector_generic.c",
- "decoder/x86/ihevcd_function_selector_ssse3.c",
- "decoder/x86/ihevcd_function_selector_sse42.c",
+ "common/x86/ihevc_16x16_itrans_recon_sse42_intr.c",
+ "common/x86/ihevc_32x32_itrans_recon_sse42_intr.c",
+ "common/x86/ihevc_chroma_intra_pred_filters_sse42_intr.c",
+ "common/x86/ihevc_chroma_intra_pred_filters_ssse3_intr.c",
+ "common/x86/ihevc_deblk_ssse3_intr.c",
+ "common/x86/ihevc_inter_pred_filters_sse42_intr.c",
"common/x86/ihevc_inter_pred_filters_ssse3_intr.c",
- "common/x86/ihevc_weighted_pred_ssse3_intr.c",
+ "common/x86/ihevc_intra_pred_filters_sse42_intr.c",
"common/x86/ihevc_intra_pred_filters_ssse3_intr.c",
- "common/x86/ihevc_chroma_intra_pred_filters_ssse3_intr.c",
- "common/x86/ihevc_itrans_recon_ssse3_intr.c",
"common/x86/ihevc_itrans_recon_16x16_ssse3_intr.c",
"common/x86/ihevc_itrans_recon_32x32_ssse3_intr.c",
- "common/x86/ihevc_sao_ssse3_intr.c",
- "common/x86/ihevc_deblk_ssse3_intr.c",
- "common/x86/ihevc_padding_ssse3_intr.c",
+ "common/x86/ihevc_itrans_recon_sse42_intr.c",
+ "common/x86/ihevc_itrans_recon_ssse3_intr.c",
"common/x86/ihevc_mem_fns_ssse3_intr.c",
- "decoder/x86/ihevcd_fmt_conv_ssse3_intr.c",
- "decoder/x86/ihevcd_it_rec_dc_ssse3_intr.c",
- "common/x86/ihevc_inter_pred_filters_sse42_intr.c",
+ "common/x86/ihevc_padding_ssse3_intr.c",
+ "common/x86/ihevc_sao_ssse3_intr.c",
+ "common/x86/ihevc_tables_x86_intr.c",
"common/x86/ihevc_weighted_pred_sse42_intr.c",
- "common/x86/ihevc_intra_pred_filters_sse42_intr.c",
- "common/x86/ihevc_chroma_intra_pred_filters_sse42_intr.c",
- "common/x86/ihevc_itrans_recon_sse42_intr.c",
- "common/x86/ihevc_16x16_itrans_recon_sse42_intr.c",
- "common/x86/ihevc_32x32_itrans_recon_sse42_intr.c",
+ "common/x86/ihevc_weighted_pred_ssse3_intr.c",
+ "decoder/x86/ihevcd_fmt_conv_ssse3_intr.c",
+ "decoder/x86/ihevcd_function_selector.c",
+ "decoder/x86/ihevcd_function_selector_generic.c",
+ "decoder/x86/ihevcd_function_selector_sse42.c",
+ "decoder/x86/ihevcd_function_selector_ssse3.c",
"decoder/x86/ihevcd_it_rec_dc_sse42_intr.c",
- "common/x86/ihevc_tables_x86_intr.c",
+ "decoder/x86/ihevcd_it_rec_dc_ssse3_intr.c",
],
},
@@ -367,37 +367,37 @@ cc_library_static {
],
local_include_dirs: [
- "decoder/x86",
"common/x86",
+ "decoder/x86",
],
srcs: [
- "decoder/x86/ihevcd_function_selector.c",
- "decoder/x86/ihevcd_function_selector_generic.c",
- "decoder/x86/ihevcd_function_selector_ssse3.c",
- "decoder/x86/ihevcd_function_selector_sse42.c",
+ "common/x86/ihevc_16x16_itrans_recon_sse42_intr.c",
+ "common/x86/ihevc_32x32_itrans_recon_sse42_intr.c",
+ "common/x86/ihevc_chroma_intra_pred_filters_sse42_intr.c",
+ "common/x86/ihevc_chroma_intra_pred_filters_ssse3_intr.c",
+ "common/x86/ihevc_deblk_ssse3_intr.c",
+ "common/x86/ihevc_inter_pred_filters_sse42_intr.c",
"common/x86/ihevc_inter_pred_filters_ssse3_intr.c",
- "common/x86/ihevc_weighted_pred_ssse3_intr.c",
+ "common/x86/ihevc_intra_pred_filters_sse42_intr.c",
"common/x86/ihevc_intra_pred_filters_ssse3_intr.c",
- "common/x86/ihevc_chroma_intra_pred_filters_ssse3_intr.c",
- "common/x86/ihevc_itrans_recon_ssse3_intr.c",
"common/x86/ihevc_itrans_recon_16x16_ssse3_intr.c",
"common/x86/ihevc_itrans_recon_32x32_ssse3_intr.c",
- "common/x86/ihevc_sao_ssse3_intr.c",
- "common/x86/ihevc_deblk_ssse3_intr.c",
- "common/x86/ihevc_padding_ssse3_intr.c",
+ "common/x86/ihevc_itrans_recon_sse42_intr.c",
+ "common/x86/ihevc_itrans_recon_ssse3_intr.c",
"common/x86/ihevc_mem_fns_ssse3_intr.c",
- "decoder/x86/ihevcd_fmt_conv_ssse3_intr.c",
- "decoder/x86/ihevcd_it_rec_dc_ssse3_intr.c",
- "common/x86/ihevc_inter_pred_filters_sse42_intr.c",
+ "common/x86/ihevc_padding_ssse3_intr.c",
+ "common/x86/ihevc_sao_ssse3_intr.c",
+ "common/x86/ihevc_tables_x86_intr.c",
"common/x86/ihevc_weighted_pred_sse42_intr.c",
- "common/x86/ihevc_intra_pred_filters_sse42_intr.c",
- "common/x86/ihevc_chroma_intra_pred_filters_sse42_intr.c",
- "common/x86/ihevc_itrans_recon_sse42_intr.c",
- "common/x86/ihevc_16x16_itrans_recon_sse42_intr.c",
- "common/x86/ihevc_32x32_itrans_recon_sse42_intr.c",
+ "common/x86/ihevc_weighted_pred_ssse3_intr.c",
+ "decoder/x86/ihevcd_fmt_conv_ssse3_intr.c",
+ "decoder/x86/ihevcd_function_selector.c",
+ "decoder/x86/ihevcd_function_selector_generic.c",
+ "decoder/x86/ihevcd_function_selector_sse42.c",
+ "decoder/x86/ihevcd_function_selector_ssse3.c",
"decoder/x86/ihevcd_it_rec_dc_sse42_intr.c",
- "common/x86/ihevc_tables_x86_intr.c",
+ "decoder/x86/ihevcd_it_rec_dc_ssse3_intr.c",
],
},
riscv64: {
@@ -417,7 +417,7 @@ cc_library_static {
misc_undefined: ["bounds"],
// Enable CFI if this becomes a shared library.
cfi: true,
- config: {
+ config: {
cfi_assembly_support: true,
},
blocklist: "libhevc_blocklist.txt",
@@ -462,7 +462,6 @@ cc_library_static {
"-Wall",
"-Wno-unused-variable",
"-Wno-unused-parameter",
- "-Wno-switch",
],
export_include_dirs: [
@@ -590,31 +589,18 @@ cc_library_static {
arm64: {
local_include_dirs: [
- "encoder/arm",
"common/arm",
"common/arm64",
+ "encoder/arm",
],
srcs: [
- "encoder/arm/ihevce_coarse_layer_sad_neon.c",
- "encoder/arm/ihevce_common_utils_neon.c",
- "encoder/arm/ihevce_copy_neon.c",
- "encoder/arm/ihevce_had_compute_neon.c",
- "encoder/arm/ihevce_hme_utils_neon.c",
- "encoder/arm/ihevce_itrans_recon_neon.c",
- "encoder/arm/ihevce_me_neon.c",
- "encoder/arm/ihevce_sad_compute_neon.c",
- "encoder/arm/ihevce_scale_by_2_neon.c",
- "encoder/arm/ihevce_scan_coeffs_neon.c",
- "encoder/arm/ihevce_ssd_and_sad_calculator_neon.c",
- "encoder/arm/ihevce_ssd_calculator_neon.c",
- "encoder/arm/ihevce_subpel_neon.c",
+ "common/arm/ihevc_intra_pred_filters_neon_intr.c",
+ "common/arm/ihevc_intra_ref_substitution_a9q.c",
+ "common/arm/ihevc_quant_iquant_ssd_neon_intr.c",
"common/arm/ihevc_resi_trans_neon.c",
"common/arm/ihevc_resi_trans_neon_32x32.c",
- "common/arm/ihevc_quant_iquant_ssd_neon_intr.c",
- "common/arm/ihevc_intra_pred_filters_neon_intr.c",
"common/arm/ihevc_weighted_pred_neon_intr.c",
- "common/arm/ihevc_intra_ref_substitution_a9q.c",
"common/arm64/ihevc_deblk_chroma_horz.s",
"common/arm64/ihevc_deblk_chroma_vert.s",
"common/arm64/ihevc_deblk_luma_horz.s",
@@ -675,6 +661,19 @@ cc_library_static {
"common/arm64/ihevc_weighted_pred_bi.s",
"common/arm64/ihevc_weighted_pred_bi_default.s",
"common/arm64/ihevc_weighted_pred_uni.s",
+ "encoder/arm/ihevce_coarse_layer_sad_neon.c",
+ "encoder/arm/ihevce_common_utils_neon.c",
+ "encoder/arm/ihevce_copy_neon.c",
+ "encoder/arm/ihevce_had_compute_neon.c",
+ "encoder/arm/ihevce_hme_utils_neon.c",
+ "encoder/arm/ihevce_itrans_recon_neon.c",
+ "encoder/arm/ihevce_me_neon.c",
+ "encoder/arm/ihevce_sad_compute_neon.c",
+ "encoder/arm/ihevce_scale_by_2_neon.c",
+ "encoder/arm/ihevce_scan_coeffs_neon.c",
+ "encoder/arm/ihevce_ssd_and_sad_calculator_neon.c",
+ "encoder/arm/ihevce_ssd_calculator_neon.c",
+ "encoder/arm/ihevce_subpel_neon.c",
],
cflags: [
@@ -686,33 +685,14 @@ cc_library_static {
arm: {
local_include_dirs: [
- "encoder/arm",
"common/arm",
+ "encoder/arm",
],
instruction_set: "arm",
neon: {
srcs: [
- "encoder/arm/ihevce_coarse_layer_sad_neon.c",
- "encoder/arm/ihevce_common_utils_neon.c",
- "encoder/arm/ihevce_copy_neon.c",
- "encoder/arm/ihevce_had_compute_neon.c",
- "encoder/arm/ihevce_hme_utils_neon.c",
- "encoder/arm/ihevce_itrans_recon_neon.c",
- "encoder/arm/ihevce_me_neon.c",
- "encoder/arm/ihevce_sad_compute_neon.c",
- "encoder/arm/ihevce_scale_by_2_neon.c",
- "encoder/arm/ihevce_scan_coeffs_neon.c",
- "encoder/arm/ihevce_ssd_and_sad_calculator_neon.c",
- "encoder/arm/ihevce_ssd_calculator_neon.c",
- "encoder/arm/ihevce_subpel_neon.c",
- "common/arm/ihevc_resi_trans_neon.c",
- "common/arm/ihevc_resi_trans_neon_32x32.c",
- "common/arm/ihevc_quant_iquant_ssd_neon_intr.c",
- "common/arm/ihevc_intra_pred_filters_neon_intr.c",
- "common/arm/ihevc_weighted_pred_neon_intr.c",
- "common/arm/ihevc_intra_ref_substitution_a9q.c",
"common/arm/ihevc_deblk_chroma_horz.s",
"common/arm/ihevc_deblk_chroma_vert.s",
"common/arm/ihevc_deblk_luma_horz.s",
@@ -744,6 +724,7 @@ cc_library_static {
"common/arm/ihevc_intra_pred_filters_chroma_mode_19_to_25.s",
"common/arm/ihevc_intra_pred_filters_luma_mode_11_to_17.s",
"common/arm/ihevc_intra_pred_filters_luma_mode_19_to_25.s",
+ "common/arm/ihevc_intra_pred_filters_neon_intr.c",
"common/arm/ihevc_intra_pred_luma_dc.s",
"common/arm/ihevc_intra_pred_luma_horz.s",
"common/arm/ihevc_intra_pred_luma_mode2.s",
@@ -752,15 +733,19 @@ cc_library_static {
"common/arm/ihevc_intra_pred_luma_mode_3_to_9.s",
"common/arm/ihevc_intra_pred_luma_planar.s",
"common/arm/ihevc_intra_pred_luma_vert.s",
+ "common/arm/ihevc_intra_ref_substitution_a9q.c",
"common/arm/ihevc_itrans_recon_16x16.s",
"common/arm/ihevc_itrans_recon_32x32.s",
"common/arm/ihevc_itrans_recon_4x4.s",
"common/arm/ihevc_itrans_recon_4x4_ttype1.s",
"common/arm/ihevc_itrans_recon_8x8.s",
- "common/arm/ihevc_resi_trans.s",
- "common/arm/ihevc_resi_trans_32x32_a9q.s",
"common/arm/ihevc_mem_fns.s",
"common/arm/ihevc_padding.s",
+ "common/arm/ihevc_quant_iquant_ssd_neon_intr.c",
+ "common/arm/ihevc_resi_trans.s",
+ "common/arm/ihevc_resi_trans_32x32_a9q.s",
+ "common/arm/ihevc_resi_trans_neon.c",
+ "common/arm/ihevc_resi_trans_neon_32x32.c",
"common/arm/ihevc_sao_band_offset_chroma.s",
"common/arm/ihevc_sao_band_offset_luma.s",
"common/arm/ihevc_sao_edge_offset_class0.s",
@@ -771,9 +756,23 @@ cc_library_static {
"common/arm/ihevc_sao_edge_offset_class2_chroma.s",
"common/arm/ihevc_sao_edge_offset_class3.s",
"common/arm/ihevc_sao_edge_offset_class3_chroma.s",
- "common/arm/ihevc_weighted_pred_bi_default.s",
"common/arm/ihevc_weighted_pred_bi.s",
+ "common/arm/ihevc_weighted_pred_bi_default.s",
+ "common/arm/ihevc_weighted_pred_neon_intr.c",
"common/arm/ihevc_weighted_pred_uni.s",
+ "encoder/arm/ihevce_coarse_layer_sad_neon.c",
+ "encoder/arm/ihevce_common_utils_neon.c",
+ "encoder/arm/ihevce_copy_neon.c",
+ "encoder/arm/ihevce_had_compute_neon.c",
+ "encoder/arm/ihevce_hme_utils_neon.c",
+ "encoder/arm/ihevce_itrans_recon_neon.c",
+ "encoder/arm/ihevce_me_neon.c",
+ "encoder/arm/ihevce_sad_compute_neon.c",
+ "encoder/arm/ihevce_scale_by_2_neon.c",
+ "encoder/arm/ihevce_scan_coeffs_neon.c",
+ "encoder/arm/ihevce_ssd_and_sad_calculator_neon.c",
+ "encoder/arm/ihevce_ssd_calculator_neon.c",
+ "encoder/arm/ihevce_subpel_neon.c",
],
cflags: [
@@ -806,7 +805,7 @@ cc_library_static {
misc_undefined: ["bounds"],
// Enable CFI if this becomes a shared library.
cfi: true,
- config: {
+ config: {
cfi_assembly_support: true,
},
blocklist: "libhevc_blocklist.txt",
diff --git a/METADATA b/METADATA
index 97a0771..2617cad 100644
--- a/METADATA
+++ b/METADATA
@@ -9,11 +9,11 @@ third_party {
type: GIT
value: "https://github.com/ittiam-systems/libhevc.git"
}
- version: "v1.2.0"
+ version: "v1.3.0"
license_type: NOTICE
last_upgrade_date {
year: 2023
- month: 8
- day: 8
+ month: 10
+ day: 23
}
}
diff --git a/decoder/ihevcd_api.c b/decoder/ihevcd_api.c
index e37d44b..29c14ad 100644
--- a/decoder/ihevcd_api.c
+++ b/decoder/ihevcd_api.c
@@ -2467,6 +2467,7 @@ WORD32 ihevcd_set_flush_mode(iv_obj_t *ps_codec_obj,
ivd_ctl_flush_op_t *ps_ctl_op = (ivd_ctl_flush_op_t *)pv_api_op;
UNUSED(pv_api_ip);
ps_codec = (codec_t *)(ps_codec_obj->pv_codec_handle);
+ ihevcd_join_threads(ps_codec);
/* Signal flush frame control call */
ps_codec->i4_flush_mode = 1;
diff --git a/encoder/hme_interface.h b/encoder/hme_interface.h
index 33c98fa..1481d3c 100644
--- a/encoder/hme_interface.h
+++ b/encoder/hme_interface.h
@@ -158,8 +158,7 @@ typedef enum
ME_MEDIUM_SPEED,
ME_HIGH_SPEED,
ME_XTREME_SPEED,
- ME_XTREME_SPEED_25,
- ME_USER_DEFINED
+ ME_XTREME_SPEED_25
} ME_QUALITY_PRESETS_T;
/*****************************************************************************/
diff --git a/encoder/hme_refine.c b/encoder/hme_refine.c
index 2932bd1..7a2e980 100644
--- a/encoder/hme_refine.c
+++ b/encoder/hme_refine.c
@@ -5129,7 +5129,7 @@ void hme_populate_cu_tree(
#if ENABLE_CU_TREE_CULLING
{
- cur_ctb_cu_tree_t *ps_32x32_root;
+ cur_ctb_cu_tree_t *ps_32x32_root = NULL;
switch(e_parent_blk_pos)
{
@@ -5157,6 +5157,11 @@ void hme_populate_cu_tree(
break;
}
+ default:
+ {
+ DBG_PRINTF("Invalid block position %d\n", e_parent_blk_pos);
+ break;
+ }
}
if(ps_32x32_root->is_node_valid)
@@ -5249,6 +5254,11 @@ void hme_populate_cu_tree(
break;
}
+ default:
+ {
+ DBG_PRINTF("Invalid block position %d\n", e_grandparent_blk_pos);
+ break;
+ }
}
switch(e_parent_blk_pos)
@@ -5277,6 +5287,11 @@ void hme_populate_cu_tree(
break;
}
+ default:
+ {
+ DBG_PRINTF("Invalid block position %d\n", e_parent_blk_pos);
+ break;
+ }
}
ps_32x32_blk = &ps_ctb_cluster_info->ps_32x32_blk[e_grandparent_blk_pos];
diff --git a/encoder/ihevce_enc_loop_inter_mode_sifter.c b/encoder/ihevce_enc_loop_inter_mode_sifter.c
index 6a05cda..46fefcf 100644
--- a/encoder/ihevce_enc_loop_inter_mode_sifter.c
+++ b/encoder/ihevce_enc_loop_inter_mode_sifter.c
@@ -426,8 +426,8 @@ static WORD8 ihevce_merge_cand_pred_buffer_preparation(
WORD32 i4_part_wd_pu2;
WORD32 i4_part_ht_pu2;
WORD32 i4_buf_offset;
- UWORD8 *pu1_pred_src;
- UWORD8 *pu1_pred_dst;
+ UWORD8 *pu1_pred_src = NULL;
+ UWORD8 *pu1_pred_dst = NULL;
WORD8 i1_retval = pau1_final_pred_buf_id[MERGE_DERIVED][0];
WORD32 i4_stride = i4_pred_stride * u1_num_bytes_per_pel;
@@ -557,6 +557,11 @@ static WORD8 ihevce_merge_cand_pred_buffer_preparation(
break;
}
+ default:
+ {
+ DBG_PRINTF("Invalid partition type %d\n", u1_part_type);
+ break;
+ }
}
pf_copy_2d(
@@ -591,7 +596,7 @@ static WORD8 ihevce_mixed_mode_cand_type1_pred_buffer_preparation(
WORD32 i4_part_ht;
WORD32 i4_part_wd_pu2;
WORD32 i4_part_ht_pu2;
- UWORD8 *pu1_pred_src;
+ UWORD8 *pu1_pred_src = NULL;
UWORD8 *pu1_pred_dst = NULL;
WORD8 i1_retval = pau1_final_pred_buf_id[ME_OR_SKIP_DERIVED][0];
@@ -669,6 +674,11 @@ static WORD8 ihevce_mixed_mode_cand_type1_pred_buffer_preparation(
break;
}
+ default:
+ {
+ DBG_PRINTF("Invalid partition type %d\n", u1_part_type);
+ break;
+ }
}
ps_cand->pu1_pred_data = (UWORD8 *)ppv_pred_buf_list[i1_retval];
@@ -910,7 +920,7 @@ static WORD8 ihevce_mixed_mode_cand_type0_pred_buffer_preparation(
WORD32 i4_part_wd_pu2;
WORD32 i4_part_ht_pu2;
WORD32 i4_buf_offset;
- UWORD8 *pu1_pred_src;
+ UWORD8 *pu1_pred_src = NULL;
UWORD8 *pu1_pred_dst = NULL;
WORD8 i1_retval = pau1_final_pred_buf_id[ME_OR_SKIP_DERIVED][0];
@@ -981,6 +991,11 @@ static WORD8 ihevce_mixed_mode_cand_type0_pred_buffer_preparation(
break;
}
+ default:
+ {
+ DBG_PRINTF("Invalid partition type %d\n", u1_part_type);
+ break;
+ }
}
ps_cand->pu1_pred_data = (UWORD8 *)ppv_pred_buf_list[i1_retval];
diff --git a/encoder/ihevce_rc_interface.c b/encoder/ihevce_rc_interface.c
index d17dffc..a0a7101 100644
--- a/encoder/ihevce_rc_interface.c
+++ b/encoder/ihevce_rc_interface.c
@@ -1785,7 +1785,7 @@ WORD32 ihevce_get_L0_est_satd_based_scd_qp(
WORD32 ihevce_rc_pre_enc_qp_query(
void *pv_rc_ctxt, rc_lap_out_params_t *ps_rc_lap_out, WORD32 i4_update_delay)
{
- WORD32 scene_type, i4_is_scd = 0, i4_frame_qp, slice_type;
+ WORD32 scene_type, i4_is_scd = 0, i4_frame_qp, slice_type = ISLICE;
rc_context_t *ps_rc_ctxt = (rc_context_t *)pv_rc_ctxt;
rc_type_e e_rc_type = ps_rc_ctxt->e_rate_control_type;
IV_PICTURE_CODING_TYPE_T pic_type = (IV_PICTURE_CODING_TYPE_T)ps_rc_lap_out->i4_rc_pic_type;
@@ -1855,6 +1855,11 @@ WORD32 ihevce_rc_pre_enc_qp_query(
slice_type = BSLICE;
break;
}
+ default:
+ {
+ DBG_PRINTF("Invalid picture type %d\n", pic_type);
+ break;
+ }
}
i4_frame_qp = ihevce_get_cur_frame_qp(
@@ -2086,7 +2091,7 @@ WORD32 ihevce_rc_get_pic_quant(
WORD32 i4_frame_qp, i4_frame_qp_q6, i4_hevc_frame_qp = -1, i4_deltaQP = 0;
WORD32 i4_max_frame_bits = (1 << 30);
rc_type_e e_rc_type = ps_rc_ctxt->e_rate_control_type;
- WORD32 slice_type, index, i4_num_frames_in_cur_gop, i4_cur_est_texture_bits;
+ WORD32 slice_type = ISLICE, index, i4_num_frames_in_cur_gop, i4_cur_est_texture_bits;
WORD32 temporal_layer_id = ps_rc_lap_out->i4_rc_temporal_lyr_id;
IV_PICTURE_CODING_TYPE_T pic_type = (IV_PICTURE_CODING_TYPE_T)ps_rc_lap_out->i4_rc_pic_type;
picture_type_e rc_pic_type = ihevce_rc_conv_pic_type(
@@ -2140,6 +2145,11 @@ WORD32 ihevce_rc_get_pic_quant(
slice_type = BSLICE;
break;
}
+ default:
+ {
+ DBG_PRINTF("Invalid picture type %d\n", pic_type);
+ break;
+ }
}
i4_frame_qp = ihevce_get_cur_frame_qp(