1*c83a76b0SSuyog Pawar /****************************************************************************** 2*c83a76b0SSuyog Pawar * 3*c83a76b0SSuyog Pawar * Copyright (C) 2018 The Android Open Source Project 4*c83a76b0SSuyog Pawar * 5*c83a76b0SSuyog Pawar * Licensed under the Apache License, Version 2.0 (the "License"); 6*c83a76b0SSuyog Pawar * you may not use this file except in compliance with the License. 7*c83a76b0SSuyog Pawar * You may obtain a copy of the License at: 8*c83a76b0SSuyog Pawar * 9*c83a76b0SSuyog Pawar * http://www.apache.org/licenses/LICENSE-2.0 10*c83a76b0SSuyog Pawar * 11*c83a76b0SSuyog Pawar * Unless required by applicable law or agreed to in writing, software 12*c83a76b0SSuyog Pawar * distributed under the License is distributed on an "AS IS" BASIS, 13*c83a76b0SSuyog Pawar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*c83a76b0SSuyog Pawar * See the License for the specific language governing permissions and 15*c83a76b0SSuyog Pawar * limitations under the License. 16*c83a76b0SSuyog Pawar * 17*c83a76b0SSuyog Pawar ***************************************************************************** 18*c83a76b0SSuyog Pawar * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19*c83a76b0SSuyog Pawar */ 20*c83a76b0SSuyog Pawar 21*c83a76b0SSuyog Pawar /** 22*c83a76b0SSuyog Pawar ******************************************************************************* 23*c83a76b0SSuyog Pawar * @file 24*c83a76b0SSuyog Pawar * app.h 25*c83a76b0SSuyog Pawar * 26*c83a76b0SSuyog Pawar * @brief 27*c83a76b0SSuyog Pawar * This file contains all the necessary structure and enumeration definitions 28*c83a76b0SSuyog Pawar * needed for the Application 29*c83a76b0SSuyog Pawar * 30*c83a76b0SSuyog Pawar * @author 31*c83a76b0SSuyog Pawar * ittiam 32*c83a76b0SSuyog Pawar * 33*c83a76b0SSuyog Pawar * @remarks 34*c83a76b0SSuyog Pawar * none 35*c83a76b0SSuyog Pawar * 36*c83a76b0SSuyog Pawar ******************************************************************************* 37*c83a76b0SSuyog Pawar */ 38*c83a76b0SSuyog Pawar 39*c83a76b0SSuyog Pawar #ifndef _APP_H_ 40*c83a76b0SSuyog Pawar #define _APP_H_ 41*c83a76b0SSuyog Pawar 42*c83a76b0SSuyog Pawar /*****************************************************************************/ 43*c83a76b0SSuyog Pawar /* Function Macros */ 44*c83a76b0SSuyog Pawar /*****************************************************************************/ 45*c83a76b0SSuyog Pawar #define MAX(a, b) ((a) > (b)) ? (a) : (b) 46*c83a76b0SSuyog Pawar #define MIN(a, b) ((a) < (b)) ? (a) : (b) 47*c83a76b0SSuyog Pawar 48*c83a76b0SSuyog Pawar #define STR_LEN 512 49*c83a76b0SSuyog Pawar 50*c83a76b0SSuyog Pawar /*****************************************************************************/ 51*c83a76b0SSuyog Pawar /* Enums */ 52*c83a76b0SSuyog Pawar /*****************************************************************************/ 53*c83a76b0SSuyog Pawar typedef enum 54*c83a76b0SSuyog Pawar { 55*c83a76b0SSuyog Pawar INVALID, 56*c83a76b0SSuyog Pawar HELP, 57*c83a76b0SSuyog Pawar VERSION, 58*c83a76b0SSuyog Pawar INPUT_YUV, 59*c83a76b0SSuyog Pawar OUTPUT, 60*c83a76b0SSuyog Pawar STAT_FILE, 61*c83a76b0SSuyog Pawar STAT_FILE_BLK, 62*c83a76b0SSuyog Pawar SAVE_RECON, 63*c83a76b0SSuyog Pawar RECON_YUV, 64*c83a76b0SSuyog Pawar NUM_FRAMES_TO_ENCODE, 65*c83a76b0SSuyog Pawar START_FRM_OFFSET, 66*c83a76b0SSuyog Pawar LOG_DUMP_LEVEL, 67*c83a76b0SSuyog Pawar PERF_MODE, 68*c83a76b0SSuyog Pawar ENABLE_CSV_DUMP, 69*c83a76b0SSuyog Pawar CSV_FILE_PATH, 70*c83a76b0SSuyog Pawar ENABLE_LOOPBACK, 71*c83a76b0SSuyog Pawar ENABLE_LOGO, 72*c83a76b0SSuyog Pawar RES_CHNG_INTRVL, 73*c83a76b0SSuyog Pawar SRC_WIDTH, 74*c83a76b0SSuyog Pawar SRC_HEIGHT, 75*c83a76b0SSuyog Pawar SRC_FRAME_RATE_NUM, 76*c83a76b0SSuyog Pawar SRC_FRAME_RATE_DENOM, 77*c83a76b0SSuyog Pawar SRC_INTERLACED, 78*c83a76b0SSuyog Pawar INPUT_CHROMA_FORMAT, 79*c83a76b0SSuyog Pawar INPUT_BIT_DEPTH, 80*c83a76b0SSuyog Pawar TOPFIELD_FIRST, 81*c83a76b0SSuyog Pawar NUM_RESOLUTIONS, 82*c83a76b0SSuyog Pawar MRES_SINGLE_OUT, 83*c83a76b0SSuyog Pawar START_RES_ID, 84*c83a76b0SSuyog Pawar MBR_QUALITY_SETTING, 85*c83a76b0SSuyog Pawar TGT_WIDTH, 86*c83a76b0SSuyog Pawar TGT_HEIGHT, 87*c83a76b0SSuyog Pawar CODEC_LEVEL, 88*c83a76b0SSuyog Pawar NUM_BITRATES, 89*c83a76b0SSuyog Pawar TGT_BITRATE, 90*c83a76b0SSuyog Pawar FRAME_QP, 91*c83a76b0SSuyog Pawar OUTPUT_BIT_DEPTH, 92*c83a76b0SSuyog Pawar ENABLE_TEMPORAL_SCALABILITY, 93*c83a76b0SSuyog Pawar MAX_CLOSED_GOP_PERIOD, 94*c83a76b0SSuyog Pawar MIN_CLOSED_GOP_PERIOD, 95*c83a76b0SSuyog Pawar MAX_CRA_OPEN_GOP_PERIOD, 96*c83a76b0SSuyog Pawar MAX_I_OPEN_GOP_PERIOD, 97*c83a76b0SSuyog Pawar MAX_TEMPORAL_LAYERS, 98*c83a76b0SSuyog Pawar QUALITY_PRESET, 99*c83a76b0SSuyog Pawar DEBLOCKING_TYPE, 100*c83a76b0SSuyog Pawar USE_DEFAULT_SC_MTX, 101*c83a76b0SSuyog Pawar ENABLE_ENTROPY_SYNC, 102*c83a76b0SSuyog Pawar MAX_TR_TREE_DEPTH_I, 103*c83a76b0SSuyog Pawar MAX_TR_TREE_DEPTH_NI, 104*c83a76b0SSuyog Pawar MAX_SEARCH_RANGE_HORZ, 105*c83a76b0SSuyog Pawar MAX_SEARCH_RANGE_VERT, 106*c83a76b0SSuyog Pawar VISUAL_QUALITY_ENHANCEMENTS_TOGGLER, 107*c83a76b0SSuyog Pawar ARCH_TYPE, 108*c83a76b0SSuyog Pawar NUM_CORES, 109*c83a76b0SSuyog Pawar ENABLE_THREAD_AFFINITY, 110*c83a76b0SSuyog Pawar RATE_CONTROL_MODE, 111*c83a76b0SSuyog Pawar CU_LEVEL_RC, 112*c83a76b0SSuyog Pawar PASS, 113*c83a76b0SSuyog Pawar MAX_VBV_BUFFER_SIZE, 114*c83a76b0SSuyog Pawar PEAK_BITRATE, 115*c83a76b0SSuyog Pawar RATE_FACTOR, 116*c83a76b0SSuyog Pawar VBR_MAX_PEAK_RATE_DUR, 117*c83a76b0SSuyog Pawar MAX_FRAME_QP, 118*c83a76b0SSuyog Pawar MIN_FRAME_QP, 119*c83a76b0SSuyog Pawar ENABLE_LOOK_AHEAD, 120*c83a76b0SSuyog Pawar RC_LOOK_AHEAD_PICS, 121*c83a76b0SSuyog Pawar ENABLE_WEIGHTED_PREDICTION, 122*c83a76b0SSuyog Pawar CODEC_TYPE, 123*c83a76b0SSuyog Pawar CODEC_PROFILE, 124*c83a76b0SSuyog Pawar CODEC_TIER, 125*c83a76b0SSuyog Pawar AUD_ENABLE_FLAGS, 126*c83a76b0SSuyog Pawar INTEROP_FLAGS, 127*c83a76b0SSuyog Pawar SPS_AT_CDR_ENABLE, 128*c83a76b0SSuyog Pawar SEI_VUI_INFO_CFG, 129*c83a76b0SSuyog Pawar VUI_ENABLE, 130*c83a76b0SSuyog Pawar SEI_ENABLE_FLAGS, 131*c83a76b0SSuyog Pawar SEI_PAYLOAD_ENABLE_FLAGS, 132*c83a76b0SSuyog Pawar SEI_PAYLOAD_PATH, 133*c83a76b0SSuyog Pawar FORCE_IDR_LOCS_ENABLE, 134*c83a76b0SSuyog Pawar FORCE_IDR_LOCS_FILENAME, 135*c83a76b0SSuyog Pawar SEI_BUFFER_PERIOD_FLAGS, 136*c83a76b0SSuyog Pawar SEI_PIC_TIMING_FLAGS, 137*c83a76b0SSuyog Pawar SEI_RECOVERY_POINT_FLAGS, 138*c83a76b0SSuyog Pawar SEI_HASH_FLAGS, 139*c83a76b0SSuyog Pawar SEI_MASTERING_DISP_COLOUR_VOL_FLAGS, 140*c83a76b0SSuyog Pawar DISPLAY_PRIMARIES_X, 141*c83a76b0SSuyog Pawar DISPLAY_PRIMARIES_Y, 142*c83a76b0SSuyog Pawar WHITE_POINT_X, 143*c83a76b0SSuyog Pawar WHITE_POINT_Y, 144*c83a76b0SSuyog Pawar MAX_DISPLAY_MASTERING_LUMINANCE, 145*c83a76b0SSuyog Pawar MIN_DISPLAY_MASTERING_LUMINANCE, 146*c83a76b0SSuyog Pawar SEI_CLL_INFO_ENABLE, 147*c83a76b0SSuyog Pawar SEI_MAX_CLL, 148*c83a76b0SSuyog Pawar SEI_AVG_CLL, 149*c83a76b0SSuyog Pawar TILES_ENABLED_FLAG, 150*c83a76b0SSuyog Pawar UNIFORM_SPACING_FLAG, 151*c83a76b0SSuyog Pawar NUM_TILE_COLS, 152*c83a76b0SSuyog Pawar NUM_TILE_ROWS, 153*c83a76b0SSuyog Pawar COLUMN_WIDTH_ARRAY, 154*c83a76b0SSuyog Pawar ROW_HEIGHT_ARRAY, 155*c83a76b0SSuyog Pawar SLICE_SEGMENT_MODE, 156*c83a76b0SSuyog Pawar SLICE_SEGMENT_ARGUMENT, 157*c83a76b0SSuyog Pawar ASPECT_RATIO_INFO_PRESENT_FLAG, 158*c83a76b0SSuyog Pawar ASPECT_RATIO_IDC, 159*c83a76b0SSuyog Pawar SAR_WIDTH, 160*c83a76b0SSuyog Pawar SAR_HEIGHT, 161*c83a76b0SSuyog Pawar OVERSCAN_INFO_PRESENT_FLAG, 162*c83a76b0SSuyog Pawar OVERSCAN_APPROPRIATE_FLAG, 163*c83a76b0SSuyog Pawar VIDEO_SIGNAL_TYPE_PRESENT_FLAG, 164*c83a76b0SSuyog Pawar VIDEO_FORMAT, 165*c83a76b0SSuyog Pawar VIDEO_FULL_RANGE_FLAG, 166*c83a76b0SSuyog Pawar COLOUR_DESCRIPTION_PRESENT_FLAG, 167*c83a76b0SSuyog Pawar COLOUR_PRIMARIES, 168*c83a76b0SSuyog Pawar TRANSFER_CHARACTERISTICS, 169*c83a76b0SSuyog Pawar MATRIX_COEFFICIENTS, 170*c83a76b0SSuyog Pawar CHROMA_LOC_INFO_PRESENT_FLAG, 171*c83a76b0SSuyog Pawar CHROMA_SAMPLE_LOC_TYPE_TOP_FIELD, 172*c83a76b0SSuyog Pawar CHROMA_SAMPLE_LOC_TYPE_BOTTOM_FIELD, 173*c83a76b0SSuyog Pawar TIMING_INFO_PRESENT_FLAG, 174*c83a76b0SSuyog Pawar VUI_HRD_PARAMETERS_PRESENT_FLAG, 175*c83a76b0SSuyog Pawar NAL_HRD_PARAMETERS_PRESENT_FLAG, 176*c83a76b0SSuyog Pawar CONFIG, 177*c83a76b0SSuyog Pawar GRPINFO 178*c83a76b0SSuyog Pawar } ARGUMENT_T; 179*c83a76b0SSuyog Pawar 180*c83a76b0SSuyog Pawar /*****************************************************************************/ 181*c83a76b0SSuyog Pawar /* Structure definitions */ 182*c83a76b0SSuyog Pawar /*****************************************************************************/ 183*c83a76b0SSuyog Pawar 184*c83a76b0SSuyog Pawar typedef struct 185*c83a76b0SSuyog Pawar { 186*c83a76b0SSuyog Pawar void *ihevceHdl; 187*c83a76b0SSuyog Pawar 188*c83a76b0SSuyog Pawar char au1_in_file[STR_LEN]; /*!< input yuv file name 189*c83a76b0SSuyog Pawar */ 190*c83a76b0SSuyog Pawar char au1_out_file[IHEVCE_MAX_NUM_RESOLUTIONS][IHEVCE_MAX_NUM_BITRATES] 191*c83a76b0SSuyog Pawar [STR_LEN]; /*!< output bitstream filename 192*c83a76b0SSuyog Pawar */ 193*c83a76b0SSuyog Pawar char au1_recon_file[IHEVCE_MAX_NUM_RESOLUTIONS][IHEVCE_MAX_NUM_BITRATES] 194*c83a76b0SSuyog Pawar [STR_LEN]; /*!< Recon yuv filename 195*c83a76b0SSuyog Pawar */ 196*c83a76b0SSuyog Pawar char au1_stat_file[IHEVCE_MAX_NUM_RESOLUTIONS][IHEVCE_MAX_NUM_BITRATES] 197*c83a76b0SSuyog Pawar [STR_LEN]; /*!< stat filename from pass1 198*c83a76b0SSuyog Pawar */ 199*c83a76b0SSuyog Pawar char au1_stat_blk_file[IHEVCE_MAX_NUM_RESOLUTIONS][IHEVCE_MAX_NUM_BITRATES] 200*c83a76b0SSuyog Pawar [STR_LEN]; /*!< stat filename from pass1 201*c83a76b0SSuyog Pawar */ 202*c83a76b0SSuyog Pawar char au1_csv_file[IHEVCE_MAX_NUM_RESOLUTIONS][IHEVCE_MAX_NUM_BITRATES][STR_LEN]; 203*c83a76b0SSuyog Pawar 204*c83a76b0SSuyog Pawar ihevce_static_cfg_params_t s_static_cfg_prms; 205*c83a76b0SSuyog Pawar 206*c83a76b0SSuyog Pawar char ai1_sei_payload_path[STR_LEN]; 207*c83a76b0SSuyog Pawar 208*c83a76b0SSuyog Pawar } appl_ctxt_t; 209*c83a76b0SSuyog Pawar 210*c83a76b0SSuyog Pawar typedef struct 211*c83a76b0SSuyog Pawar { 212*c83a76b0SSuyog Pawar /** App context pointer */ 213*c83a76b0SSuyog Pawar appl_ctxt_t s_app_ctxt; 214*c83a76b0SSuyog Pawar } main_ctxt_t; 215*c83a76b0SSuyog Pawar 216*c83a76b0SSuyog Pawar typedef struct 217*c83a76b0SSuyog Pawar { 218*c83a76b0SSuyog Pawar char argument_shortname[25]; 219*c83a76b0SSuyog Pawar char argument_name[128]; 220*c83a76b0SSuyog Pawar ARGUMENT_T argument; 221*c83a76b0SSuyog Pawar char description[512]; 222*c83a76b0SSuyog Pawar } argument_t; 223*c83a76b0SSuyog Pawar 224*c83a76b0SSuyog Pawar /*****************************************************************************/ 225*c83a76b0SSuyog Pawar /* Function Declarations */ 226*c83a76b0SSuyog Pawar /*****************************************************************************/ 227*c83a76b0SSuyog Pawar void codec_exit(CHAR *pc_err_message); 228*c83a76b0SSuyog Pawar 229*c83a76b0SSuyog Pawar #endif /* _APP_H_ */ 230