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