1*495ae853SAndroid Build Coastguard Worker /****************************************************************************** 2*495ae853SAndroid Build Coastguard Worker * 3*495ae853SAndroid Build Coastguard Worker * Copyright (C) 2022 The Android Open Source Project 4*495ae853SAndroid Build Coastguard Worker * 5*495ae853SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 6*495ae853SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 7*495ae853SAndroid Build Coastguard Worker * You may obtain a copy of the License at: 8*495ae853SAndroid Build Coastguard Worker * 9*495ae853SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 10*495ae853SAndroid Build Coastguard Worker * 11*495ae853SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 12*495ae853SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 13*495ae853SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*495ae853SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 15*495ae853SAndroid Build Coastguard Worker * limitations under the License. 16*495ae853SAndroid Build Coastguard Worker * 17*495ae853SAndroid Build Coastguard Worker ***************************************************************************** 18*495ae853SAndroid Build Coastguard Worker * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19*495ae853SAndroid Build Coastguard Worker */ 20*495ae853SAndroid Build Coastguard Worker /** 21*495ae853SAndroid Build Coastguard Worker ******************************************************************************* 22*495ae853SAndroid Build Coastguard Worker * @file 23*495ae853SAndroid Build Coastguard Worker * isvc_mem_fns.h 24*495ae853SAndroid Build Coastguard Worker * 25*495ae853SAndroid Build Coastguard Worker * @brief 26*495ae853SAndroid Build Coastguard Worker * Function declarations used for memory functions 27*495ae853SAndroid Build Coastguard Worker * 28*495ae853SAndroid Build Coastguard Worker * @author 29*495ae853SAndroid Build Coastguard Worker * Ittiam 30*495ae853SAndroid Build Coastguard Worker * 31*495ae853SAndroid Build Coastguard Worker * @remarks 32*495ae853SAndroid Build Coastguard Worker * None 33*495ae853SAndroid Build Coastguard Worker * 34*495ae853SAndroid Build Coastguard Worker ******************************************************************************* 35*495ae853SAndroid Build Coastguard Worker */ 36*495ae853SAndroid Build Coastguard Worker #ifndef _ISVC_MEM_FNS_H_ 37*495ae853SAndroid Build Coastguard Worker #define _ISVC_MEM_FNS_H_ 38*495ae853SAndroid Build Coastguard Worker 39*495ae853SAndroid Build Coastguard Worker #include "ih264_typedefs.h" 40*495ae853SAndroid Build Coastguard Worker 41*495ae853SAndroid Build Coastguard Worker typedef void *FT_MEM_ALLOC(UWORD32 u4_size); 42*495ae853SAndroid Build Coastguard Worker 43*495ae853SAndroid Build Coastguard Worker typedef void FT_MEM_FREE(void *pv_mem); 44*495ae853SAndroid Build Coastguard Worker 45*495ae853SAndroid Build Coastguard Worker typedef void FT_MEMCPY(UWORD8 *pu1_dst, UWORD8 *pu1_src, UWORD32 num_bytes); 46*495ae853SAndroid Build Coastguard Worker 47*495ae853SAndroid Build Coastguard Worker typedef void FT_COPY_2D(UWORD8 *pu1_dst, WORD32 i4_dst_stride, UWORD8 *pu1_src, 48*495ae853SAndroid Build Coastguard Worker WORD32 i4_src_stride, WORD32 i4_blk_wd, WORD32 i4_blk_ht); 49*495ae853SAndroid Build Coastguard Worker 50*495ae853SAndroid Build Coastguard Worker typedef void FT_MEMSET_2D(UWORD8 *pu1_dst, WORD32 i4_dst_stride, UWORD8 u1_val, WORD32 i4_blk_wd, 51*495ae853SAndroid Build Coastguard Worker WORD32 i4_blk_ht); 52*495ae853SAndroid Build Coastguard Worker 53*495ae853SAndroid Build Coastguard Worker typedef void FT_MEMSET(UWORD8 *pu1_dst, UWORD8 value, UWORD32 num_bytes); 54*495ae853SAndroid Build Coastguard Worker 55*495ae853SAndroid Build Coastguard Worker typedef void FT_MEMSET_16BIT(UWORD16 *pu2_dst, UWORD16 value, UWORD32 num_words); 56*495ae853SAndroid Build Coastguard Worker 57*495ae853SAndroid Build Coastguard Worker typedef void FT_16BIT_INTERLEAVED_COPY(WORD16 *pi2_src, WORD16 *pi2_dst, WORD32 src_strd, 58*495ae853SAndroid Build Coastguard Worker WORD32 dst_strd, WORD32 ht, WORD32 wd); 59*495ae853SAndroid Build Coastguard Worker 60*495ae853SAndroid Build Coastguard Worker typedef void FT_16BIT_INTERLEAVED_MEMSET(WORD16 *pi2_src, WORD32 i4_src_strd, WORD16 i2_value, 61*495ae853SAndroid Build Coastguard Worker WORD32 i4_wd, WORD32 i4_ht); 62*495ae853SAndroid Build Coastguard Worker 63*495ae853SAndroid Build Coastguard Worker typedef UWORD8 FT_NONZERO_CHECKER(UWORD8 *pu1_data, WORD32 i4_data_strd, UWORD32 u4_wd, 64*495ae853SAndroid Build Coastguard Worker UWORD32 u4_ht); 65*495ae853SAndroid Build Coastguard Worker 66*495ae853SAndroid Build Coastguard Worker /* C function declarations */ 67*495ae853SAndroid Build Coastguard Worker extern FT_MEMCPY ih264_memcpy_mul_8; 68*495ae853SAndroid Build Coastguard Worker extern FT_MEMSET ih264_memset_mul_8; 69*495ae853SAndroid Build Coastguard Worker extern FT_MEMSET_16BIT ih264_memset_16bit; 70*495ae853SAndroid Build Coastguard Worker extern FT_MEMSET_16BIT ih264_memset_16bit_mul_8; 71*495ae853SAndroid Build Coastguard Worker extern FT_COPY_2D isvc_copy_2d; 72*495ae853SAndroid Build Coastguard Worker extern FT_MEMSET_2D isvc_memset_2d; 73*495ae853SAndroid Build Coastguard Worker extern FT_NONZERO_CHECKER isvc_is_nonzero_blk; 74*495ae853SAndroid Build Coastguard Worker extern FT_MEM_ALLOC isvc_memory_alloc; 75*495ae853SAndroid Build Coastguard Worker extern FT_MEM_FREE isvc_memory_free; 76*495ae853SAndroid Build Coastguard Worker 77*495ae853SAndroid Build Coastguard Worker /* A9 Q function declarations */ 78*495ae853SAndroid Build Coastguard Worker extern FT_MEMCPY ih264_memcpy_mul_8_a9q; 79*495ae853SAndroid Build Coastguard Worker extern FT_MEMSET ih264_memset_mul_8_a9q; 80*495ae853SAndroid Build Coastguard Worker extern FT_MEMSET_16BIT ih264_memset_16bit_a9q; 81*495ae853SAndroid Build Coastguard Worker extern FT_MEMSET_16BIT ih264_memset_16bit_mul_8_a9q; 82*495ae853SAndroid Build Coastguard Worker 83*495ae853SAndroid Build Coastguard Worker /* AV8 function declarations */ 84*495ae853SAndroid Build Coastguard Worker extern FT_MEMCPY ih264_memcpy_mul_8_av8; 85*495ae853SAndroid Build Coastguard Worker extern FT_MEMSET ih264_memset_mul_8_av8; 86*495ae853SAndroid Build Coastguard Worker extern FT_MEMSET_16BIT ih264_memset_16bit_av8; 87*495ae853SAndroid Build Coastguard Worker extern FT_MEMSET_16BIT ih264_memset_16bit_mul_8_av8; 88*495ae853SAndroid Build Coastguard Worker 89*495ae853SAndroid Build Coastguard Worker /* NEON function declarations */ 90*495ae853SAndroid Build Coastguard Worker extern FT_MEMSET_2D isvc_memset_2d_neon; 91*495ae853SAndroid Build Coastguard Worker 92*495ae853SAndroid Build Coastguard Worker /* SSSE3 variants */ 93*495ae853SAndroid Build Coastguard Worker extern FT_MEMCPY ih264_memcpy_mul_8_ssse3; 94*495ae853SAndroid Build Coastguard Worker extern FT_MEMSET ih264_memset_mul_8_ssse3; 95*495ae853SAndroid Build Coastguard Worker extern FT_MEMSET_16BIT ih264_memset_16bit_mul_8_ssse3; 96*495ae853SAndroid Build Coastguard Worker extern FT_COPY_2D isvc_copy_2d_ssse3; 97*495ae853SAndroid Build Coastguard Worker 98*495ae853SAndroid Build Coastguard Worker /* SSE4.2 variants */ 99*495ae853SAndroid Build Coastguard Worker extern FT_MEMSET_2D isvc_memset_2d_sse42; 100*495ae853SAndroid Build Coastguard Worker 101*495ae853SAndroid Build Coastguard Worker #endif 102