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 * ih264e_statistics.h 25*495ae853SAndroid Build Coastguard Worker * 26*495ae853SAndroid Build Coastguard Worker * @brief 27*495ae853SAndroid Build Coastguard Worker * Contains macros for collecting stats during encoding process 28*495ae853SAndroid Build Coastguard Worker * 29*495ae853SAndroid Build Coastguard Worker * @author 30*495ae853SAndroid Build Coastguard Worker * ittiam 31*495ae853SAndroid Build Coastguard Worker * 32*495ae853SAndroid Build Coastguard Worker * @remarks 33*495ae853SAndroid Build Coastguard Worker * none 34*495ae853SAndroid Build Coastguard Worker * 35*495ae853SAndroid Build Coastguard Worker ******************************************************************************* 36*495ae853SAndroid Build Coastguard Worker */ 37*495ae853SAndroid Build Coastguard Worker 38*495ae853SAndroid Build Coastguard Worker #ifndef _IH264E_STATISTICS_H_ 39*495ae853SAndroid Build Coastguard Worker #define _IH264E_STATISTICS_H_ 40*495ae853SAndroid Build Coastguard Worker 41*495ae853SAndroid Build Coastguard Worker #if CAVLC_LEVEL_STATS 42*495ae853SAndroid Build Coastguard Worker 43*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 44*495ae853SAndroid Build Coastguard Worker /* Global Tables */ 45*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 46*495ae853SAndroid Build Coastguard Worker 47*495ae853SAndroid Build Coastguard Worker /** 48*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 49*495ae853SAndroid Build Coastguard Worker * @brief In cavlc encoding, a lut is used for encoding levels. It is not possible 50*495ae853SAndroid Build Coastguard Worker * to use look up for all possible levels. The extent to which look up is generated 51*495ae853SAndroid Build Coastguard Worker * is based on the statistics that were collected in the following global variables. 52*495ae853SAndroid Build Coastguard Worker * 53*495ae853SAndroid Build Coastguard Worker * gu4_cavlc_level_bin_lt_4 represents the number coefficients with abs(level) < 4 54*495ae853SAndroid Build Coastguard Worker * gu4_cavlc_level_bin_lt_16 represents the number coefficients with 4 < abs(level) < 16 55*495ae853SAndroid Build Coastguard Worker * gu4_cavlc_level_bin_lt_32 represents the number coefficients with 16 < abs(level) < 32 56*495ae853SAndroid Build Coastguard Worker * and so on ... 57*495ae853SAndroid Build Coastguard Worker * ****************************************************************************** 58*495ae853SAndroid Build Coastguard Worker */ 59*495ae853SAndroid Build Coastguard Worker extern UWORD32 gu4_cavlc_level_bin_lt_4; 60*495ae853SAndroid Build Coastguard Worker extern UWORD32 gu4_cavlc_level_bin_lt_16; 61*495ae853SAndroid Build Coastguard Worker extern UWORD32 gu4_cavlc_level_bin_lt_32; 62*495ae853SAndroid Build Coastguard Worker extern UWORD32 gu4_cavlc_level_bin_lt_64; 63*495ae853SAndroid Build Coastguard Worker extern UWORD32 gu4_cavlc_level_bin_lt_128; 64*495ae853SAndroid Build Coastguard Worker extern UWORD32 gu4_cavlc_level_bin_else_where; 65*495ae853SAndroid Build Coastguard Worker extern UWORD32 gu4_cavlc_level_lut_hit_rate; 66*495ae853SAndroid Build Coastguard Worker 67*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 68*495ae853SAndroid Build Coastguard Worker /* Function declarations */ 69*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 70*495ae853SAndroid Build Coastguard Worker 71*495ae853SAndroid Build Coastguard Worker /** 72*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 73*495ae853SAndroid Build Coastguard Worker * @brief print cavlc stats 74*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 75*495ae853SAndroid Build Coastguard Worker */ 76*495ae853SAndroid Build Coastguard Worker void print_cavlc_level_stats(void); 77*495ae853SAndroid Build Coastguard Worker 78*495ae853SAndroid Build Coastguard Worker #define GATHER_CAVLC_STATS1() \ 79*495ae853SAndroid Build Coastguard Worker if (u4_abs_level < 4)\ 80*495ae853SAndroid Build Coastguard Worker gu4_cavlc_level_bin_lt_4 ++; \ 81*495ae853SAndroid Build Coastguard Worker else if (u4_abs_level < 16) \ 82*495ae853SAndroid Build Coastguard Worker gu4_cavlc_level_bin_lt_16 ++; \ 83*495ae853SAndroid Build Coastguard Worker else if (u4_abs_level < 32) \ 84*495ae853SAndroid Build Coastguard Worker gu4_cavlc_level_bin_lt_32 ++; \ 85*495ae853SAndroid Build Coastguard Worker else if (u4_abs_level < 64) \ 86*495ae853SAndroid Build Coastguard Worker gu4_cavlc_level_bin_lt_64 ++; \ 87*495ae853SAndroid Build Coastguard Worker else if (u4_abs_level < 128) \ 88*495ae853SAndroid Build Coastguard Worker gu4_cavlc_level_bin_lt_128 ++; \ 89*495ae853SAndroid Build Coastguard Worker else \ 90*495ae853SAndroid Build Coastguard Worker gu4_cavlc_level_bin_else_where ++; 91*495ae853SAndroid Build Coastguard Worker 92*495ae853SAndroid Build Coastguard Worker #define GATHER_CAVLC_STATS2() \ 93*495ae853SAndroid Build Coastguard Worker gu4_cavlc_level_lut_hit_rate ++; 94*495ae853SAndroid Build Coastguard Worker 95*495ae853SAndroid Build Coastguard Worker #else 96*495ae853SAndroid Build Coastguard Worker 97*495ae853SAndroid Build Coastguard Worker #define GATHER_CAVLC_STATS1() 98*495ae853SAndroid Build Coastguard Worker 99*495ae853SAndroid Build Coastguard Worker #define GATHER_CAVLC_STATS2() 100*495ae853SAndroid Build Coastguard Worker 101*495ae853SAndroid Build Coastguard Worker #endif 102*495ae853SAndroid Build Coastguard Worker 103*495ae853SAndroid Build Coastguard Worker 104*495ae853SAndroid Build Coastguard Worker #if GATING_STATS 105*495ae853SAndroid Build Coastguard Worker 106*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 107*495ae853SAndroid Build Coastguard Worker /* global declarations */ 108*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 109*495ae853SAndroid Build Coastguard Worker 110*495ae853SAndroid Build Coastguard Worker /** 111*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 112*495ae853SAndroid Build Coastguard Worker * @brief During encoding at fastest preset, some times if the inter threshold 113*495ae853SAndroid Build Coastguard Worker * is lesser than the predefined threshold, intra analysis is not done. The 114*495ae853SAndroid Build Coastguard Worker * below variable keeps track of the number of mb for which intra analysis is not 115*495ae853SAndroid Build Coastguard Worker * done 116*495ae853SAndroid Build Coastguard Worker * ****************************************************************************** 117*495ae853SAndroid Build Coastguard Worker */ 118*495ae853SAndroid Build Coastguard Worker extern UWORD32 gu4_mb_gated_cnt; 119*495ae853SAndroid Build Coastguard Worker 120*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 121*495ae853SAndroid Build Coastguard Worker /* function declarations */ 122*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 123*495ae853SAndroid Build Coastguard Worker 124*495ae853SAndroid Build Coastguard Worker /** 125*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 126*495ae853SAndroid Build Coastguard Worker * @brief print gating stats 127*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 128*495ae853SAndroid Build Coastguard Worker */ 129*495ae853SAndroid Build Coastguard Worker void print_gating_stats(void); 130*495ae853SAndroid Build Coastguard Worker 131*495ae853SAndroid Build Coastguard Worker #define GATHER_GATING_STATS() \ 132*495ae853SAndroid Build Coastguard Worker gu4_mb_gated_cnt ++; 133*495ae853SAndroid Build Coastguard Worker 134*495ae853SAndroid Build Coastguard Worker #else 135*495ae853SAndroid Build Coastguard Worker 136*495ae853SAndroid Build Coastguard Worker #define GATHER_GATING_STATS() 137*495ae853SAndroid Build Coastguard Worker 138*495ae853SAndroid Build Coastguard Worker #endif 139*495ae853SAndroid Build Coastguard Worker 140*495ae853SAndroid Build Coastguard Worker 141*495ae853SAndroid Build Coastguard Worker #endif /* _IH264E_STATISTICS_H_ */ 142