diff options
author | Colin Cross <ccross@android.com> | 2023-01-26 18:44:25 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-01-26 18:44:25 +0000 |
commit | cfac8d308d9514792cabee60d0651ee0c6f7da91 (patch) | |
tree | efe121793edfc3b552583bdfcea2296c7d08829a | |
parent | 1bbddd6a6ce5121f7929180ae391c3a259b032a2 (diff) | |
parent | 8f2de1e5996456b484eb84f217faa331dac2644b (diff) | |
download | libhevc-cfac8d308d9514792cabee60d0651ee0c6f7da91.tar.gz |
Merge "Add riscv64 to libhevc" am: a3cac8c9d7 am: 8f2de1e599
Original change: https://android-review.googlesource.com/c/platform/external/libhevc/+/2402877
Change-Id: Ieb3c7cdca962f2c9f3cdb062b49da0a02329e9be
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | Android.bp | 15 | ||||
-rw-r--r-- | common/ivd.h | 3 | ||||
-rw-r--r-- | common/riscv64/ihevc_func_selector.h | 227 | ||||
-rw-r--r-- | common/riscv64/ihevc_platform_macros.h | 174 | ||||
-rw-r--r-- | decoder/riscv64/ihevcd_function_selector.c | 76 | ||||
-rw-r--r-- | decoder/riscv64/ihevcd_function_selector_generic.c | 162 |
6 files changed, 656 insertions, 1 deletions
@@ -401,6 +401,16 @@ cc_library_static { "common/x86/ihevc_tables_x86_intr.c", ], }, + riscv64: { + local_include_dirs: [ + "common/riscv64", + ], + + srcs: [ + "decoder/riscv64/ihevcd_function_selector.c", + "decoder/riscv64/ihevcd_function_selector_generic.c", + ], + }, }, sanitize: { @@ -786,6 +796,11 @@ cc_library_static { ], }, + riscv64: { + local_include_dirs: [ + "common/riscv64", + ], + }, }, sanitize: { integer_overflow: true, diff --git a/common/ivd.h b/common/ivd.h index a3dae2d..6e08f91 100644 --- a/common/ivd.h +++ b/common/ivd.h @@ -67,7 +67,8 @@ typedef enum ARCH_X86_SSE42, ARCH_X86_AVX2, ARCH_MIPS_GENERIC = 0x200, - ARCH_MIPS_32 + ARCH_MIPS_32, + ARCH_RISCV64_GENERIC = 0x400, }IVD_ARCH_T; /* IVD_SOC_T: SOC Enumeration */ diff --git a/common/riscv64/ihevc_func_selector.h b/common/riscv64/ihevc_func_selector.h new file mode 100644 index 0000000..20a5a66 --- /dev/null +++ b/common/riscv64/ihevc_func_selector.h @@ -0,0 +1,227 @@ +/****************************************************************************** +* +* Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at: +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +******************************************************************************/ +/** +******************************************************************************* +* @file +* ihevc_func_selector.h +* +* @brief +* For each function decide whether to use C function, or Neon intrinsics +* or Cortex A8 intrinsics or Neon assembly or cortex a8 assembly +* +* @author +* Harish +* +* @remarks +* None +* +******************************************************************************* +*/ + +#ifndef __IHEVC_FUNC_SELECTOR_H__ +#define __IHEVC_FUNC_SELECTOR_H__ + +#include "ihevc_func_types.h" + +#define INTER_PRED_LUMA_COPY C +#define INTER_PRED_LUMA_HORZ C +#define INTER_PRED_LUMA_VERT C +#define INTER_PRED_LUMA_COPY_W16OUT C +#define INTER_PRED_LUMA_HORZ_W16OUT C + +#define INTER_PRED_LUMA_VERT_W16OUT C +#define INTER_PRED_LUMA_VERT_W16INP C +#define INTER_PRED_LUMA_VERT_W16INP_W16OUT C + +#define INTER_PRED_CHROMA_COPY C +#define INTER_PRED_CHROMA_HORZ C +#define INTER_PRED_CHROMA_VERT C +#define INTER_PRED_CHROMA_COPY_W16OUT C +#define INTER_PRED_CHROMA_HORZ_W16OUT C +#define INTER_PRED_CHROMA_VERT_W16OUT C +#define INTER_PRED_CHROMA_VERT_W16INP C +#define INTER_PRED_CHROMA_VERT_W16INP_W16OUT C + +#define WEIGHTED_PRED_UNI C +#define WEIGHTED_PRED_BI C +#define WEIGHTED_PRED_BI_DEFAULT C +#define WEIGHTED_PRED_CHROMA_UNI C +#define WEIGHTED_PRED_CHROMA_BI C +#define WEIGHTED_PRED_CHROMA_BI_DEFAULT C + +#define PAD_VERT C +#define PAD_HORZ C +#define PAD_LEFT_LUMA C +#define PAD_LEFT_CHROMA C +#define PAD_RIGHT_LUMA C +#define PAD_RIGHT_CHROMA C + +#define DEBLOCKING_ASM C +#define DEBLK_LUMA_HORZ C +#define DEBLK_LUMA_VERT C +#define DEBLK_CHROMA_HORZ C +#define DEBLK_CHROMA_VERT C + +#define SAO_BAND_OFFSET_LUMA C +#define SAO_BAND_OFFSET_CHROMA C +#define SAO_EDGE_OFFSET_CLASS0_LUMA C +#define SAO_EDGE_OFFSET_CLASS1_LUMA C +#define SAO_EDGE_OFFSET_CLASS2_LUMA C +#define SAO_EDGE_OFFSET_CLASS3_LUMA C +#define SAO_EDGE_OFFSET_CLASS0_CHROMA C +#define SAO_EDGE_OFFSET_CLASS1_CHROMA C +#define SAO_EDGE_OFFSET_CLASS2_CHROMA C +#define SAO_EDGE_OFFSET_CLASS3_CHROMA C + +#define INTRA_PRED_LUMA_REF_SUBSTITUTION C +#define INTRA_PRED_REF_FILTERING C +#define INTRA_PRED_LUMA_PLANAR C +#define INTRA_PRED_LUMA_DC C +#define INTRA_PRED_LUMA_HORZ C +#define INTRA_PRED_LUMA_VER C +#define INTRA_PRED_LUMA_MODE_2 C +#define INTRA_PRED_LUMA_MODE_18_34 C +#define INTRA_PRED_LUMA_MODE_3_T0_9 C +#define INTRA_PRED_LUMA_MODE_11_T0_17 C +#define INTRA_PRED_LUMA_MODE_19_T0_25 C +#define INTRA_PRED_LUMA_MODE_27_T0_33 C + +#define INTRA_PRED_CHROMA_PLANAR C +#define INTRA_PRED_CHROMA_DC C +#define INTRA_PRED_CHROMA_HOR C +#define INTRA_PRED_CHROMA_VER C +#define INTRA_PRED_CHROMA_MODE_2 C +#define INTRA_PRED_CHROMA_18_34 C +#define INTRA_PRED_CHROMA_3_T0_9 C +#define INTRA_PRED_CHROMA_11_T0_17 C +#define INTRA_PRED_CHROMA_19_T0_25 C +#define INTRA_PRED_CHROMA_27_T0_33 C +#define INTRA_PRED_CHROMA_REF_SUBSTITUTION C + +/* Forward transform functions */ +/* Luma */ +#define RESI_TRANS_QUANT_4X4_TTYPE1 C +#define RESI_TRANS_QUANT_4X4 C +#define RESI_TRANS_QUANT_8X8 C +#define RESI_TRANS_QUANT_16X16 C +#define RESI_TRANS_QUANT_32X32 C + +#define RESI_QUANT_4X4_TTYPE1 C +#define RESI_QUANT_4X4 C +#define RESI_QUANT_8X8 C +#define RESI_QUANT_16X16 C +#define RESI_QUANT_32X32 C + +#define RESI_TRANS_4X4_TTYPE1 C +#define RESI_TRANS_4X4 C +#define RESI_TRANS_8X8 C +#define RESI_TRANS_16X16 C +#define RESI_TRANS_32X32 C + +#define RESI_4X4_TTYPE1 C +#define RESI_4X4 C +#define RESI_8X8 C +#define RESI_16X16 C +#define RESI_32X32 C + +#define TRANS_4X4_TTYPE1 C +#define TRANS_4X4 C +#define TRANS_8X8 C +#define TRANS_16X16 C +#define TRANS_32X32 C + +#define QUANT_4X4_TTYPE1 C +#define QUANT_4X4 C +#define QUANT_8X8 C +#define QUANT_16X16 C +#define QUANT_32X32 C + +/* Chroma interleaved*/ +#define CHROMA_RESI_TRANS_QUANT_4X4 C +#define CHROMA_RESI_TRANS_QUANT_8X8 C +#define CHROMA_RESI_TRANS_QUANT_16X16 C + +#define CHROMA_RESI_QUANT_4X4 C +#define CHROMA_RESI_QUANT_8X8 C +#define CHROMA_RESI_QUANT_16X16 C + +#define CHROMA_RESI_TRANS_4X4 C +#define CHROMA_RESI_TRANS_8X8 C +#define CHROMA_RESI_TRANS_16X16 C + +#define CHROMA_RESI_4X4 C +#define CHROMA_RESI_8X8 C +#define CHROMA_RESI_16X16 C + +/* Inverse transform functions */ +/* Luma */ +#define IQUANT_ITRANS_RECON_4X4_TTYPE1 C +#define IQUANT_ITRANS_RECON_4X4 C +#define IQUANT_ITRANS_RECON_8X8 C +#define IQUANT_ITRANS_RECON_16X16 C +#define IQUANT_ITRANS_RECON_32X32 C + +#define IQUANT_RECON_4X4_TTYPE1 C +#define IQUANT_RECON_4X4 C +#define IQUANT_RECON_8X8 C +#define IQUANT_RECON_16X16 C +#define IQUANT_RECON_32X32 C + +#define ITRANS_RECON_4X4_TTYPE1 C +#define ITRANS_RECON_4X4 C +#define ITRANS_RECON_8X8 C +#define ITRANS_RECON_16X16 C +#define ITRANS_RECON_32X32 C + +#define RECON_4X4_TTYPE1 C +#define RECON_4X4 C +#define RECON_8X8 C +#define RECON_16X16 C +#define RECON_32X32 C + +#define ITRANS_4X4_TTYPE1 C +#define ITRANS_4X4 C +#define ITRANS_8X8 C +#define ITRANS_16X16 C +#define ITRANS_32X32 C + +/* Chroma interleaved */ +#define CHROMA_IQUANT_ITRANS_RECON_4X4 C +#define CHROMA_IQUANT_ITRANS_RECON_8X8 C +#define CHROMA_IQUANT_ITRANS_RECON_16X16 C + +#define CHROMA_IQUANT_RECON_4X4 C +#define CHROMA_IQUANT_RECON_8X8 C +#define CHROMA_IQUANT_RECON_16X16 C + +#define CHROMA_ITRANS_RECON_4X4 C +#define CHROMA_ITRANS_RECON_8X8 C +#define CHROMA_ITRANS_RECON_16X16 C + +#define CHROMA_RECON_4X4 C +#define CHROMA_RECON_8X8 C +#define CHROMA_RECON_16X16 C + +#define IHEVC_MEMCPY C +#define IHEVC_MEMSET C +#define IHEVC_MEMSET_16BIT C +#define IHEVC_MEMCPY_MUL_8 C +#define IHEVC_MEMSET_MUL_8 C +#define IHEVC_MEMSET_16BIT_MUL_8 C + +#endif /* __IHEVC_FUNC_SELECTOR_H__ */ diff --git a/common/riscv64/ihevc_platform_macros.h b/common/riscv64/ihevc_platform_macros.h new file mode 100644 index 0000000..41d20ca --- /dev/null +++ b/common/riscv64/ihevc_platform_macros.h @@ -0,0 +1,174 @@ +/****************************************************************************** +* +* Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at: +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +******************************************************************************/ +/** +******************************************************************************* +* @file +* ihevc_platform_macros.h +* +* @brief +* Platform specific Macro definitions used in the codec +* +* @author +* Ittiam +* +* @remarks +* None +* +******************************************************************************* +*/ +#ifndef _IHEVC_PLATFORM_MACROS_H_ +#define _IHEVC_PLATFORM_MACROS_H_ + +#define CLIP_U8(x) CLIP3((x), 0, 255) +#define CLIP_S8(x) CLIP3((x), -128, 127) + +#define CLIP_U10(x) CLIP3((x), 0, 1023); +#define CLIP_S10(x) CLIP3((x), -512, 511); + +#define CLIP_U12(x) CLIP3((x), 0, 4095); +#define CLIP_S12(x) CLIP3((x), -2048, 2047); + +#define CLIP_U14(x) CLIP3((x), 0, 16383); +#define CLIP_S14(x) CLIP3((x), -8192, 8191); + +#define CLIP_U16(x) CLIP3((x), 0, 65535) +#define CLIP_S16(x) CLIP3((x), -32768, 32767) + +#define ITT_BIG_ENDIAN(x) ((x & 0x000000ff) << 24) | \ + ((x & 0x0000ff00) << 8) | \ + ((x & 0x00ff0000) >> 8) | \ + ((UWORD32)x >> 24); + +#define SHL(x,y) (((y) < 32) ? ((x) << (y)) : 0) +#define SHR(x,y) (((y) < 32) ? ((x) >> (y)) : 0) + +#define SHR_NEG(val,shift) ((shift>0)?(val>>shift):(val<<(-shift))) +#define SHL_NEG(val,shift) ((shift<0)?(val>>(-shift)):(val<<shift)) + +#define INLINE inline + +#define POPCNT_U32(x) __builtin_popcount(x) + +static INLINE UWORD32 CLZ(UWORD32 u4_word) +{ + if(u4_word) + return (__builtin_clz(u4_word)); + else + return 31; +} + +static INLINE UWORD32 CLZNZ(UWORD32 u4_word) +{ + return (__builtin_clz(u4_word)); +} + +static INLINE UWORD32 CTZ(UWORD32 u4_word) +{ + if(0 == u4_word) + return 31; + else + { + unsigned int index; + index = __builtin_ctz(u4_word); + return (UWORD32)index; + } +} + +#define DATA_SYNC() __sync_synchronize() + +/** +****************************************************************************** + * @brief returns postion of msb bit for 32bit input +****************************************************************************** + */ +#define GET_POS_MSB_32(r,word) \ +{ \ + if(word) \ + { \ + r = 31 - __builtin_clz(word); \ + } \ + else \ + { \ + r = -1; \ + } \ +} + +/** +****************************************************************************** + * @brief returns postion of msb bit for 64bit input +****************************************************************************** + */ +#define GET_POS_MSB_64(r,word) \ +{ \ + if(word) \ + { \ + r = 63 - __builtin_clzll(word); \ + } \ + else \ + { \ + r = -1; \ + } \ +} + + +/** +****************************************************************************** + * @brief returns max number of bits required to represent input word (max 32bits) +****************************************************************************** + */ +#define GETRANGE(r,word) \ +{ \ + if(word) \ + { \ + r = 32 - __builtin_clz(word); \ + } \ + else \ + { \ + r = 1; \ + } \ +} + + +/** +***************************************************************************************************** +* @brief returns max number of bits required to represent input unsigned long long word (max 64bits) +***************************************************************************************************** +*/ +#define GETRANGE64(r,llword) \ +{ \ + if(llword) \ + { \ + r = 64 - __builtin_clzll(llword); \ + } \ + else \ + { \ + r = 1; \ + } \ +} + + + +#define NOP(nop_cnt) {UWORD32 nop_i; for (nop_i = 0; nop_i < nop_cnt; nop_i++) asm("nop");} + + + +#define MEM_ALIGN8 __attribute__ ((aligned (8))) +#define MEM_ALIGN16 __attribute__ ((aligned (16))) +#define MEM_ALIGN32 __attribute__ ((aligned (32))) + +#endif /* _IHEVC_PLATFORM_MACROS_H_ */ diff --git a/decoder/riscv64/ihevcd_function_selector.c b/decoder/riscv64/ihevcd_function_selector.c new file mode 100644 index 0000000..a2a13ed --- /dev/null +++ b/decoder/riscv64/ihevcd_function_selector.c @@ -0,0 +1,76 @@ +/****************************************************************************** +* +* Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at: +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +******************************************************************************/ +/** +******************************************************************************* +* @file +* ihevcd_function_selector.c +* +* @brief +* Contains functions to initialize function pointers used in hevc +* +* @author +* Naveen +* +* @par List of Functions: +* @remarks +* None +* +******************************************************************************* +*/ +/*****************************************************************************/ +/* File Includes */ +/*****************************************************************************/ +#include <stdio.h> +#include <stddef.h> +#include <stdlib.h> +#include <string.h> + +#include "ihevc_typedefs.h" +#include "iv.h" +#include "ivd.h" +#include "ihevc_defs.h" +#include "ihevc_debug.h" +#include "ihevc_structs.h" +#include "ihevc_macros.h" +#include "ihevc_platform_macros.h" +#include "ihevc_cabac_tables.h" +#include "ihevc_disp_mgr.h" +#include "ihevc_buf_mgr.h" +#include "ihevc_dpb_mgr.h" +#include "ihevc_error.h" + +#include "ihevcd_defs.h" +#include "ihevcd_function_selector.h" +#include "ihevcd_structs.h" + +void ihevcd_init_function_ptr(void *pv_codec) +{ + codec_t *ps_codec = (codec_t *)pv_codec; + switch(ps_codec->e_processor_arch) + { + default: + case ARCH_RISCV64_GENERIC: + ihevcd_init_function_ptr_generic(pv_codec); + } +} + +void ihevcd_init_arch(void *pv_codec) +{ + codec_t *ps_codec = (codec_t *)pv_codec; + ps_codec->e_processor_arch = ARCH_RISCV64_GENERIC; +} diff --git a/decoder/riscv64/ihevcd_function_selector_generic.c b/decoder/riscv64/ihevcd_function_selector_generic.c new file mode 100644 index 0000000..f8b53ad --- /dev/null +++ b/decoder/riscv64/ihevcd_function_selector_generic.c @@ -0,0 +1,162 @@ +/****************************************************************************** +* +* Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at: +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +******************************************************************************/ +/** +******************************************************************************* +* @file +* ihevcd_function_selector.c +* +* @brief +* Contains functions to initialize function pointers used in hevc +* +* @author +* Naveen +* +* @par List of Functions: +* @remarks +* None +* +******************************************************************************* +*/ +/*****************************************************************************/ +/* File Includes */ +/*****************************************************************************/ +#include <stdio.h> +#include <stddef.h> +#include <stdlib.h> +#include <string.h> + +#include "ihevc_typedefs.h" +#include "iv.h" +#include "ivd.h" +#include "ihevc_defs.h" +#include "ihevc_debug.h" +#include "ihevc_structs.h" +#include "ihevc_macros.h" +#include "ihevc_platform_macros.h" +#include "ihevc_cabac_tables.h" +#include "ihevc_disp_mgr.h" +#include "ihevc_buf_mgr.h" +#include "ihevc_dpb_mgr.h" +#include "ihevc_error.h" + +#include "ihevcd_defs.h" +#include "ihevcd_function_selector.h" +#include "ihevcd_structs.h" + +void ihevcd_init_function_ptr_generic(void *pv_codec) +{ + codec_t *ps_codec = (codec_t *)pv_codec; + + ps_codec->s_func_selector.ihevc_deblk_chroma_horz_fptr = &ihevc_deblk_chroma_horz; + ps_codec->s_func_selector.ihevc_deblk_chroma_vert_fptr = &ihevc_deblk_chroma_vert; + ps_codec->s_func_selector.ihevc_deblk_luma_vert_fptr = &ihevc_deblk_luma_vert; + ps_codec->s_func_selector.ihevc_deblk_luma_horz_fptr = &ihevc_deblk_luma_horz; + ps_codec->s_func_selector.ihevc_inter_pred_chroma_copy_fptr = &ihevc_inter_pred_chroma_copy; + ps_codec->s_func_selector.ihevc_inter_pred_chroma_copy_w16out_fptr = &ihevc_inter_pred_chroma_copy_w16out; + ps_codec->s_func_selector.ihevc_inter_pred_chroma_horz_fptr = &ihevc_inter_pred_chroma_horz; + ps_codec->s_func_selector.ihevc_inter_pred_chroma_horz_w16out_fptr = &ihevc_inter_pred_chroma_horz_w16out; + ps_codec->s_func_selector.ihevc_inter_pred_chroma_vert_fptr = &ihevc_inter_pred_chroma_vert; + ps_codec->s_func_selector.ihevc_inter_pred_chroma_vert_w16inp_fptr = &ihevc_inter_pred_chroma_vert_w16inp; + ps_codec->s_func_selector.ihevc_inter_pred_chroma_vert_w16inp_w16out_fptr = &ihevc_inter_pred_chroma_vert_w16inp_w16out; + ps_codec->s_func_selector.ihevc_inter_pred_chroma_vert_w16out_fptr = &ihevc_inter_pred_chroma_vert_w16out; + ps_codec->s_func_selector.ihevc_inter_pred_luma_horz_fptr = &ihevc_inter_pred_luma_horz; + ps_codec->s_func_selector.ihevc_inter_pred_luma_vert_fptr = &ihevc_inter_pred_luma_vert; + ps_codec->s_func_selector.ihevc_inter_pred_luma_vert_w16out_fptr = &ihevc_inter_pred_luma_vert_w16out; + ps_codec->s_func_selector.ihevc_inter_pred_luma_vert_w16inp_fptr = &ihevc_inter_pred_luma_vert_w16inp; + ps_codec->s_func_selector.ihevc_inter_pred_luma_copy_fptr = &ihevc_inter_pred_luma_copy; + ps_codec->s_func_selector.ihevc_inter_pred_luma_copy_w16out_fptr = &ihevc_inter_pred_luma_copy_w16out; + ps_codec->s_func_selector.ihevc_inter_pred_luma_horz_w16out_fptr = &ihevc_inter_pred_luma_horz_w16out; + ps_codec->s_func_selector.ihevc_inter_pred_luma_vert_w16inp_w16out_fptr = &ihevc_inter_pred_luma_vert_w16inp_w16out; + ps_codec->s_func_selector.ihevc_intra_pred_chroma_ref_substitution_fptr = &ihevc_intra_pred_chroma_ref_substitution; + ps_codec->s_func_selector.ihevc_intra_pred_luma_ref_substitution_fptr = &ihevc_intra_pred_luma_ref_substitution; + ps_codec->s_func_selector.ihevc_intra_pred_luma_ref_subst_all_avlble_fptr = &ihevc_intra_pred_luma_ref_subst_all_avlble; + ps_codec->s_func_selector.ihevc_intra_pred_ref_filtering_fptr = &ihevc_intra_pred_ref_filtering; + ps_codec->s_func_selector.ihevc_intra_pred_chroma_dc_fptr = &ihevc_intra_pred_chroma_dc; + ps_codec->s_func_selector.ihevc_intra_pred_chroma_horz_fptr = &ihevc_intra_pred_chroma_horz; + ps_codec->s_func_selector.ihevc_intra_pred_chroma_mode2_fptr = &ihevc_intra_pred_chroma_mode2; + ps_codec->s_func_selector.ihevc_intra_pred_chroma_mode_18_34_fptr = &ihevc_intra_pred_chroma_mode_18_34; + ps_codec->s_func_selector.ihevc_intra_pred_chroma_mode_27_to_33_fptr = &ihevc_intra_pred_chroma_mode_27_to_33; + ps_codec->s_func_selector.ihevc_intra_pred_chroma_mode_3_to_9_fptr = &ihevc_intra_pred_chroma_mode_3_to_9; + ps_codec->s_func_selector.ihevc_intra_pred_chroma_planar_fptr = &ihevc_intra_pred_chroma_planar; + ps_codec->s_func_selector.ihevc_intra_pred_chroma_ver_fptr = &ihevc_intra_pred_chroma_ver; + ps_codec->s_func_selector.ihevc_intra_pred_chroma_mode_11_to_17_fptr = &ihevc_intra_pred_chroma_mode_11_to_17; + ps_codec->s_func_selector.ihevc_intra_pred_chroma_mode_19_to_25_fptr = &ihevc_intra_pred_chroma_mode_19_to_25; + ps_codec->s_func_selector.ihevc_intra_pred_luma_mode_11_to_17_fptr = &ihevc_intra_pred_luma_mode_11_to_17; + ps_codec->s_func_selector.ihevc_intra_pred_luma_mode_19_to_25_fptr = &ihevc_intra_pred_luma_mode_19_to_25; + ps_codec->s_func_selector.ihevc_intra_pred_luma_dc_fptr = &ihevc_intra_pred_luma_dc; + ps_codec->s_func_selector.ihevc_intra_pred_luma_horz_fptr = &ihevc_intra_pred_luma_horz; + ps_codec->s_func_selector.ihevc_intra_pred_luma_mode2_fptr = &ihevc_intra_pred_luma_mode2; + ps_codec->s_func_selector.ihevc_intra_pred_luma_mode_18_34_fptr = &ihevc_intra_pred_luma_mode_18_34; + ps_codec->s_func_selector.ihevc_intra_pred_luma_mode_27_to_33_fptr = &ihevc_intra_pred_luma_mode_27_to_33; + ps_codec->s_func_selector.ihevc_intra_pred_luma_mode_3_to_9_fptr = &ihevc_intra_pred_luma_mode_3_to_9; + ps_codec->s_func_selector.ihevc_intra_pred_luma_planar_fptr = &ihevc_intra_pred_luma_planar; + ps_codec->s_func_selector.ihevc_intra_pred_luma_ver_fptr = &ihevc_intra_pred_luma_ver; + ps_codec->s_func_selector.ihevc_itrans_4x4_ttype1_fptr = &ihevc_itrans_4x4_ttype1; + ps_codec->s_func_selector.ihevc_itrans_4x4_fptr = &ihevc_itrans_4x4; + ps_codec->s_func_selector.ihevc_itrans_8x8_fptr = &ihevc_itrans_8x8; + ps_codec->s_func_selector.ihevc_itrans_16x16_fptr = &ihevc_itrans_16x16; + ps_codec->s_func_selector.ihevc_itrans_32x32_fptr = &ihevc_itrans_32x32; + ps_codec->s_func_selector.ihevc_itrans_recon_4x4_ttype1_fptr = &ihevc_itrans_recon_4x4_ttype1; + ps_codec->s_func_selector.ihevc_itrans_recon_4x4_fptr = &ihevc_itrans_recon_4x4; + ps_codec->s_func_selector.ihevc_itrans_recon_8x8_fptr = &ihevc_itrans_recon_8x8; + ps_codec->s_func_selector.ihevc_itrans_recon_16x16_fptr = &ihevc_itrans_recon_16x16; + ps_codec->s_func_selector.ihevc_itrans_recon_32x32_fptr = &ihevc_itrans_recon_32x32; + ps_codec->s_func_selector.ihevc_chroma_itrans_recon_4x4_fptr = &ihevc_chroma_itrans_recon_4x4; + ps_codec->s_func_selector.ihevc_chroma_itrans_recon_8x8_fptr = &ihevc_chroma_itrans_recon_8x8; + ps_codec->s_func_selector.ihevc_chroma_itrans_recon_16x16_fptr = &ihevc_chroma_itrans_recon_16x16; + ps_codec->s_func_selector.ihevc_recon_4x4_ttype1_fptr = &ihevc_recon_4x4_ttype1; + ps_codec->s_func_selector.ihevc_recon_4x4_fptr = &ihevc_recon_4x4; + ps_codec->s_func_selector.ihevc_recon_8x8_fptr = &ihevc_recon_8x8; + ps_codec->s_func_selector.ihevc_recon_16x16_fptr = &ihevc_recon_16x16; + ps_codec->s_func_selector.ihevc_recon_32x32_fptr = &ihevc_recon_32x32; + ps_codec->s_func_selector.ihevc_chroma_recon_4x4_fptr = &ihevc_chroma_recon_4x4; + ps_codec->s_func_selector.ihevc_chroma_recon_8x8_fptr = &ihevc_chroma_recon_8x8; + ps_codec->s_func_selector.ihevc_chroma_recon_16x16_fptr = &ihevc_chroma_recon_16x16; + ps_codec->s_func_selector.ihevc_memcpy_mul_8_fptr = &ihevc_memcpy_mul_8; + ps_codec->s_func_selector.ihevc_memcpy_fptr = &ihevc_memcpy; + ps_codec->s_func_selector.ihevc_memset_mul_8_fptr = &ihevc_memset_mul_8; + ps_codec->s_func_selector.ihevc_memset_fptr = &ihevc_memset; + ps_codec->s_func_selector.ihevc_memset_16bit_mul_8_fptr = &ihevc_memset_16bit_mul_8; + ps_codec->s_func_selector.ihevc_memset_16bit_fptr = &ihevc_memset_16bit; + ps_codec->s_func_selector.ihevc_pad_left_luma_fptr = &ihevc_pad_left_luma; + ps_codec->s_func_selector.ihevc_pad_left_chroma_fptr = &ihevc_pad_left_chroma; + ps_codec->s_func_selector.ihevc_pad_right_luma_fptr = &ihevc_pad_right_luma; + ps_codec->s_func_selector.ihevc_pad_right_chroma_fptr = &ihevc_pad_right_chroma; + ps_codec->s_func_selector.ihevc_weighted_pred_bi_fptr = &ihevc_weighted_pred_bi; + ps_codec->s_func_selector.ihevc_weighted_pred_bi_default_fptr = &ihevc_weighted_pred_bi_default; + ps_codec->s_func_selector.ihevc_weighted_pred_uni_fptr = &ihevc_weighted_pred_uni; + ps_codec->s_func_selector.ihevc_weighted_pred_chroma_bi_fptr = &ihevc_weighted_pred_chroma_bi; + ps_codec->s_func_selector.ihevc_weighted_pred_chroma_bi_default_fptr = &ihevc_weighted_pred_chroma_bi_default; + ps_codec->s_func_selector.ihevc_weighted_pred_chroma_uni_fptr = &ihevc_weighted_pred_chroma_uni; + ps_codec->s_func_selector.ihevc_sao_band_offset_luma_fptr = &ihevc_sao_band_offset_luma; + ps_codec->s_func_selector.ihevc_sao_band_offset_chroma_fptr = &ihevc_sao_band_offset_chroma; + ps_codec->s_func_selector.ihevc_sao_edge_offset_class0_fptr = &ihevc_sao_edge_offset_class0; + ps_codec->s_func_selector.ihevc_sao_edge_offset_class0_chroma_fptr = &ihevc_sao_edge_offset_class0_chroma; + ps_codec->s_func_selector.ihevc_sao_edge_offset_class1_fptr = &ihevc_sao_edge_offset_class1; + ps_codec->s_func_selector.ihevc_sao_edge_offset_class1_chroma_fptr = &ihevc_sao_edge_offset_class1_chroma; + ps_codec->s_func_selector.ihevc_sao_edge_offset_class2_fptr = &ihevc_sao_edge_offset_class2; + ps_codec->s_func_selector.ihevc_sao_edge_offset_class2_chroma_fptr = &ihevc_sao_edge_offset_class2_chroma; + ps_codec->s_func_selector.ihevc_sao_edge_offset_class3_fptr = &ihevc_sao_edge_offset_class3; + ps_codec->s_func_selector.ihevc_sao_edge_offset_class3_chroma_fptr = &ihevc_sao_edge_offset_class3_chroma; + ps_codec->s_func_selector.ihevcd_fmt_conv_420sp_to_rgba8888_fptr = &ihevcd_fmt_conv_420sp_to_rgba8888; + ps_codec->s_func_selector.ihevcd_fmt_conv_420sp_to_rgb565_fptr = &ihevcd_fmt_conv_420sp_to_rgb565; + ps_codec->s_func_selector.ihevcd_fmt_conv_420sp_to_420sp_fptr = &ihevcd_fmt_conv_420sp_to_420sp; + ps_codec->s_func_selector.ihevcd_fmt_conv_420sp_to_420p_fptr = &ihevcd_fmt_conv_420sp_to_420p; + ps_codec->s_func_selector.ihevcd_itrans_recon_dc_luma_fptr = &ihevcd_itrans_recon_dc_luma; + ps_codec->s_func_selector.ihevcd_itrans_recon_dc_chroma_fptr = &ihevcd_itrans_recon_dc_chroma; +} |