| /****************************************************************************** |
| * |
| * Copyright (C) 2018 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at: |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| ***************************************************************************** |
| * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore |
| */ |
| |
| /** |
| ******************************************************************************* |
| * @file |
| * app.h |
| * |
| * @brief |
| * This file contains all the necessary structure and enumeration definitions |
| * needed for the Application |
| * |
| * @author |
| * ittiam |
| * |
| * @remarks |
| * none |
| * |
| ******************************************************************************* |
| */ |
| |
| #ifndef _APP_H_ |
| #define _APP_H_ |
| |
| /*****************************************************************************/ |
| /* Function Macros */ |
| /*****************************************************************************/ |
| #define MAX(a, b) ((a) > (b)) ? (a) : (b) |
| #define MIN(a, b) ((a) < (b)) ? (a) : (b) |
| |
| #define STR_LEN 512 |
| |
| /*****************************************************************************/ |
| /* Enums */ |
| /*****************************************************************************/ |
| typedef enum |
| { |
| INVALID, |
| HELP, |
| VERSION, |
| INPUT_YUV, |
| OUTPUT, |
| STAT_FILE, |
| STAT_FILE_BLK, |
| SAVE_RECON, |
| RECON_YUV, |
| NUM_FRAMES_TO_ENCODE, |
| START_FRM_OFFSET, |
| LOG_DUMP_LEVEL, |
| PERF_MODE, |
| ENABLE_CSV_DUMP, |
| CSV_FILE_PATH, |
| ENABLE_LOOPBACK, |
| ENABLE_LOGO, |
| RES_CHNG_INTRVL, |
| SRC_WIDTH, |
| SRC_HEIGHT, |
| SRC_FRAME_RATE_NUM, |
| SRC_FRAME_RATE_DENOM, |
| SRC_INTERLACED, |
| INPUT_CHROMA_FORMAT, |
| INPUT_BIT_DEPTH, |
| TOPFIELD_FIRST, |
| NUM_RESOLUTIONS, |
| MRES_SINGLE_OUT, |
| START_RES_ID, |
| MBR_QUALITY_SETTING, |
| TGT_WIDTH, |
| TGT_HEIGHT, |
| CODEC_LEVEL, |
| NUM_BITRATES, |
| TGT_BITRATE, |
| FRAME_QP, |
| OUTPUT_BIT_DEPTH, |
| ENABLE_TEMPORAL_SCALABILITY, |
| MAX_CLOSED_GOP_PERIOD, |
| MIN_CLOSED_GOP_PERIOD, |
| MAX_CRA_OPEN_GOP_PERIOD, |
| MAX_I_OPEN_GOP_PERIOD, |
| MAX_TEMPORAL_LAYERS, |
| QUALITY_PRESET, |
| DEBLOCKING_TYPE, |
| USE_DEFAULT_SC_MTX, |
| ENABLE_ENTROPY_SYNC, |
| MAX_TR_TREE_DEPTH_I, |
| MAX_TR_TREE_DEPTH_NI, |
| MAX_SEARCH_RANGE_HORZ, |
| MAX_SEARCH_RANGE_VERT, |
| VISUAL_QUALITY_ENHANCEMENTS_TOGGLER, |
| ARCH_TYPE, |
| NUM_CORES, |
| ENABLE_THREAD_AFFINITY, |
| RATE_CONTROL_MODE, |
| CU_LEVEL_RC, |
| PASS, |
| MAX_VBV_BUFFER_SIZE, |
| PEAK_BITRATE, |
| RATE_FACTOR, |
| VBR_MAX_PEAK_RATE_DUR, |
| MAX_FRAME_QP, |
| MIN_FRAME_QP, |
| ENABLE_LOOK_AHEAD, |
| RC_LOOK_AHEAD_PICS, |
| ENABLE_WEIGHTED_PREDICTION, |
| CODEC_TYPE, |
| CODEC_PROFILE, |
| CODEC_TIER, |
| AUD_ENABLE_FLAGS, |
| INTEROP_FLAGS, |
| SPS_AT_CDR_ENABLE, |
| SEI_VUI_INFO_CFG, |
| VUI_ENABLE, |
| SEI_ENABLE_FLAGS, |
| SEI_PAYLOAD_ENABLE_FLAGS, |
| SEI_PAYLOAD_PATH, |
| FORCE_IDR_LOCS_ENABLE, |
| FORCE_IDR_LOCS_FILENAME, |
| SEI_BUFFER_PERIOD_FLAGS, |
| SEI_PIC_TIMING_FLAGS, |
| SEI_RECOVERY_POINT_FLAGS, |
| SEI_HASH_FLAGS, |
| SEI_MASTERING_DISP_COLOUR_VOL_FLAGS, |
| DISPLAY_PRIMARIES_X, |
| DISPLAY_PRIMARIES_Y, |
| WHITE_POINT_X, |
| WHITE_POINT_Y, |
| MAX_DISPLAY_MASTERING_LUMINANCE, |
| MIN_DISPLAY_MASTERING_LUMINANCE, |
| SEI_CLL_INFO_ENABLE, |
| SEI_MAX_CLL, |
| SEI_AVG_CLL, |
| TILES_ENABLED_FLAG, |
| UNIFORM_SPACING_FLAG, |
| NUM_TILE_COLS, |
| NUM_TILE_ROWS, |
| COLUMN_WIDTH_ARRAY, |
| ROW_HEIGHT_ARRAY, |
| SLICE_SEGMENT_MODE, |
| SLICE_SEGMENT_ARGUMENT, |
| ASPECT_RATIO_INFO_PRESENT_FLAG, |
| ASPECT_RATIO_IDC, |
| SAR_WIDTH, |
| SAR_HEIGHT, |
| OVERSCAN_INFO_PRESENT_FLAG, |
| OVERSCAN_APPROPRIATE_FLAG, |
| VIDEO_SIGNAL_TYPE_PRESENT_FLAG, |
| VIDEO_FORMAT, |
| VIDEO_FULL_RANGE_FLAG, |
| COLOUR_DESCRIPTION_PRESENT_FLAG, |
| COLOUR_PRIMARIES, |
| TRANSFER_CHARACTERISTICS, |
| MATRIX_COEFFICIENTS, |
| CHROMA_LOC_INFO_PRESENT_FLAG, |
| CHROMA_SAMPLE_LOC_TYPE_TOP_FIELD, |
| CHROMA_SAMPLE_LOC_TYPE_BOTTOM_FIELD, |
| TIMING_INFO_PRESENT_FLAG, |
| VUI_HRD_PARAMETERS_PRESENT_FLAG, |
| NAL_HRD_PARAMETERS_PRESENT_FLAG, |
| CONFIG, |
| GRPINFO |
| } ARGUMENT_T; |
| |
| /*****************************************************************************/ |
| /* Structure definitions */ |
| /*****************************************************************************/ |
| |
| typedef struct |
| { |
| void *ihevceHdl; |
| |
| char au1_in_file[STR_LEN]; /*!< input yuv file name |
| */ |
| char au1_out_file[IHEVCE_MAX_NUM_RESOLUTIONS][IHEVCE_MAX_NUM_BITRATES] |
| [STR_LEN]; /*!< output bitstream filename |
| */ |
| char au1_recon_file[IHEVCE_MAX_NUM_RESOLUTIONS][IHEVCE_MAX_NUM_BITRATES] |
| [STR_LEN]; /*!< Recon yuv filename |
| */ |
| char au1_stat_file[IHEVCE_MAX_NUM_RESOLUTIONS][IHEVCE_MAX_NUM_BITRATES] |
| [STR_LEN]; /*!< stat filename from pass1 |
| */ |
| char au1_stat_blk_file[IHEVCE_MAX_NUM_RESOLUTIONS][IHEVCE_MAX_NUM_BITRATES] |
| [STR_LEN]; /*!< stat filename from pass1 |
| */ |
| char au1_csv_file[IHEVCE_MAX_NUM_RESOLUTIONS][IHEVCE_MAX_NUM_BITRATES][STR_LEN]; |
| |
| ihevce_static_cfg_params_t s_static_cfg_prms; |
| |
| char ai1_sei_payload_path[STR_LEN]; |
| |
| } appl_ctxt_t; |
| |
| typedef struct |
| { |
| /** App context pointer */ |
| appl_ctxt_t s_app_ctxt; |
| } main_ctxt_t; |
| |
| typedef struct |
| { |
| char argument_shortname[25]; |
| char argument_name[128]; |
| ARGUMENT_T argument; |
| char description[512]; |
| } argument_t; |
| |
| /*****************************************************************************/ |
| /* Function Declarations */ |
| /*****************************************************************************/ |
| void codec_exit(CHAR *pc_err_message); |
| |
| #endif /* _APP_H_ */ |