You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
230 lines
6.3 KiB
230 lines
6.3 KiB
4 months ago
|
/******************************************************************************
|
||
|
*
|
||
|
* 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_ */
|