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 * app.h 25*495ae853SAndroid Build Coastguard Worker * 26*495ae853SAndroid Build Coastguard Worker * @brief 27*495ae853SAndroid Build Coastguard Worker * This file contains all the necessary structure and enumeration definitions 28*495ae853SAndroid Build Coastguard Worker * needed for the Application 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 _APP_H_ 40*495ae853SAndroid Build Coastguard Worker #define _APP_H_ 41*495ae853SAndroid Build Coastguard Worker 42*495ae853SAndroid Build Coastguard Worker #include "iv2.h" 43*495ae853SAndroid Build Coastguard Worker #include "ive2.h" 44*495ae853SAndroid Build Coastguard Worker #ifdef WINDOWS_TIMER 45*495ae853SAndroid Build Coastguard Worker #include <windows.h> 46*495ae853SAndroid Build Coastguard Worker #else 47*495ae853SAndroid Build Coastguard Worker #include <sys/time.h> 48*495ae853SAndroid Build Coastguard Worker #endif 49*495ae853SAndroid Build Coastguard Worker 50*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 51*495ae853SAndroid Build Coastguard Worker /* Function Macros */ 52*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 53*495ae853SAndroid Build Coastguard Worker #define MAX(a, b) ((a) > (b))? (a) : (b) 54*495ae853SAndroid Build Coastguard Worker #define MIN(a, b) ((a) < (b))? (a) : (b) 55*495ae853SAndroid Build Coastguard Worker 56*495ae853SAndroid Build Coastguard Worker #define ALIGN16(x) ((((x) + 15) >> 4) << 4) 57*495ae853SAndroid Build Coastguard Worker 58*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 59*495ae853SAndroid Build Coastguard Worker /* Constant Macros */ 60*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 61*495ae853SAndroid Build Coastguard Worker #define DEFAULT_NUM_INPUT_BUFS 32 62*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_INPUT_BUFS 32 63*495ae853SAndroid Build Coastguard Worker 64*495ae853SAndroid Build Coastguard Worker #define DEFAULT_NUM_OUTPUT_BUFS 32 65*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_OUTPUT_BUFS 32 66*495ae853SAndroid Build Coastguard Worker 67*495ae853SAndroid Build Coastguard Worker #define DEFAULT_NUM_RECON_BUFS 32 68*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_RECON_BUFS DEFAULT_NUM_RECON_BUFS 69*495ae853SAndroid Build Coastguard Worker 70*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_REF_FRM 2 71*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_REORDER_FRM 0 72*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_SRCH_RANGE_X 256 73*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_SRCH_RANGE_Y 256 74*495ae853SAndroid Build Coastguard Worker #define DEFAULT_QP_MIN 4 75*495ae853SAndroid Build Coastguard Worker #define DEFAULT_QP_MAX 49 76*495ae853SAndroid Build Coastguard Worker 77*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MEM_REC_CNT 0 78*495ae853SAndroid Build Coastguard Worker #define DEFAULT_RECON_ENABLE 0 79*495ae853SAndroid Build Coastguard Worker #define DEFAULT_CHKSUM_ENABLE 0 80*495ae853SAndroid Build Coastguard Worker #define DEFAULT_START_FRM 0 81*495ae853SAndroid Build Coastguard Worker #define DEFAULT_NUM_FRMS 0xFFFFFFFF 82*495ae853SAndroid Build Coastguard Worker #define DEFAULT_INP_COLOR_FMT IV_YUV_420SP_UV 83*495ae853SAndroid Build Coastguard Worker #define DEFAULT_RECON_COLOR_FMT IV_YUV_420P 84*495ae853SAndroid Build Coastguard Worker #define DEFAULT_NUM_CORES 1 85*495ae853SAndroid Build Coastguard Worker #define DEFAULT_LOOPBACK 0 86*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_FRAMERATE 120000 /* in ticks (1000 ticks = 1s) */ 87*495ae853SAndroid Build Coastguard Worker #define DEFAULT_SRC_FRAME_RATE 30 88*495ae853SAndroid Build Coastguard Worker #define DEFAULT_TGT_FRAME_RATE 30 89*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_WD 1920 90*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_HT 1920 91*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_LEVEL 40 92*495ae853SAndroid Build Coastguard Worker #define DEFAULT_STRIDE 0 93*495ae853SAndroid Build Coastguard Worker #define DEFAULT_WD 0 94*495ae853SAndroid Build Coastguard Worker #define DEFAULT_HT 0 95*495ae853SAndroid Build Coastguard Worker #define DEFAULT_PSNR_ENABLE 0 96*495ae853SAndroid Build Coastguard Worker #define DEFAULT_ME_SPEED 100 97*495ae853SAndroid Build Coastguard Worker #define DEFAULT_ENABLE_FAST_SAD 0 98*495ae853SAndroid Build Coastguard Worker #define DEFAULT_ENABLE_ALT_REF 0 99*495ae853SAndroid Build Coastguard Worker #define DEFAULT_RC 1 100*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_BITRATE 240000000 101*495ae853SAndroid Build Coastguard Worker #define DEFAULT_BITRATE 6000000 102*495ae853SAndroid Build Coastguard Worker #define DEFAULT_I_QP 25 103*495ae853SAndroid Build Coastguard Worker #define DEFAULT_I_QP_MAX DEFAULT_QP_MAX 104*495ae853SAndroid Build Coastguard Worker #define DEFAULT_I_QP_MIN DEFAULT_QP_MIN 105*495ae853SAndroid Build Coastguard Worker #define DEFAULT_P_QP 28 106*495ae853SAndroid Build Coastguard Worker #define DEFAULT_P_QP_MAX DEFAULT_QP_MAX 107*495ae853SAndroid Build Coastguard Worker #define DEFAULT_P_QP_MIN DEFAULT_QP_MIN 108*495ae853SAndroid Build Coastguard Worker #define DEFAULT_B_QP 28 109*495ae853SAndroid Build Coastguard Worker #define DEFAULT_B_QP_MAX DEFAULT_QP_MAX 110*495ae853SAndroid Build Coastguard Worker #define DEFAULT_B_QP_MIN DEFAULT_QP_MIN 111*495ae853SAndroid Build Coastguard Worker #define DEFAULT_AIR 0 112*495ae853SAndroid Build Coastguard Worker #define DEFAULT_AIR_REFRESH_PERIOD 30 113*495ae853SAndroid Build Coastguard Worker #define DEFAULT_SRCH_RNG_X 64 114*495ae853SAndroid Build Coastguard Worker #define DEFAULT_SRCH_RNG_Y 64 115*495ae853SAndroid Build Coastguard Worker #define DEFAULT_I_INTERVAL 30 116*495ae853SAndroid Build Coastguard Worker #define DEFAULT_IDR_INTERVAL 1200 117*495ae853SAndroid Build Coastguard Worker #define DEFAULT_CONSTRAINED_INTRAPRED 0 118*495ae853SAndroid Build Coastguard Worker #define DEFAULT_NUM_BFRAMES 0 119*495ae853SAndroid Build Coastguard Worker #define DEFAULT_DISABLE_DEBLK_LEVEL 0 120*495ae853SAndroid Build Coastguard Worker #define DEFAULT_HPEL 1 121*495ae853SAndroid Build Coastguard Worker #define DEFAULT_QPEL 1 122*495ae853SAndroid Build Coastguard Worker #define DEFAULT_I4 1 123*495ae853SAndroid Build Coastguard Worker #define DEFAULT_EPROFILE IV_PROFILE_BASE 124*495ae853SAndroid Build Coastguard Worker #define DEFAULT_SLICE_MODE 0 125*495ae853SAndroid Build Coastguard Worker #define DEFAULT_SLICE_PARAM 256 126*495ae853SAndroid Build Coastguard Worker #define DEFAULT_ENTROPY_CODING_MODE 0 127*495ae853SAndroid Build Coastguard Worker #define NUM_SEI_MDCV_PRIMARIES 3 128*495ae853SAndroid Build Coastguard Worker #define NUM_SEI_CCV_PRIMARIES 3 129*495ae853SAndroid Build Coastguard Worker #define SII_MAX_SUB_LAYERS 8 130*495ae853SAndroid Build Coastguard Worker #define SII_SUB_LAYER_IDX 0 131*495ae853SAndroid Build Coastguard Worker #define SHUTTER_INTERVAL_INFO_PRESENT_FLAG 1 132*495ae853SAndroid Build Coastguard Worker #define SII_TIME_SCALE 24000000 133*495ae853SAndroid Build Coastguard Worker #define FIXED_SHUTTER_INTERVAL_WITHIN_CVS_FLAG 0 134*495ae853SAndroid Build Coastguard Worker #define SII_NUM_UNITS_IN_SHUTTER_INTERVAL 480000 135*495ae853SAndroid Build Coastguard Worker #define SII_MAX_SUB_LAYERS_MINUS1 (SII_MAX_SUB_LAYERS - 1) 136*495ae853SAndroid Build Coastguard Worker #define SUB_LAYER_NUM_UNITS_IN_SHUTTER_INTERVAL_HFR 480000 137*495ae853SAndroid Build Coastguard Worker #define SUB_LAYER_NUM_UNITS_IN_SHUTTER_INTERVAL_SFR 240000 138*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_DISPLAY_MASTERING_LUMINANCE 50000 139*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MIN_DISPLAY_MASTERING_LUMINANCE 1 140*495ae853SAndroid Build Coastguard Worker 141*495ae853SAndroid Build Coastguard Worker #define STRLENGTH 500 142*495ae853SAndroid Build Coastguard Worker 143*495ae853SAndroid Build Coastguard Worker 144*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 145*495ae853SAndroid Build Coastguard Worker /* profile Macros */ 146*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 147*495ae853SAndroid Build Coastguard Worker #ifdef PROFILE_ENABLE 148*495ae853SAndroid Build Coastguard Worker #ifdef WINDOWS_TIMER 149*495ae853SAndroid Build Coastguard Worker typedef LARGE_INTEGER TIMER; 150*495ae853SAndroid Build Coastguard Worker #else 151*495ae853SAndroid Build Coastguard Worker //#ifdef X86_MINGW 152*495ae853SAndroid Build Coastguard Worker typedef struct timeval TIMER; 153*495ae853SAndroid Build Coastguard Worker //#endif 154*495ae853SAndroid Build Coastguard Worker #endif 155*495ae853SAndroid Build Coastguard Worker #endif 156*495ae853SAndroid Build Coastguard Worker 157*495ae853SAndroid Build Coastguard Worker #ifdef PROFILE_ENABLE 158*495ae853SAndroid Build Coastguard Worker #ifdef WINDOWS_TIMER 159*495ae853SAndroid Build Coastguard Worker #define GETTIME(timer) QueryPerformanceCounter(timer); 160*495ae853SAndroid Build Coastguard Worker #else 161*495ae853SAndroid Build Coastguard Worker //#ifdef X86_MINGW 162*495ae853SAndroid Build Coastguard Worker #define GETTIME(timer) gettimeofday(timer,NULL); 163*495ae853SAndroid Build Coastguard Worker //#endif 164*495ae853SAndroid Build Coastguard Worker #endif 165*495ae853SAndroid Build Coastguard Worker 166*495ae853SAndroid Build Coastguard Worker #ifdef WINDOWS_TIMER 167*495ae853SAndroid Build Coastguard Worker #define ELAPSEDTIME(s_start_timer,s_end_timer, s_elapsed_time, frequency) \ 168*495ae853SAndroid Build Coastguard Worker { \ 169*495ae853SAndroid Build Coastguard Worker TIMER s_temp_time; \ 170*495ae853SAndroid Build Coastguard Worker s_temp_time.LowPart = s_end_timer.LowPart - s_start_timer.LowPart ; \ 171*495ae853SAndroid Build Coastguard Worker s_elapsed_time = (UWORD32) ( ((DOUBLE)s_temp_time.LowPart / (DOUBLE)frequency.LowPart ) * 1000000); \ 172*495ae853SAndroid Build Coastguard Worker } 173*495ae853SAndroid Build Coastguard Worker #else 174*495ae853SAndroid Build Coastguard Worker //#ifdef X86_MINGW 175*495ae853SAndroid Build Coastguard Worker #define ELAPSEDTIME(s_start_timer,s_end_timer, s_elapsed_time, frequency) \ 176*495ae853SAndroid Build Coastguard Worker s_elapsed_time = ((s_end_timer.tv_sec - s_start_timer.tv_sec) * 1000000) + (s_end_timer.tv_usec - s_start_timer.tv_usec); 177*495ae853SAndroid Build Coastguard Worker //#endif 178*495ae853SAndroid Build Coastguard Worker #endif 179*495ae853SAndroid Build Coastguard Worker 180*495ae853SAndroid Build Coastguard Worker #else 181*495ae853SAndroid Build Coastguard Worker #define GETTIME(timer) 182*495ae853SAndroid Build Coastguard Worker #define ELAPSEDTIME(s_start_timer,s_end_timer, s_elapsed_time, frequency) 183*495ae853SAndroid Build Coastguard Worker #endif 184*495ae853SAndroid Build Coastguard Worker 185*495ae853SAndroid Build Coastguard Worker 186*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 187*495ae853SAndroid Build Coastguard Worker /* Structure definitions */ 188*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 189*495ae853SAndroid Build Coastguard Worker 190*495ae853SAndroid Build Coastguard Worker /** 191*495ae853SAndroid Build Coastguard Worker ************************************************************************** 192*495ae853SAndroid Build Coastguard Worker * @brief input buffer context 193*495ae853SAndroid Build Coastguard Worker ************************************************************************** 194*495ae853SAndroid Build Coastguard Worker */ 195*495ae853SAndroid Build Coastguard Worker typedef struct 196*495ae853SAndroid Build Coastguard Worker { 197*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_buf; 198*495ae853SAndroid Build Coastguard Worker UWORD32 u4_buf_size; 199*495ae853SAndroid Build Coastguard Worker UWORD32 u4_timestamp_low; 200*495ae853SAndroid Build Coastguard Worker UWORD32 u4_timestamp_high; 201*495ae853SAndroid Build Coastguard Worker UWORD32 u4_is_free; 202*495ae853SAndroid Build Coastguard Worker void *pv_mb_info; 203*495ae853SAndroid Build Coastguard Worker void *pv_pic_info; 204*495ae853SAndroid Build Coastguard Worker } input_buf_t; 205*495ae853SAndroid Build Coastguard Worker 206*495ae853SAndroid Build Coastguard Worker /** 207*495ae853SAndroid Build Coastguard Worker ************************************************************************** 208*495ae853SAndroid Build Coastguard Worker * @brief output buffer context 209*495ae853SAndroid Build Coastguard Worker ************************************************************************** 210*495ae853SAndroid Build Coastguard Worker */ 211*495ae853SAndroid Build Coastguard Worker typedef struct 212*495ae853SAndroid Build Coastguard Worker { 213*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_buf; 214*495ae853SAndroid Build Coastguard Worker UWORD32 u4_buf_size; 215*495ae853SAndroid Build Coastguard Worker UWORD32 u4_timestamp_low; 216*495ae853SAndroid Build Coastguard Worker UWORD32 u4_timestamp_high; 217*495ae853SAndroid Build Coastguard Worker UWORD32 u4_is_free; 218*495ae853SAndroid Build Coastguard Worker } output_buf_t; 219*495ae853SAndroid Build Coastguard Worker 220*495ae853SAndroid Build Coastguard Worker /** 221*495ae853SAndroid Build Coastguard Worker ************************************************************************** 222*495ae853SAndroid Build Coastguard Worker * @brief recon buffer context 223*495ae853SAndroid Build Coastguard Worker ************************************************************************** 224*495ae853SAndroid Build Coastguard Worker */ 225*495ae853SAndroid Build Coastguard Worker typedef struct 226*495ae853SAndroid Build Coastguard Worker { 227*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_buf; 228*495ae853SAndroid Build Coastguard Worker UWORD32 u4_buf_size; 229*495ae853SAndroid Build Coastguard Worker UWORD32 u4_timestamp_low; 230*495ae853SAndroid Build Coastguard Worker UWORD32 u4_timestamp_high; 231*495ae853SAndroid Build Coastguard Worker UWORD32 u4_is_free; 232*495ae853SAndroid Build Coastguard Worker } recon_buf_t; 233*495ae853SAndroid Build Coastguard Worker 234*495ae853SAndroid Build Coastguard Worker /** 235*495ae853SAndroid Build Coastguard Worker ************************************************************************** 236*495ae853SAndroid Build Coastguard Worker * @brief app context 237*495ae853SAndroid Build Coastguard Worker ************************************************************************** 238*495ae853SAndroid Build Coastguard Worker */ 239*495ae853SAndroid Build Coastguard Worker typedef struct 240*495ae853SAndroid Build Coastguard Worker { 241*495ae853SAndroid Build Coastguard Worker iv_obj_t *ps_enc; 242*495ae853SAndroid Build Coastguard Worker iv_mem_rec_t *ps_mem_rec; 243*495ae853SAndroid Build Coastguard Worker UWORD32 u4_num_mem_rec; 244*495ae853SAndroid Build Coastguard Worker UWORD32 u4_recon_enable; 245*495ae853SAndroid Build Coastguard Worker UWORD32 u4_chksum_enable; 246*495ae853SAndroid Build Coastguard Worker UWORD32 u4_mb_info_type; 247*495ae853SAndroid Build Coastguard Worker UWORD32 u4_pic_info_type; 248*495ae853SAndroid Build Coastguard Worker UWORD32 u4_mb_info_size; 249*495ae853SAndroid Build Coastguard Worker UWORD32 u4_pic_info_size; 250*495ae853SAndroid Build Coastguard Worker UWORD32 u4_start_frm; 251*495ae853SAndroid Build Coastguard Worker UWORD32 u4_max_num_frms; 252*495ae853SAndroid Build Coastguard Worker UWORD32 u4_total_bytes; 253*495ae853SAndroid Build Coastguard Worker UWORD32 u4_pics_cnt; 254*495ae853SAndroid Build Coastguard Worker IV_COLOR_FORMAT_T e_inp_color_fmt; 255*495ae853SAndroid Build Coastguard Worker IV_COLOR_FORMAT_T e_recon_color_fmt; 256*495ae853SAndroid Build Coastguard Worker IV_ARCH_T e_arch; 257*495ae853SAndroid Build Coastguard Worker IV_SOC_T e_soc; 258*495ae853SAndroid Build Coastguard Worker 259*495ae853SAndroid Build Coastguard Worker WORD32 header_generated; 260*495ae853SAndroid Build Coastguard Worker void *pv_codec_obj; 261*495ae853SAndroid Build Coastguard Worker 262*495ae853SAndroid Build Coastguard Worker UWORD32 u4_num_cores; 263*495ae853SAndroid Build Coastguard Worker UWORD32 u4_pre_enc_me; 264*495ae853SAndroid Build Coastguard Worker UWORD32 u4_pre_enc_ipe; 265*495ae853SAndroid Build Coastguard Worker 266*495ae853SAndroid Build Coastguard Worker CHAR ac_ip_fname[STRLENGTH]; 267*495ae853SAndroid Build Coastguard Worker CHAR ac_op_fname[STRLENGTH]; 268*495ae853SAndroid Build Coastguard Worker CHAR ac_recon_fname[STRLENGTH]; 269*495ae853SAndroid Build Coastguard Worker CHAR ac_chksum_fname[STRLENGTH]; 270*495ae853SAndroid Build Coastguard Worker CHAR ac_mb_info_fname[STRLENGTH]; 271*495ae853SAndroid Build Coastguard Worker CHAR ac_pic_info_fname[STRLENGTH]; 272*495ae853SAndroid Build Coastguard Worker 273*495ae853SAndroid Build Coastguard Worker FILE *fp_ip; 274*495ae853SAndroid Build Coastguard Worker FILE *fp_op; 275*495ae853SAndroid Build Coastguard Worker FILE *fp_recon; 276*495ae853SAndroid Build Coastguard Worker FILE *fp_chksum; 277*495ae853SAndroid Build Coastguard Worker FILE *fp_psnr_ip; 278*495ae853SAndroid Build Coastguard Worker FILE *fp_mb_info; 279*495ae853SAndroid Build Coastguard Worker FILE *fp_pic_info; 280*495ae853SAndroid Build Coastguard Worker 281*495ae853SAndroid Build Coastguard Worker UWORD32 u4_loopback; 282*495ae853SAndroid Build Coastguard Worker UWORD32 u4_max_frame_rate; 283*495ae853SAndroid Build Coastguard Worker UWORD32 u4_src_frame_rate; 284*495ae853SAndroid Build Coastguard Worker UWORD32 u4_tgt_frame_rate; 285*495ae853SAndroid Build Coastguard Worker UWORD32 u4_max_wd; 286*495ae853SAndroid Build Coastguard Worker UWORD32 u4_max_ht; 287*495ae853SAndroid Build Coastguard Worker UWORD32 u4_max_level; 288*495ae853SAndroid Build Coastguard Worker 289*495ae853SAndroid Build Coastguard Worker UWORD32 u4_strd; 290*495ae853SAndroid Build Coastguard Worker UWORD32 u4_wd; 291*495ae853SAndroid Build Coastguard Worker UWORD32 u4_ht; 292*495ae853SAndroid Build Coastguard Worker 293*495ae853SAndroid Build Coastguard Worker UWORD32 u4_psnr_enable; 294*495ae853SAndroid Build Coastguard Worker 295*495ae853SAndroid Build Coastguard Worker UWORD32 u4_enc_speed; 296*495ae853SAndroid Build Coastguard Worker UWORD32 u4_me_speed; 297*495ae853SAndroid Build Coastguard Worker UWORD32 u4_enable_fast_sad; 298*495ae853SAndroid Build Coastguard Worker UWORD32 u4_enable_alt_ref; 299*495ae853SAndroid Build Coastguard Worker UWORD32 u4_rc; 300*495ae853SAndroid Build Coastguard Worker UWORD32 u4_max_bitrate; 301*495ae853SAndroid Build Coastguard Worker UWORD32 u4_bitrate; 302*495ae853SAndroid Build Coastguard Worker UWORD32 u4_i_qp, u4_i_qp_max, u4_i_qp_min; 303*495ae853SAndroid Build Coastguard Worker UWORD32 u4_p_qp, u4_p_qp_max, u4_p_qp_min; 304*495ae853SAndroid Build Coastguard Worker UWORD32 u4_b_qp, u4_b_qp_max, u4_b_qp_min; 305*495ae853SAndroid Build Coastguard Worker UWORD32 u4_air; 306*495ae853SAndroid Build Coastguard Worker UWORD32 u4_air_refresh_period; 307*495ae853SAndroid Build Coastguard Worker UWORD32 u4_srch_rng_x; 308*495ae853SAndroid Build Coastguard Worker UWORD32 u4_srch_rng_y; 309*495ae853SAndroid Build Coastguard Worker UWORD32 u4_i_interval; 310*495ae853SAndroid Build Coastguard Worker UWORD32 u4_idr_interval; 311*495ae853SAndroid Build Coastguard Worker UWORD32 u4_constrained_intra_pred; 312*495ae853SAndroid Build Coastguard Worker UWORD32 u4_num_bframes; 313*495ae853SAndroid Build Coastguard Worker UWORD32 u4_disable_deblk_level; 314*495ae853SAndroid Build Coastguard Worker UWORD32 u4_hpel; 315*495ae853SAndroid Build Coastguard Worker UWORD32 u4_qpel; 316*495ae853SAndroid Build Coastguard Worker UWORD32 u4_enable_intra_4x4; 317*495ae853SAndroid Build Coastguard Worker IV_PROFILE_T e_profile; 318*495ae853SAndroid Build Coastguard Worker UWORD32 u4_slice_mode; 319*495ae853SAndroid Build Coastguard Worker UWORD32 u4_slice_param; 320*495ae853SAndroid Build Coastguard Worker UWORD32 u4_entropy_coding_mode; 321*495ae853SAndroid Build Coastguard Worker 322*495ae853SAndroid Build Coastguard Worker void *pv_input_thread_handle; 323*495ae853SAndroid Build Coastguard Worker void *pv_output_thread_handle; 324*495ae853SAndroid Build Coastguard Worker void *pv_recon_thread_handle; 325*495ae853SAndroid Build Coastguard Worker 326*495ae853SAndroid Build Coastguard Worker ih264e_ctl_getbufinfo_op_t s_get_buf_info_op; 327*495ae853SAndroid Build Coastguard Worker input_buf_t as_input_buf[DEFAULT_MAX_INPUT_BUFS]; 328*495ae853SAndroid Build Coastguard Worker output_buf_t as_output_buf[DEFAULT_MAX_OUTPUT_BUFS]; 329*495ae853SAndroid Build Coastguard Worker recon_buf_t as_recon_buf[DEFAULT_MAX_RECON_BUFS]; 330*495ae853SAndroid Build Coastguard Worker 331*495ae853SAndroid Build Coastguard Worker DOUBLE adbl_psnr[3]; 332*495ae853SAndroid Build Coastguard Worker UWORD32 u4_psnr_cnt; 333*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_psnr_buf; 334*495ae853SAndroid Build Coastguard Worker UWORD8 u4_psnr_buf_size; 335*495ae853SAndroid Build Coastguard Worker 336*495ae853SAndroid Build Coastguard Worker UWORD32 u4_vbv_buffer_delay; 337*495ae853SAndroid Build Coastguard Worker UWORD32 u4_vbv_buf_size; 338*495ae853SAndroid Build Coastguard Worker 339*495ae853SAndroid Build Coastguard Worker TIMER enc_start_time; 340*495ae853SAndroid Build Coastguard Worker TIMER enc_last_time; 341*495ae853SAndroid Build Coastguard Worker WORD32 avg_time; 342*495ae853SAndroid Build Coastguard Worker 343*495ae853SAndroid Build Coastguard Worker UWORD32 u4_sei_mdcv_params_present_flag; 344*495ae853SAndroid Build Coastguard Worker UWORD32 au4_display_primaries_x[NUM_SEI_MDCV_PRIMARIES]; 345*495ae853SAndroid Build Coastguard Worker UWORD32 au4_display_primaries_y[NUM_SEI_MDCV_PRIMARIES]; 346*495ae853SAndroid Build Coastguard Worker UWORD32 u4_white_point_x; 347*495ae853SAndroid Build Coastguard Worker UWORD32 u4_white_point_y; 348*495ae853SAndroid Build Coastguard Worker UWORD32 u4_max_display_mastering_luminance; 349*495ae853SAndroid Build Coastguard Worker UWORD32 u4_min_display_mastering_luminance; 350*495ae853SAndroid Build Coastguard Worker 351*495ae853SAndroid Build Coastguard Worker UWORD32 u4_sei_cll_params_present_flag; 352*495ae853SAndroid Build Coastguard Worker UWORD32 u4_max_content_light_level; 353*495ae853SAndroid Build Coastguard Worker UWORD32 u4_max_pic_average_light_level; 354*495ae853SAndroid Build Coastguard Worker 355*495ae853SAndroid Build Coastguard Worker UWORD32 u4_sei_ave_params_present_flag; 356*495ae853SAndroid Build Coastguard Worker UWORD32 u4_ambient_illuminance; 357*495ae853SAndroid Build Coastguard Worker UWORD32 u4_ambient_light_x; 358*495ae853SAndroid Build Coastguard Worker UWORD32 u4_ambient_light_y; 359*495ae853SAndroid Build Coastguard Worker 360*495ae853SAndroid Build Coastguard Worker UWORD32 u4_sei_ccv_params_present_flag; 361*495ae853SAndroid Build Coastguard Worker UWORD32 u4_ccv_cancel_flag; 362*495ae853SAndroid Build Coastguard Worker UWORD32 u4_ccv_persistence_flag; 363*495ae853SAndroid Build Coastguard Worker UWORD32 u4_ccv_primaries_present_flag; 364*495ae853SAndroid Build Coastguard Worker UWORD32 u4_ccv_min_luminance_value_present_flag; 365*495ae853SAndroid Build Coastguard Worker UWORD32 u4_ccv_max_luminance_value_present_flag; 366*495ae853SAndroid Build Coastguard Worker UWORD32 u4_ccv_avg_luminance_value_present_flag; 367*495ae853SAndroid Build Coastguard Worker UWORD32 u4_ccv_reserved_zero_2bits; 368*495ae853SAndroid Build Coastguard Worker WORD32 ai4_ccv_primaries_x[NUM_SEI_CCV_PRIMARIES]; 369*495ae853SAndroid Build Coastguard Worker WORD32 ai4_ccv_primaries_y[NUM_SEI_CCV_PRIMARIES]; 370*495ae853SAndroid Build Coastguard Worker UWORD32 u4_ccv_min_luminance_value; 371*495ae853SAndroid Build Coastguard Worker UWORD32 u4_ccv_max_luminance_value; 372*495ae853SAndroid Build Coastguard Worker UWORD32 u4_ccv_avg_luminance_value; 373*495ae853SAndroid Build Coastguard Worker 374*495ae853SAndroid Build Coastguard Worker UWORD32 u4_shutter_interval_info_present_flag; 375*495ae853SAndroid Build Coastguard Worker UWORD32 u4_sii_sub_layer_idx; 376*495ae853SAndroid Build Coastguard Worker UWORD32 u4_sii_time_scale; 377*495ae853SAndroid Build Coastguard Worker UWORD32 u4_fixed_shutter_interval_within_cvs_flag; 378*495ae853SAndroid Build Coastguard Worker UWORD32 u4_sii_num_units_in_shutter_interval; 379*495ae853SAndroid Build Coastguard Worker UWORD32 u4_sii_max_sub_layers_minus1; 380*495ae853SAndroid Build Coastguard Worker UWORD32 au4_sub_layer_num_units_in_shutter_interval[SII_MAX_SUB_LAYERS]; 381*495ae853SAndroid Build Coastguard Worker 382*495ae853SAndroid Build Coastguard Worker ih264e_ctl_set_sei_mdcv_params_ip_t s_sei_mdcv_params; 383*495ae853SAndroid Build Coastguard Worker ih264e_ctl_set_sei_cll_params_ip_t s_sei_cll_params; 384*495ae853SAndroid Build Coastguard Worker ih264e_ctl_set_sei_ave_params_ip_t s_sei_ave_params; 385*495ae853SAndroid Build Coastguard Worker ih264e_ctl_set_sei_sii_params_ip_t s_sei_sii_params; 386*495ae853SAndroid Build Coastguard Worker 387*495ae853SAndroid Build Coastguard Worker } app_ctxt_t; 388*495ae853SAndroid Build Coastguard Worker 389*495ae853SAndroid Build Coastguard Worker 390*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 391*495ae853SAndroid Build Coastguard Worker /* Function Declarations */ 392*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 393*495ae853SAndroid Build Coastguard Worker void codec_exit(CHAR *pc_err_message); 394*495ae853SAndroid Build Coastguard Worker void allocate_input(app_ctxt_t *ps_app_ctxt); 395*495ae853SAndroid Build Coastguard Worker void allocate_output(app_ctxt_t *ps_app_ctxt); 396*495ae853SAndroid Build Coastguard Worker void allocate_recon(app_ctxt_t *ps_app_ctxt); 397*495ae853SAndroid Build Coastguard Worker 398*495ae853SAndroid Build Coastguard Worker IV_STATUS_T read_input(FILE *fp, iv_raw_buf_t *ps_raw_buf); 399*495ae853SAndroid Build Coastguard Worker IV_STATUS_T write_recon(FILE *fp, iv_raw_buf_t *ps_raw_buf); 400*495ae853SAndroid Build Coastguard Worker IV_STATUS_T write_output(FILE *fp, UWORD8 *pu1_buf, WORD32 num_bytes); 401*495ae853SAndroid Build Coastguard Worker 402*495ae853SAndroid Build Coastguard Worker IV_STATUS_T read_mb_info(app_ctxt_t *ps_app_ctxt, void *pv_mb_info); 403*495ae853SAndroid Build Coastguard Worker IV_STATUS_T read_pic_info(app_ctxt_t *ps_app_ctxt, void *pv_pic_info); 404*495ae853SAndroid Build Coastguard Worker 405*495ae853SAndroid Build Coastguard Worker void * ih264a_aligned_malloc(WORD32 alignment, WORD32 size); 406*495ae853SAndroid Build Coastguard Worker void ih264a_aligned_free(void *pv_buf); 407*495ae853SAndroid Build Coastguard Worker 408*495ae853SAndroid Build Coastguard Worker void free_input(app_ctxt_t *ps_app_ctxt); 409*495ae853SAndroid Build Coastguard Worker void free_recon(app_ctxt_t *ps_app_ctxt); 410*495ae853SAndroid Build Coastguard Worker void free_output(app_ctxt_t *ps_app_ctxt); 411*495ae853SAndroid Build Coastguard Worker 412*495ae853SAndroid Build Coastguard Worker void init_raw_buf_descr(app_ctxt_t *ps_app_ctxt, 413*495ae853SAndroid Build Coastguard Worker iv_raw_buf_t *ps_raw_buf, 414*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_buf, 415*495ae853SAndroid Build Coastguard Worker IV_COLOR_FORMAT_T e_color_fmt); 416*495ae853SAndroid Build Coastguard Worker 417*495ae853SAndroid Build Coastguard Worker #ifndef MD5_DISABLE 418*495ae853SAndroid Build Coastguard Worker void calc_md5_cksum(UWORD8 *pu1_inbuf, 419*495ae853SAndroid Build Coastguard Worker UWORD32 u4_stride, 420*495ae853SAndroid Build Coastguard Worker UWORD32 u4_width, 421*495ae853SAndroid Build Coastguard Worker UWORD32 u4_height, 422*495ae853SAndroid Build Coastguard Worker UWORD8 *pu1_cksum_p); 423*495ae853SAndroid Build Coastguard Worker #else 424*495ae853SAndroid Build Coastguard Worker #define calc_md5_cksum(a, b, c, d, e) 425*495ae853SAndroid Build Coastguard Worker #endif 426*495ae853SAndroid Build Coastguard Worker 427*495ae853SAndroid Build Coastguard Worker #endif /* _APP_H_ */ 428