diff options
author | Mao Han <han_mao@linux.alibaba.com> | 2022-12-06 00:51:49 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2022-12-06 00:51:49 +0000 |
commit | 22d3e0bd89cd31bb8fe075e8d96fde360c09db52 (patch) | |
tree | 73dbb868e635b0ecbe5198a93827fcaae8e11023 | |
parent | 63bb6d16273c2d62e67b8024438a3249af6228b1 (diff) | |
parent | 3f09b52eba851c54e440474b2c3946e6948ce3ac (diff) | |
download | libmpeg2-22d3e0bd89cd31bb8fe075e8d96fde360c09db52.tar.gz |
Add riscv64 support am: 7aa57c1135 am: b082ab0ce6 am: 3f09b52eba
Original change: https://android-review.googlesource.com/c/platform/external/libmpeg2/+/2168947
Change-Id: I9d65d0a7d6cb16662d36a80b25066025ae92fd2a
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | Android.bp | 11 | ||||
-rw-r--r-- | common/icv.h | 1 | ||||
-rw-r--r-- | common/riscv/icv_platform_macros.h | 65 | ||||
-rw-r--r-- | common/riscv/ideint_function_selector.c | 110 | ||||
-rw-r--r-- | common/riscv/impeg2_platform_macros.h | 48 | ||||
-rw-r--r-- | decoder/impeg2d_deinterlace.c | 3 | ||||
-rw-r--r-- | decoder/ivd.h | 3 | ||||
-rw-r--r-- | decoder/riscv/impeg2d_function_selector.c | 82 |
8 files changed, 321 insertions, 2 deletions
@@ -148,6 +148,17 @@ cc_library_static { ], }, + riscv64: { + local_include_dirs: [ + "common/riscv", + ], + + srcs: [ + "decoder/riscv/impeg2d_function_selector.c", + "common/riscv/ideint_function_selector.c", + ], + }, + x86: { cflags: [ "-DX86", diff --git a/common/icv.h b/common/icv.h index 7ab4645..73f56e1 100644 --- a/common/icv.h +++ b/common/icv.h @@ -77,6 +77,7 @@ typedef enum ICV_X86_AVX2, ICV_MIPS_GENERIC = 0x2000, ICV_MIPS_32, + ICV_RISCV_GENERIC = 0x3000, }ICV_ARCH_T; /** SOC Enumeration */ diff --git a/common/riscv/icv_platform_macros.h b/common/riscv/icv_platform_macros.h new file mode 100644 index 0000000..4b268f6 --- /dev/null +++ b/common/riscv/icv_platform_macros.h @@ -0,0 +1,65 @@ +/****************************************************************************** + * + * Copyright (C) 2015 The Android Open Source Project + * + * 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. + * + ***************************************************************************** + * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore +*/ +/** +******************************************************************************* +* @file +* icv_platform_macros.h +* +* @brief +* This header files contains all the platform/toolchain specific macros +* +* @author +* Ittiam +* +* @par List of Functions: +* +* @remarks +* None +* +******************************************************************************* +*/ +#ifndef _ICV_PLATFORM_MACROS_H_ +#define _ICV_PLATFORM_MACROS_H_ + +static __inline UWORD32 CLZ(UWORD32 u4_word) +{ + if(u4_word) + return(__builtin_clz(u4_word)); + else + return 32; +} + +#define CLIP_U8(x) CLIP3(0, 255, (x)) +#define CLIP_S8(x) CLIP3(-128, 127, (x)) + +#define CLIP_U10(x) CLIP3(0, 1023, (x)) +#define CLIP_S10(x) CLIP3(-512, 511, (x)) + +#define CLIP_U12(x) CLIP3(0, 4095, (x)) +#define CLIP_S12(x) CLIP3(-2048, 2047, (x)) + +#define CLIP_U16(x) CLIP3(0, 65535, (x)) +#define CLIP_S16(x) CLIP3(-32768, 32767, (x)) + +#define NOP(nop_cnt) {UWORD32 nop_i; for (nop_i = 0; nop_i < nop_cnt; nop_i++) asm("nop");} + +#define INLINE inline + +#endif /* _ICV_PLATFORM_MACROS_H_ */ diff --git a/common/riscv/ideint_function_selector.c b/common/riscv/ideint_function_selector.c new file mode 100644 index 0000000..9f2e4bd --- /dev/null +++ b/common/riscv/ideint_function_selector.c @@ -0,0 +1,110 @@ +/****************************************************************************** + * + * Copyright (C) 2015 The Android Open Source Project + * + * 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. + * + ***************************************************************************** + * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore +*/ +/** +******************************************************************************* +* @file +* ideint_function_selector.c +* +* @brief +* This file contains the function selector related code +* +* @author +* Ittiam +* +* @par List of Functions: +* ih264e_init_function_ptr +* +* @remarks +* None +* +******************************************************************************* +*/ +/*****************************************************************************/ +/* File Includes */ +/*****************************************************************************/ +/* System include files */ +#include <stdio.h> +#include <stdint.h> +#include <string.h> +#include <stdlib.h> +#include <assert.h> + + +/* User include files */ +#include "icv_datatypes.h" +#include "icv_macros.h" +#include "icv_platform_macros.h" +#include "icv.h" +#include "icv_variance.h" +#include "icv_sad.h" +#include "ideint.h" + +#include "ideint_defs.h" +#include "ideint_structs.h" +#include "ideint_utils.h" +#include "ideint_cac.h" +#include "ideint_debug.h" +#include "ideint_function_selector.h" + + +/** +******************************************************************************* +* +* @brief +* Call corresponding function pointer initialization function +* +* @par Description +* Call corresponding function pointer initialization function +* +* @param[in] ps_ctxt +* Context +* +* @returns none +* +* @remarks none +* +******************************************************************************* +*/ +void ideint_init_function_ptr(ctxt_t *ps_ctxt) +{ + ideint_init_function_ptr_generic(ps_ctxt); +} + +/** +******************************************************************************* +* +* @brief Determine the architecture of the encoder executing environment +* +* @par Description: This routine returns the architecture of the enviro- +* ment in which the current encoder is being tested +* +* @param[in] void +* +* @returns IV_ARCH_T +* architecture +* +* @remarks none +* +******************************************************************************* +*/ +ICV_ARCH_T ideint_default_arch(void) +{ + return ICV_RISCV_GENERIC; +} diff --git a/common/riscv/impeg2_platform_macros.h b/common/riscv/impeg2_platform_macros.h new file mode 100644 index 0000000..a5912e2 --- /dev/null +++ b/common/riscv/impeg2_platform_macros.h @@ -0,0 +1,48 @@ +/****************************************************************************** + * + * Copyright (C) 2015 The Android Open Source Project + * + * 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. + * + ***************************************************************************** + * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore +*/ +#ifndef __IMPEG2_PLATFORM_MACROS_H__ +#define __IMPEG2_PLATFORM_MACROS_H__ + + +#define CONV_LE_TO_BE(u4_temp2,u4_temp1) u4_temp2 = (u4_temp1 << 24) | \ + ((u4_temp1 & 0xff00) << 8) | \ + ((u4_temp1 & 0xff0000) >> 8) | \ + (u4_temp1 >> 24); +static __inline UWORD32 CLZ(UWORD32 u4_word) +{ + if(u4_word) + return (__builtin_clz(u4_word)); + else + return 32; +} + + +#define CLIP_U8(x) ((x) > 255) ? (255) : (((x) < 0) ? (0) : (x)) +#define CLIP_S8(x) ((x) > 127) ? (127) : (((x) < -128) ? (-128) : (x)) + +#define CLIP_U12(x) ((x) > 4095) ? (4095) : (((x) < 0) ? (0) : (x)) +#define CLIP_S12(x) ((x) > 2047) ? (2047) : (((x) < -2048) ? (-2048) : (x)) + +#define CLIP_U16(x) ((x) > 65535) ? (65535) : (((x) < 0) ? (0) : (x)) +#define CLIP_S16(x) ((x) > 32767) ? (32767) : (((x) < -32768) ? (-32768) : (x)) + +#define INLINE + +#endif /* __IMPEG2_PLATFORM_MACROS_H__ */ diff --git a/decoder/impeg2d_deinterlace.c b/decoder/impeg2d_deinterlace.c index 89e5c1a..3787367 100644 --- a/decoder/impeg2d_deinterlace.c +++ b/decoder/impeg2d_deinterlace.c @@ -65,7 +65,8 @@ static const arch_map_t gas_impeg2d_arch_mapping[] = {ARCH_X86_SSE42, ICV_X86_SSE42}, {ARCH_X86_AVX2, ICV_X86_AVX2}, {ARCH_MIPS_GENERIC, ICV_MIPS_GENERIC}, - {ARCH_MIPS_32, ICV_MIPS_32} + {ARCH_MIPS_32, ICV_MIPS_32}, + {ARCH_RISCV_GENERIC, ICV_RISCV_GENERIC}, }; diff --git a/decoder/ivd.h b/decoder/ivd.h index abc6604..86f4376 100644 --- a/decoder/ivd.h +++ b/decoder/ivd.h @@ -69,7 +69,8 @@ typedef enum ARCH_X86_SSE42, ARCH_X86_AVX2, ARCH_MIPS_GENERIC = 0x200, - ARCH_MIPS_32 + ARCH_MIPS_32, + ARCH_RISCV_GENERIC = 0x300, }IVD_ARCH_T; /* IVD_SOC_T: SOC Enumeration */ diff --git a/decoder/riscv/impeg2d_function_selector.c b/decoder/riscv/impeg2d_function_selector.c new file mode 100644 index 0000000..780c736 --- /dev/null +++ b/decoder/riscv/impeg2d_function_selector.c @@ -0,0 +1,82 @@ +/****************************************************************************** + * + * Copyright (C) 2015 The Android Open Source Project + * + * 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. + * + ***************************************************************************** + * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore +*/ +/** +******************************************************************************* +* @file +* impeg2d_function_selector.c +* +* @brief +* Contains functions to initialize function pointers used in mpeg2 +* +* @author +* Naveen +* +* @par List of Functions: +* @remarks +* None +* +******************************************************************************* +*/ +/*****************************************************************************/ +/* File Includes */ +/*****************************************************************************/ +#include <stdio.h> +#include <stddef.h> +#include <stdlib.h> +#include <string.h> + +#include "iv_datatypedef.h" +#include "iv.h" + +#include "impeg2_buf_mgr.h" +#include "impeg2_disp_mgr.h" +#include "impeg2_defs.h" +#include "impeg2_platform_macros.h" +#include "impeg2_inter_pred.h" +#include "impeg2_idct.h" +#include "impeg2_globals.h" +#include "impeg2_mem_func.h" +#include "impeg2_format_conv.h" +#include "impeg2_macros.h" + +#include "ivd.h" +#include "impeg2d.h" +#include "impeg2d_bitstream.h" +#include "impeg2d_structs.h" +#include "impeg2d_vld_tables.h" +#include "impeg2d_vld.h" +#include "impeg2d_pic_proc.h" +#include "impeg2d_debug.h" +#include "impeg2d_mc.h" +#include "impeg2d_function_selector.h" + +void impeg2d_init_function_ptr(void *pv_codec) +{ + dec_state_t *ps_codec = (dec_state_t *)pv_codec; + + impeg2d_init_function_ptr_generic(ps_codec); +} + +void impeg2d_init_arch(void *pv_codec) +{ + dec_state_t *ps_codec = (dec_state_t *)pv_codec; + + ps_codec->e_processor_arch = ARCH_RISCV_GENERIC; +} |