1*495ae853SAndroid Build Coastguard Worker /****************************************************************************** 2*495ae853SAndroid Build Coastguard Worker * 3*495ae853SAndroid Build Coastguard Worker * Copyright (C) 2015 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 ****************************************************************************** 23*495ae853SAndroid Build Coastguard Worker * @file 24*495ae853SAndroid Build Coastguard Worker * ime_distortion_metrics.h 25*495ae853SAndroid Build Coastguard Worker * 26*495ae853SAndroid Build Coastguard Worker * @brief 27*495ae853SAndroid Build Coastguard Worker * This file contains declarations of routines that compute distortion 28*495ae853SAndroid Build Coastguard Worker * between two macro/sub blocks of identical dimensions 29*495ae853SAndroid Build Coastguard Worker * 30*495ae853SAndroid Build Coastguard Worker * @author 31*495ae853SAndroid Build Coastguard Worker * Ittiam 32*495ae853SAndroid Build Coastguard Worker * 33*495ae853SAndroid Build Coastguard Worker * @remarks 34*495ae853SAndroid Build Coastguard Worker * None 35*495ae853SAndroid Build Coastguard Worker * 36*495ae853SAndroid Build Coastguard Worker ******************************************************************************* 37*495ae853SAndroid Build Coastguard Worker */ 38*495ae853SAndroid Build Coastguard Worker 39*495ae853SAndroid Build Coastguard Worker #ifndef _IME_DISTORTION_METRICS_H_ 40*495ae853SAndroid Build Coastguard Worker #define _IME_DISTORTION_METRICS_H_ 41*495ae853SAndroid Build Coastguard Worker 42*495ae853SAndroid Build Coastguard Worker 43*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 44*495ae853SAndroid Build Coastguard Worker /* Type definitions for function prototypes */ 45*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 46*495ae853SAndroid Build Coastguard Worker 47*495ae853SAndroid Build Coastguard Worker typedef void ime_compute_sad_ft(UWORD8 *pu1_src, 48*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_est, 49*495ae853SAndroid Build Coastguard Worker WORD32 src_strd, 50*495ae853SAndroid Build Coastguard Worker WORD32 est_strd, 51*495ae853SAndroid Build Coastguard Worker WORD32 i4_max_sad, 52*495ae853SAndroid Build Coastguard Worker WORD32 *pi4_mb_distortion); 53*495ae853SAndroid Build Coastguard Worker 54*495ae853SAndroid Build Coastguard Worker typedef void ime_compute_sad4_diamond(UWORD8 *pu1_ref, 55*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_src, 56*495ae853SAndroid Build Coastguard Worker WORD32 ref_strd, 57*495ae853SAndroid Build Coastguard Worker WORD32 src_strd, 58*495ae853SAndroid Build Coastguard Worker WORD32 *pi4_sad); 59*495ae853SAndroid Build Coastguard Worker 60*495ae853SAndroid Build Coastguard Worker typedef void ime_compute_sad3_diamond(UWORD8 *pu1_ref1, 61*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_ref2, 62*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_ref3, 63*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_src, 64*495ae853SAndroid Build Coastguard Worker WORD32 ref_strd, 65*495ae853SAndroid Build Coastguard Worker WORD32 src_strd, 66*495ae853SAndroid Build Coastguard Worker WORD32 *pi4_sad); 67*495ae853SAndroid Build Coastguard Worker 68*495ae853SAndroid Build Coastguard Worker typedef void ime_compute_sad2_diamond(UWORD8 *pu1_ref1, 69*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_ref2, 70*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_src, 71*495ae853SAndroid Build Coastguard Worker WORD32 ref_strd, 72*495ae853SAndroid Build Coastguard Worker WORD32 src_strd, 73*495ae853SAndroid Build Coastguard Worker WORD32 *pi4_sad); 74*495ae853SAndroid Build Coastguard Worker 75*495ae853SAndroid Build Coastguard Worker typedef void ime_sub_pel_compute_sad_16x16_ft(UWORD8 *pu1_src, 76*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_ref_half_x, 77*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_ref_half_y, 78*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_ref_half_xy, 79*495ae853SAndroid Build Coastguard Worker WORD32 src_strd, 80*495ae853SAndroid Build Coastguard Worker WORD32 ref_strd, 81*495ae853SAndroid Build Coastguard Worker WORD32 *pi4_sad); 82*495ae853SAndroid Build Coastguard Worker 83*495ae853SAndroid Build Coastguard Worker typedef void ime_compute_sad_stat(UWORD8 *pu1_src, 84*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_est, 85*495ae853SAndroid Build Coastguard Worker WORD32 src_strd, 86*495ae853SAndroid Build Coastguard Worker WORD32 est_strd, 87*495ae853SAndroid Build Coastguard Worker UWORD16 *pu2_thrsh, 88*495ae853SAndroid Build Coastguard Worker WORD32 *pi4_mb_distortion, 89*495ae853SAndroid Build Coastguard Worker UWORD32 *pu4_is_zero); 90*495ae853SAndroid Build Coastguard Worker 91*495ae853SAndroid Build Coastguard Worker typedef void ime_compute_satqd_16x16_lumainter_ft(UWORD8 *pu1_src, 92*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_est, 93*495ae853SAndroid Build Coastguard Worker WORD32 src_strd, 94*495ae853SAndroid Build Coastguard Worker WORD32 est_strd, 95*495ae853SAndroid Build Coastguard Worker UWORD16 *pu2_thrsh, 96*495ae853SAndroid Build Coastguard Worker WORD32 *pi4_mb_distortion, 97*495ae853SAndroid Build Coastguard Worker UWORD32 *pu4_is_zero); 98*495ae853SAndroid Build Coastguard Worker 99*495ae853SAndroid Build Coastguard Worker typedef void ime_compute_satqd_8x16_chroma_ft(UWORD8 *pu1_src, 100*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_est, 101*495ae853SAndroid Build Coastguard Worker WORD32 src_strd, 102*495ae853SAndroid Build Coastguard Worker WORD32 est_strd, 103*495ae853SAndroid Build Coastguard Worker WORD32 i4_max_sad, 104*495ae853SAndroid Build Coastguard Worker UWORD16 *thrsh); 105*495ae853SAndroid Build Coastguard Worker 106*495ae853SAndroid Build Coastguard Worker typedef void ime_compute_satqd_16x16_lumaintra_ft(UWORD8 *pu1_src, 107*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_est, 108*495ae853SAndroid Build Coastguard Worker WORD32 src_strd, 109*495ae853SAndroid Build Coastguard Worker WORD32 est_strd, 110*495ae853SAndroid Build Coastguard Worker WORD32 i4_max_sad, 111*495ae853SAndroid Build Coastguard Worker UWORD16 *thrsh, 112*495ae853SAndroid Build Coastguard Worker WORD32 *pi4_mb_distortion, 113*495ae853SAndroid Build Coastguard Worker UWORD8 *sig_nz_sad); 114*495ae853SAndroid Build Coastguard Worker 115*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 116*495ae853SAndroid Build Coastguard Worker /* Function Declarations */ 117*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 118*495ae853SAndroid Build Coastguard Worker 119*495ae853SAndroid Build Coastguard Worker /* C declarations */ 120*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16; 121*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16_fast; 122*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x8; 123*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16_ea8; 124*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_8x8; 125*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_4x4; 126*495ae853SAndroid Build Coastguard Worker ime_compute_sad4_diamond ime_calculate_sad4_prog; 127*495ae853SAndroid Build Coastguard Worker ime_compute_sad3_diamond ime_calculate_sad3_prog; 128*495ae853SAndroid Build Coastguard Worker ime_compute_sad2_diamond ime_calculate_sad2_prog; 129*495ae853SAndroid Build Coastguard Worker ime_sub_pel_compute_sad_16x16_ft ime_sub_pel_compute_sad_16x16; 130*495ae853SAndroid Build Coastguard Worker ime_compute_sad_stat ime_compute_16x16_sad_stat; 131*495ae853SAndroid Build Coastguard Worker ime_compute_satqd_16x16_lumainter_ft ime_compute_satqd_16x16_lumainter; 132*495ae853SAndroid Build Coastguard Worker ime_compute_satqd_8x16_chroma_ft ime_compute_satqd_8x16_chroma; 133*495ae853SAndroid Build Coastguard Worker ime_compute_satqd_16x16_lumaintra_ft ime_compute_satqd_16x16_lumaintra; 134*495ae853SAndroid Build Coastguard Worker 135*495ae853SAndroid Build Coastguard Worker /* SSE4.2 Declarations */ 136*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16_sse42; 137*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16_fast_sse42; 138*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x8_sse42; 139*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16_ea8_sse42; 140*495ae853SAndroid Build Coastguard Worker ime_sub_pel_compute_sad_16x16_ft ime_sub_pel_compute_sad_16x16_sse42; 141*495ae853SAndroid Build Coastguard Worker ime_compute_sad4_diamond ime_calculate_sad4_prog_sse42; 142*495ae853SAndroid Build Coastguard Worker ime_compute_satqd_16x16_lumainter_ft ime_compute_satqd_16x16_lumainter_sse42; 143*495ae853SAndroid Build Coastguard Worker 144*495ae853SAndroid Build Coastguard Worker /* A9 Declarations */ 145*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16_a9q; 146*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16_fast_a9q; 147*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x8_a9q; 148*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16_ea8_a9q; 149*495ae853SAndroid Build Coastguard Worker ime_compute_sad4_diamond ime_calculate_sad4_prog_a9q; 150*495ae853SAndroid Build Coastguard Worker ime_compute_sad3_diamond ime_calculate_sad3_prog_a9q; 151*495ae853SAndroid Build Coastguard Worker ime_compute_sad2_diamond ime_calculate_sad2_prog_a9q; 152*495ae853SAndroid Build Coastguard Worker ime_sub_pel_compute_sad_16x16_ft ime_sub_pel_compute_sad_16x16_a9q; 153*495ae853SAndroid Build Coastguard Worker ime_compute_sad_stat ime_compute_16x16_sad_stat_a9; 154*495ae853SAndroid Build Coastguard Worker ime_compute_satqd_16x16_lumainter_ft ime_compute_satqd_16x16_lumainter_a9q; 155*495ae853SAndroid Build Coastguard Worker 156*495ae853SAndroid Build Coastguard Worker /* AV8 declarations */ 157*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16_av8; 158*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16_fast_av8; 159*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x8_av8; 160*495ae853SAndroid Build Coastguard Worker ime_compute_sad_ft ime_compute_sad_16x16_ea8_av8; 161*495ae853SAndroid Build Coastguard Worker ime_compute_sad4_diamond ime_calculate_sad4_prog_av8; 162*495ae853SAndroid Build Coastguard Worker ime_compute_sad3_diamond ime_calculate_sad3_prog_av8; 163*495ae853SAndroid Build Coastguard Worker ime_compute_sad2_diamond ime_calculate_sad2_prog_av8; 164*495ae853SAndroid Build Coastguard Worker ime_sub_pel_compute_sad_16x16_ft ime_sub_pel_compute_sad_16x16_av8; 165*495ae853SAndroid Build Coastguard Worker ime_compute_sad_stat ime_compute_16x16_sad_stat_av8; 166*495ae853SAndroid Build Coastguard Worker ime_compute_satqd_16x16_lumainter_ft ime_compute_satqd_16x16_lumainter_av8; 167*495ae853SAndroid Build Coastguard Worker 168*495ae853SAndroid Build Coastguard Worker #endif /* _IME_DISTORTION_METRICS_H_ */ 169*495ae853SAndroid Build Coastguard Worker 170*495ae853SAndroid Build Coastguard Worker 171