1*a97c2a1fSXin Li /****************************************************************************** 2*a97c2a1fSXin Li * 3*a97c2a1fSXin Li * Copyright (C) 2015 The Android Open Source Project 4*a97c2a1fSXin Li * 5*a97c2a1fSXin Li * Licensed under the Apache License, Version 2.0 (the "License"); 6*a97c2a1fSXin Li * you may not use this file except in compliance with the License. 7*a97c2a1fSXin Li * You may obtain a copy of the License at: 8*a97c2a1fSXin Li * 9*a97c2a1fSXin Li * http://www.apache.org/licenses/LICENSE-2.0 10*a97c2a1fSXin Li * 11*a97c2a1fSXin Li * Unless required by applicable law or agreed to in writing, software 12*a97c2a1fSXin Li * distributed under the License is distributed on an "AS IS" BASIS, 13*a97c2a1fSXin Li * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*a97c2a1fSXin Li * See the License for the specific language governing permissions and 15*a97c2a1fSXin Li * limitations under the License. 16*a97c2a1fSXin Li * 17*a97c2a1fSXin Li ***************************************************************************** 18*a97c2a1fSXin Li * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19*a97c2a1fSXin Li */ 20*a97c2a1fSXin Li #ifndef __IMPEG2_INTER_PRED_H__ 21*a97c2a1fSXin Li #define __IMPEG2_INTER_PRED_H__ 22*a97c2a1fSXin Li 23*a97c2a1fSXin Li 24*a97c2a1fSXin Li typedef struct 25*a97c2a1fSXin Li { 26*a97c2a1fSXin Li UWORD8 *pu1_y; 27*a97c2a1fSXin Li UWORD8 *pu1_u; 28*a97c2a1fSXin Li UWORD8 *pu1_v; 29*a97c2a1fSXin Li }yuv_buf_t; 30*a97c2a1fSXin Li 31*a97c2a1fSXin Li typedef struct 32*a97c2a1fSXin Li { 33*a97c2a1fSXin Li WORD16 *pi2_y; 34*a97c2a1fSXin Li WORD16 *pi2_u; 35*a97c2a1fSXin Li WORD16 *pi2_v; 36*a97c2a1fSXin Li }yuv_buf16_t; 37*a97c2a1fSXin Li 38*a97c2a1fSXin Li /** 39*a97c2a1fSXin Li * Picture buffer 40*a97c2a1fSXin Li */ 41*a97c2a1fSXin Li typedef struct 42*a97c2a1fSXin Li { 43*a97c2a1fSXin Li UWORD8 *pu1_y; 44*a97c2a1fSXin Li UWORD8 *pu1_u; 45*a97c2a1fSXin Li UWORD8 *pu1_v; 46*a97c2a1fSXin Li 47*a97c2a1fSXin Li /** Used to store display Timestamp for current buffer */ 48*a97c2a1fSXin Li WORD32 u4_ts; 49*a97c2a1fSXin Li UWORD8 u1_used_as_ref; 50*a97c2a1fSXin Li 51*a97c2a1fSXin Li /** 52*a97c2a1fSXin Li * buffer ID from buffer manager 53*a97c2a1fSXin Li */ 54*a97c2a1fSXin Li WORD32 i4_buf_id; 55*a97c2a1fSXin Li 56*a97c2a1fSXin Li /* To store the buffer's picture type */ 57*a97c2a1fSXin Li e_pic_type_t e_pic_type; 58*a97c2a1fSXin Li 59*a97c2a1fSXin Li }pic_buf_t; 60*a97c2a1fSXin Li 61*a97c2a1fSXin Li typedef void pf_copy_mb_t (yuv_buf_t *src_buf, 62*a97c2a1fSXin Li yuv_buf_t *dst_buf, 63*a97c2a1fSXin Li UWORD32 src_wd, 64*a97c2a1fSXin Li UWORD32 dst_wd); 65*a97c2a1fSXin Li 66*a97c2a1fSXin Li typedef void pf_interpred_t(UWORD8 *out,UWORD8 *ref, UWORD32 ref_wid, UWORD32 out_wid); 67*a97c2a1fSXin Li 68*a97c2a1fSXin Li typedef void pf_interpolate_t(yuv_buf_t *buf_src1, 69*a97c2a1fSXin Li yuv_buf_t *buf_src2, 70*a97c2a1fSXin Li yuv_buf_t *buf_dst, 71*a97c2a1fSXin Li UWORD32 stride); 72*a97c2a1fSXin Li 73*a97c2a1fSXin Li pf_interpolate_t impeg2_interpolate; 74*a97c2a1fSXin Li pf_interpolate_t impeg2_interpolate_a9q; 75*a97c2a1fSXin Li pf_interpolate_t impeg2_interpolate_av8; 76*a97c2a1fSXin Li 77*a97c2a1fSXin Li pf_copy_mb_t impeg2_copy_mb; 78*a97c2a1fSXin Li pf_copy_mb_t impeg2_copy_mb_a9q; 79*a97c2a1fSXin Li pf_copy_mb_t impeg2_copy_mb_av8; 80*a97c2a1fSXin Li 81*a97c2a1fSXin Li pf_interpred_t impeg2_mc_halfx_halfy_8x8; 82*a97c2a1fSXin Li pf_interpred_t impeg2_mc_halfx_fully_8x8; 83*a97c2a1fSXin Li pf_interpred_t impeg2_mc_fullx_halfy_8x8; 84*a97c2a1fSXin Li pf_interpred_t impeg2_mc_fullx_fully_8x8; 85*a97c2a1fSXin Li 86*a97c2a1fSXin Li pf_interpred_t impeg2_mc_halfx_halfy_8x8_a9q; 87*a97c2a1fSXin Li pf_interpred_t impeg2_mc_halfx_fully_8x8_a9q; 88*a97c2a1fSXin Li pf_interpred_t impeg2_mc_fullx_halfy_8x8_a9q; 89*a97c2a1fSXin Li pf_interpred_t impeg2_mc_fullx_fully_8x8_a9q; 90*a97c2a1fSXin Li 91*a97c2a1fSXin Li /* AV8 Declarations */ 92*a97c2a1fSXin Li pf_interpred_t impeg2_mc_halfx_halfy_8x8_av8; 93*a97c2a1fSXin Li pf_interpred_t impeg2_mc_halfx_fully_8x8_av8; 94*a97c2a1fSXin Li pf_interpred_t impeg2_mc_fullx_halfy_8x8_av8; 95*a97c2a1fSXin Li pf_interpred_t impeg2_mc_fullx_fully_8x8_av8; 96*a97c2a1fSXin Li 97*a97c2a1fSXin Li 98*a97c2a1fSXin Li /* SSE4.2 Declarations*/ 99*a97c2a1fSXin Li pf_copy_mb_t impeg2_copy_mb_sse42; 100*a97c2a1fSXin Li pf_interpolate_t impeg2_interpolate_sse42; 101*a97c2a1fSXin Li pf_interpred_t impeg2_mc_halfx_halfy_8x8_sse42; 102*a97c2a1fSXin Li pf_interpred_t impeg2_mc_halfx_fully_8x8_sse42; 103*a97c2a1fSXin Li pf_interpred_t impeg2_mc_fullx_halfy_8x8_sse42; 104*a97c2a1fSXin Li pf_interpred_t impeg2_mc_fullx_fully_8x8_sse42; 105*a97c2a1fSXin Li 106*a97c2a1fSXin Li #endif /* #ifndef __IMPEG2_INTER_PRED_H__ */ 107