/******************************************************************************
*
* 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_ */