xref: /aosp_15_r20/external/libhevc/test/encoder/app.h (revision c83a76b084498d55f252f48b2e3786804cdf24b7)
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