xref: /aosp_15_r20/external/libavc/examples/svcenc/app.h (revision 495ae853bb871d1e5a258cb02c2cc13cde8ddb9a)
1*495ae853SAndroid Build Coastguard Worker /******************************************************************************
2*495ae853SAndroid Build Coastguard Worker  *
3*495ae853SAndroid Build Coastguard Worker  * Copyright (C) 2022 The Android Open Source Project
4*495ae853SAndroid Build Coastguard Worker  *
5*495ae853SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
6*495ae853SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
7*495ae853SAndroid Build Coastguard Worker  * You may obtain a copy of the License at:
8*495ae853SAndroid Build Coastguard Worker  *
9*495ae853SAndroid Build Coastguard Worker  * http://www.apache.org/licenses/LICENSE-2.0
10*495ae853SAndroid Build Coastguard Worker  *
11*495ae853SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
12*495ae853SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
13*495ae853SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*495ae853SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
15*495ae853SAndroid Build Coastguard Worker  * limitations under the License.
16*495ae853SAndroid Build Coastguard Worker  *
17*495ae853SAndroid Build Coastguard Worker  *****************************************************************************
18*495ae853SAndroid Build Coastguard Worker  * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19*495ae853SAndroid Build Coastguard Worker  */
20*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
21*495ae853SAndroid Build Coastguard Worker /*                                                                           */
22*495ae853SAndroid Build Coastguard Worker /*  File Name         : app.h                                                */
23*495ae853SAndroid Build Coastguard Worker /*                                                                           */
24*495ae853SAndroid Build Coastguard Worker /*  Description       : This file contains all the necessary structure and   */
25*495ae853SAndroid Build Coastguard Worker /*                      enumeration definitions needed for the Application   */
26*495ae853SAndroid Build Coastguard Worker /*                                                                           */
27*495ae853SAndroid Build Coastguard Worker /*  List of Functions :                                                      */
28*495ae853SAndroid Build Coastguard Worker /*                                                                           */
29*495ae853SAndroid Build Coastguard Worker /*  Issues / Problems : None                                                 */
30*495ae853SAndroid Build Coastguard Worker /*                                                                           */
31*495ae853SAndroid Build Coastguard Worker /*  Revision History  :                                                      */
32*495ae853SAndroid Build Coastguard Worker /*                                                                           */
33*495ae853SAndroid Build Coastguard Worker /*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
34*495ae853SAndroid Build Coastguard Worker /*         26 08 2010   Ittiam          Draft                                */
35*495ae853SAndroid Build Coastguard Worker /*                                                                           */
36*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
37*495ae853SAndroid Build Coastguard Worker 
38*495ae853SAndroid Build Coastguard Worker #ifndef _SVCE_APP_H_
39*495ae853SAndroid Build Coastguard Worker #define _SVCE_APP_H_
40*495ae853SAndroid Build Coastguard Worker 
41*495ae853SAndroid Build Coastguard Worker #include <stdbool.h>
42*495ae853SAndroid Build Coastguard Worker #include <sys/time.h>
43*495ae853SAndroid Build Coastguard Worker 
44*495ae853SAndroid Build Coastguard Worker #include "iv2.h"
45*495ae853SAndroid Build Coastguard Worker #include "ive2.h"
46*495ae853SAndroid Build Coastguard Worker 
47*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
48*495ae853SAndroid Build Coastguard Worker /* Function Macros                                                           */
49*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
50*495ae853SAndroid Build Coastguard Worker #define MAX(a, b) ((a) > (b)) ? (a) : (b)
51*495ae853SAndroid Build Coastguard Worker #define MIN(a, b) ((a) < (b)) ? (a) : (b)
52*495ae853SAndroid Build Coastguard Worker 
53*495ae853SAndroid Build Coastguard Worker #define ALIGN16(x) ((((x) + 15) >> 4) << 4)
54*495ae853SAndroid Build Coastguard Worker 
55*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
56*495ae853SAndroid Build Coastguard Worker /* Constant Macros                                                           */
57*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
58*495ae853SAndroid Build Coastguard Worker 
59*495ae853SAndroid Build Coastguard Worker #define DEFAULT_NUM_INPUT_BUFS 32
60*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_INPUT_BUFS 32
61*495ae853SAndroid Build Coastguard Worker 
62*495ae853SAndroid Build Coastguard Worker #define DEFAULT_NUM_OUTPUT_BUFS 32
63*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_OUTPUT_BUFS 32
64*495ae853SAndroid Build Coastguard Worker 
65*495ae853SAndroid Build Coastguard Worker #define DEFAULT_NUM_RECON_BUFS 32
66*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_RECON_BUFS DEFAULT_NUM_RECON_BUFS
67*495ae853SAndroid Build Coastguard Worker 
68*495ae853SAndroid Build Coastguard Worker #define DEFAULT_NUM_NALU_INFO_BUFS 32
69*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_NALU_INFO_BUFS 32
70*495ae853SAndroid Build Coastguard Worker 
71*495ae853SAndroid Build Coastguard Worker #define LEN_STATUS_BUFFER (10 * 1024)
72*495ae853SAndroid Build Coastguard Worker #define MAX_VBV_BUFF_SIZE (120 * 16384)
73*495ae853SAndroid Build Coastguard Worker #define MAX_NUM_IO_BUFS 3
74*495ae853SAndroid Build Coastguard Worker 
75*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_REF_FRM 2
76*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_REORDER_FRM 0
77*495ae853SAndroid Build Coastguard Worker #define DEFAULT_QP_MIN 4
78*495ae853SAndroid Build Coastguard Worker #define DEFAULT_QP_MAX 51
79*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_BITRATE 240000000
80*495ae853SAndroid Build Coastguard Worker #define DEFAULT_NUM_BFRAMES 0
81*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_SRCH_RANGE_X 256
82*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_SRCH_RANGE_Y 256
83*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_FRAMERATE 120000
84*495ae853SAndroid Build Coastguard Worker #define DEFAULT_NUM_CORES 1
85*495ae853SAndroid Build Coastguard Worker #define DEFAULT_NUM_CORES_PRE_ENC 0
86*495ae853SAndroid Build Coastguard Worker #define DEFAULT_FPS 30
87*495ae853SAndroid Build Coastguard Worker #define DEFAULT_ENC_SPEED 100
88*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MEM_REC_CNT 0
89*495ae853SAndroid Build Coastguard Worker #define DEFAULT_RECON_ENABLE 0
90*495ae853SAndroid Build Coastguard Worker #define DEFAULT_NALU_INFO_EXPORT_ENABLE 0
91*495ae853SAndroid Build Coastguard Worker #define DEFAULT_CHKSUM_ENABLE 0
92*495ae853SAndroid Build Coastguard Worker #define DEFAULT_START_FRM 0
93*495ae853SAndroid Build Coastguard Worker #define DEFAULT_NUM_FRMS 100
94*495ae853SAndroid Build Coastguard Worker #define DEFAULT_INP_COLOR_FMT IV_YUV_420P
95*495ae853SAndroid Build Coastguard Worker #define DEFAULT_RECON_COLOR_FMT IV_YUV_420P
96*495ae853SAndroid Build Coastguard Worker #define DEFAULT_LOOPBACK 0
97*495ae853SAndroid Build Coastguard Worker #define DEFAULT_SRC_FRAME_RATE 50
98*495ae853SAndroid Build Coastguard Worker #define DEFAULT_TGT_FRAME_RATE 50
99*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_WD 1920
100*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_HT 1920
101*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_LEVEL 51
102*495ae853SAndroid Build Coastguard Worker #define DEFAULT_STRIDE 0
103*495ae853SAndroid Build Coastguard Worker #define DEFAULT_WD 1920
104*495ae853SAndroid Build Coastguard Worker #define DEFAULT_HT 1080
105*495ae853SAndroid Build Coastguard Worker #define DEFAULT_PSNR_ENABLE 0
106*495ae853SAndroid Build Coastguard Worker #define DEFAULT_ME_SPEED 100
107*495ae853SAndroid Build Coastguard Worker #define DEFAULT_ENABLE_FAST_SAD 0
108*495ae853SAndroid Build Coastguard Worker #define DEFAULT_ENABLE_ALT_REF 0
109*495ae853SAndroid Build Coastguard Worker #define DEFAULT_RC 0
110*495ae853SAndroid Build Coastguard Worker #define DEFAULT_BITRATE 6000000
111*495ae853SAndroid Build Coastguard Worker #define DEFAULT_I_QP 25
112*495ae853SAndroid Build Coastguard Worker #define DEFAULT_I_QP_MAX DEFAULT_QP_MAX
113*495ae853SAndroid Build Coastguard Worker #define DEFAULT_I_QP_MIN 0
114*495ae853SAndroid Build Coastguard Worker #define DEFAULT_P_QP 28
115*495ae853SAndroid Build Coastguard Worker #define DEFAULT_P_QP_MAX DEFAULT_QP_MAX
116*495ae853SAndroid Build Coastguard Worker #define DEFAULT_P_QP_MIN 0
117*495ae853SAndroid Build Coastguard Worker #define DEFAULT_B_QP 28
118*495ae853SAndroid Build Coastguard Worker #define DEFAULT_B_QP_MAX DEFAULT_QP_MAX
119*495ae853SAndroid Build Coastguard Worker #define DEFAULT_B_QP_MIN 0
120*495ae853SAndroid Build Coastguard Worker #define DEFAULT_AIR 0
121*495ae853SAndroid Build Coastguard Worker #define DEFAULT_AIR_REFRESH_PERIOD 30
122*495ae853SAndroid Build Coastguard Worker #define DEFAULT_SRCH_RNG_X 64
123*495ae853SAndroid Build Coastguard Worker #define DEFAULT_SRCH_RNG_Y 48
124*495ae853SAndroid Build Coastguard Worker #define DEFAULT_I_INTERVAL 50
125*495ae853SAndroid Build Coastguard Worker #define DEFAULT_IDR_INTERVAL 100
126*495ae853SAndroid Build Coastguard Worker #define DEFAULT_B_FRAMES 0
127*495ae853SAndroid Build Coastguard Worker #define DEFAULT_DISABLE_DEBLK_LEVEL 4
128*495ae853SAndroid Build Coastguard Worker #define DEFAULT_HPEL 1
129*495ae853SAndroid Build Coastguard Worker #define DEFAULT_QPEL 1
130*495ae853SAndroid Build Coastguard Worker #define DEFAULT_I4 1
131*495ae853SAndroid Build Coastguard Worker #define DEFAULT_EPROFILE IV_PROFILE_BASE
132*495ae853SAndroid Build Coastguard Worker #define DEFAULT_SLICE_MODE 0
133*495ae853SAndroid Build Coastguard Worker #define DEFAULT_SLICE_PARAM 256
134*495ae853SAndroid Build Coastguard Worker #define DEFAULT_ENTROPY_CODING_MODE 1
135*495ae853SAndroid Build Coastguard Worker #define DEFAULT_NUM_TEMPORAL_LAYERS 1
136*495ae853SAndroid Build Coastguard Worker #define DEFAULT_NUM_SPATIAL_LAYERS 1
137*495ae853SAndroid Build Coastguard Worker #define DEFAULT_SPATIAL_RES_RATIO 2.0
138*495ae853SAndroid Build Coastguard Worker 
139*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_DISPLAY_MASTERING_LUMINANCE 50000
140*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MIN_DISPLAY_MASTERING_LUMINANCE 1
141*495ae853SAndroid Build Coastguard Worker 
142*495ae853SAndroid Build Coastguard Worker #define STRLENGTH 500
143*495ae853SAndroid Build Coastguard Worker 
144*495ae853SAndroid Build Coastguard Worker /* specifies the number of colour primary components of the mastering
145*495ae853SAndroid Build Coastguard Worker    display */
146*495ae853SAndroid Build Coastguard Worker #define NUM_SEI_MDCV_PRIMARIES 3
147*495ae853SAndroid Build Coastguard Worker 
148*495ae853SAndroid Build Coastguard Worker /* specifies the number of colour primary components of the nominal
149*495ae853SAndroid Build Coastguard Worker    content colour volume */
150*495ae853SAndroid Build Coastguard Worker #define NUM_SEI_CCV_PRIMARIES 3
151*495ae853SAndroid Build Coastguard Worker 
152*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
153*495ae853SAndroid Build Coastguard Worker /*  profile Macros                                                           */
154*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
155*495ae853SAndroid Build Coastguard Worker #ifdef PROFILE_ENABLE
156*495ae853SAndroid Build Coastguard Worker #ifdef WINDOWS
157*495ae853SAndroid Build Coastguard Worker typedef LARGE_INTEGER TIMER;
158*495ae853SAndroid Build Coastguard Worker #else
159*495ae853SAndroid Build Coastguard Worker typedef struct timeval TIMER;
160*495ae853SAndroid Build Coastguard Worker #endif
161*495ae853SAndroid Build Coastguard Worker #else
162*495ae853SAndroid Build Coastguard Worker typedef int32_t TIMER;
163*495ae853SAndroid Build Coastguard Worker #endif
164*495ae853SAndroid Build Coastguard Worker 
165*495ae853SAndroid Build Coastguard Worker #ifdef PROFILE_ENABLE
166*495ae853SAndroid Build Coastguard Worker #ifdef WINDOWS
167*495ae853SAndroid Build Coastguard Worker #define GETTIME(timer) QueryPerformanceCounter(timer);
168*495ae853SAndroid Build Coastguard Worker #else
169*495ae853SAndroid Build Coastguard Worker #define GETTIME(timer) gettimeofday(timer, NULL);
170*495ae853SAndroid Build Coastguard Worker #endif
171*495ae853SAndroid Build Coastguard Worker 
172*495ae853SAndroid Build Coastguard Worker #ifdef WINDOWS
173*495ae853SAndroid Build Coastguard Worker #define ELAPSEDTIME(s_start_timer, s_end_timer, s_elapsed_time, frequency)                     \
174*495ae853SAndroid Build Coastguard Worker     {                                                                                          \
175*495ae853SAndroid Build Coastguard Worker         TIMER s_temp_time;                                                                     \
176*495ae853SAndroid Build Coastguard Worker         s_temp_time.LowPart = s_end_timer.LowPart - s_start_timer.LowPart;                     \
177*495ae853SAndroid Build Coastguard Worker         s_elapsed_time =                                                                       \
178*495ae853SAndroid Build Coastguard Worker             (UWORD32) (((DOUBLE) s_temp_time.LowPart / (DOUBLE) frequency.LowPart) * 1000000); \
179*495ae853SAndroid Build Coastguard Worker     }
180*495ae853SAndroid Build Coastguard Worker #else
181*495ae853SAndroid Build Coastguard Worker #define ELAPSEDTIME(s_start_timer, s_end_timer, s_elapsed_time, frequency)     \
182*495ae853SAndroid Build Coastguard Worker     s_elapsed_time = ((s_end_timer.tv_sec - s_start_timer.tv_sec) * 1000000) + \
183*495ae853SAndroid Build Coastguard Worker                      (s_end_timer.tv_usec - s_start_timer.tv_usec);
184*495ae853SAndroid Build Coastguard Worker #endif
185*495ae853SAndroid Build Coastguard Worker #else
186*495ae853SAndroid Build Coastguard Worker #define GETTIME(timer)
187*495ae853SAndroid Build Coastguard Worker #define ELAPSEDTIME(s_start_timer, s_end_timer, s_elapsed_time, frequency)
188*495ae853SAndroid Build Coastguard Worker #endif
189*495ae853SAndroid Build Coastguard Worker 
190*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
191*495ae853SAndroid Build Coastguard Worker /*  Structure definitions                                                    */
192*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
193*495ae853SAndroid Build Coastguard Worker typedef struct
194*495ae853SAndroid Build Coastguard Worker {
195*495ae853SAndroid Build Coastguard Worker     UWORD8 *pu1_buf;
196*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_buf_size;
197*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_timestamp_low;
198*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_timestamp_high;
199*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_is_free;
200*495ae853SAndroid Build Coastguard Worker     void *pv_mb_info;
201*495ae853SAndroid Build Coastguard Worker     void *pv_pic_info;
202*495ae853SAndroid Build Coastguard Worker } input_buf_t;
203*495ae853SAndroid Build Coastguard Worker 
204*495ae853SAndroid Build Coastguard Worker typedef struct
205*495ae853SAndroid Build Coastguard Worker {
206*495ae853SAndroid Build Coastguard Worker     UWORD8 *pu1_buf;
207*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_buf_size;
208*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_timestamp_low;
209*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_timestamp_high;
210*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_is_free;
211*495ae853SAndroid Build Coastguard Worker } output_buf_t;
212*495ae853SAndroid Build Coastguard Worker 
213*495ae853SAndroid Build Coastguard Worker typedef struct
214*495ae853SAndroid Build Coastguard Worker {
215*495ae853SAndroid Build Coastguard Worker     UWORD8 *pu1_buf;
216*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_buf_size;
217*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_timestamp_low;
218*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_timestamp_high;
219*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_is_free;
220*495ae853SAndroid Build Coastguard Worker } recon_buf_t;
221*495ae853SAndroid Build Coastguard Worker 
222*495ae853SAndroid Build Coastguard Worker typedef struct nalu_info_buf_t
223*495ae853SAndroid Build Coastguard Worker {
224*495ae853SAndroid Build Coastguard Worker     UWORD8 *pu1_buf;
225*495ae853SAndroid Build Coastguard Worker 
226*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_buf_size;
227*495ae853SAndroid Build Coastguard Worker 
228*495ae853SAndroid Build Coastguard Worker     bool b_is_free;
229*495ae853SAndroid Build Coastguard Worker } nalu_info_buf_t;
230*495ae853SAndroid Build Coastguard Worker 
231*495ae853SAndroid Build Coastguard Worker typedef struct
232*495ae853SAndroid Build Coastguard Worker {
233*495ae853SAndroid Build Coastguard Worker     iv_obj_t *ps_enc;
234*495ae853SAndroid Build Coastguard Worker     iv_mem_rec_t *ps_mem_rec;
235*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_num_mem_rec;
236*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_recon_enable;
237*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_chksum_enable;
238*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_nalu_info_export_enable;
239*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_mb_info_type;
240*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_pic_info_type;
241*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_mb_info_size;
242*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_pic_info_size;
243*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_start_frm;
244*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_max_num_frms;
245*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_total_bytes;
246*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_pics_cnt;
247*495ae853SAndroid Build Coastguard Worker     IV_COLOR_FORMAT_T e_inp_color_fmt;
248*495ae853SAndroid Build Coastguard Worker     IV_COLOR_FORMAT_T e_recon_color_fmt;
249*495ae853SAndroid Build Coastguard Worker     IV_ARCH_T e_arch;
250*495ae853SAndroid Build Coastguard Worker     IV_SOC_T e_soc;
251*495ae853SAndroid Build Coastguard Worker 
252*495ae853SAndroid Build Coastguard Worker     WORD32 header_generated;
253*495ae853SAndroid Build Coastguard Worker     void *pv_codec_obj;
254*495ae853SAndroid Build Coastguard Worker 
255*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_num_cores;
256*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_pre_enc_me;
257*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_pre_enc_ipe;
258*495ae853SAndroid Build Coastguard Worker     CHAR ac_ip_fname[STRLENGTH];
259*495ae853SAndroid Build Coastguard Worker     CHAR ac_op_fname[STRLENGTH];
260*495ae853SAndroid Build Coastguard Worker     CHAR ac_recon_fname[STRLENGTH];
261*495ae853SAndroid Build Coastguard Worker     CHAR ac_nalu_info_csv_fname[STRLENGTH];
262*495ae853SAndroid Build Coastguard Worker     CHAR ac_chksum_fname[STRLENGTH];
263*495ae853SAndroid Build Coastguard Worker     CHAR ac_mb_info_fname[STRLENGTH];
264*495ae853SAndroid Build Coastguard Worker     CHAR ac_pic_info_fname[STRLENGTH];
265*495ae853SAndroid Build Coastguard Worker 
266*495ae853SAndroid Build Coastguard Worker     FILE *fp_ip;
267*495ae853SAndroid Build Coastguard Worker     FILE *fp_op;
268*495ae853SAndroid Build Coastguard Worker     FILE *fp_recon;
269*495ae853SAndroid Build Coastguard Worker     FILE *fp_nalu_info;
270*495ae853SAndroid Build Coastguard Worker     FILE *fp_chksum;
271*495ae853SAndroid Build Coastguard Worker     FILE *fp_psnr_ip;
272*495ae853SAndroid Build Coastguard Worker     FILE *fp_mb_info;
273*495ae853SAndroid Build Coastguard Worker     FILE *fp_pic_info;
274*495ae853SAndroid Build Coastguard Worker     FILE *fp_dump_op;
275*495ae853SAndroid Build Coastguard Worker 
276*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_loopback;
277*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_max_frame_rate;
278*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_src_frame_rate;
279*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_tgt_frame_rate;
280*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_max_wd;
281*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_max_ht;
282*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_max_level;
283*495ae853SAndroid Build Coastguard Worker 
284*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_strd;
285*495ae853SAndroid Build Coastguard Worker 
286*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_wd;
287*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_ht;
288*495ae853SAndroid Build Coastguard Worker 
289*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_enc_wd;
290*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_enc_ht;
291*495ae853SAndroid Build Coastguard Worker 
292*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_psnr_enable;
293*495ae853SAndroid Build Coastguard Worker 
294*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_enc_speed;
295*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_me_speed;
296*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_enable_fast_sad;
297*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_enable_alt_ref;
298*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_rc;
299*495ae853SAndroid Build Coastguard Worker     UWORD32 *pu4_max_bitrate;
300*495ae853SAndroid Build Coastguard Worker     UWORD32 *pu4_bitrate;
301*495ae853SAndroid Build Coastguard Worker     UWORD32 *pu4_i_qp, *pu4_i_qp_max, *pu4_i_qp_min;
302*495ae853SAndroid Build Coastguard Worker     UWORD32 *pu4_p_qp, *pu4_p_qp_max, *pu4_p_qp_min;
303*495ae853SAndroid Build Coastguard Worker     UWORD32 *pu4_b_qp, *pu4_b_qp_max, *pu4_b_qp_min;
304*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_air;
305*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_air_refresh_period;
306*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_srch_rng_x;
307*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_srch_rng_y;
308*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_i_interval;
309*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_idr_interval;
310*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_b_frames;
311*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_num_bframes;
312*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_disable_deblock_level;
313*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_hpel;
314*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_qpel;
315*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_enable_intra_4x4;
316*495ae853SAndroid Build Coastguard Worker     IV_PROFILE_T e_profile;
317*495ae853SAndroid Build Coastguard Worker 
318*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_slice_mode;
319*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_slice_param;
320*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_entropy_coding_mode;
321*495ae853SAndroid Build Coastguard Worker 
322*495ae853SAndroid Build Coastguard Worker     void *pv_input_thread_handle;
323*495ae853SAndroid Build Coastguard Worker     void *pv_output_thread_handle;
324*495ae853SAndroid Build Coastguard Worker     void *pv_recon_thread_handle;
325*495ae853SAndroid Build Coastguard Worker 
326*495ae853SAndroid Build Coastguard Worker     isvce_ctl_getbufinfo_op_t s_get_buf_info_op;
327*495ae853SAndroid Build Coastguard Worker     input_buf_t as_input_buf[DEFAULT_MAX_INPUT_BUFS];
328*495ae853SAndroid Build Coastguard Worker     output_buf_t as_output_buf[DEFAULT_MAX_OUTPUT_BUFS];
329*495ae853SAndroid Build Coastguard Worker     recon_buf_t as_recon_buf[DEFAULT_MAX_RECON_BUFS];
330*495ae853SAndroid Build Coastguard Worker     nalu_info_buf_t as_nalu_info_bufs[DEFAULT_MAX_NALU_INFO_BUFS];
331*495ae853SAndroid Build Coastguard Worker 
332*495ae853SAndroid Build Coastguard Worker     DOUBLE adbl_psnr[3];
333*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_psnr_cnt;
334*495ae853SAndroid Build Coastguard Worker     UWORD8 *pu1_psnr_buf;
335*495ae853SAndroid Build Coastguard Worker     UWORD8 u4_psnr_buf_size;
336*495ae853SAndroid Build Coastguard Worker 
337*495ae853SAndroid Build Coastguard Worker     UWORD32 *pu4_vbv_buffer_delay;
338*495ae853SAndroid Build Coastguard Worker 
339*495ae853SAndroid Build Coastguard Worker     TIMER enc_start_time;
340*495ae853SAndroid Build Coastguard Worker     TIMER enc_last_time;
341*495ae853SAndroid Build Coastguard Worker     WORD32 avg_time;
342*495ae853SAndroid Build Coastguard Worker 
343*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_sei_mdcv_params_present_flag;
344*495ae853SAndroid Build Coastguard Worker     UWORD32 au4_display_primaries_x[NUM_SEI_MDCV_PRIMARIES];
345*495ae853SAndroid Build Coastguard Worker     UWORD32 au4_display_primaries_y[NUM_SEI_MDCV_PRIMARIES];
346*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_white_point_x;
347*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_white_point_y;
348*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_max_display_mastering_luminance;
349*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_min_display_mastering_luminance;
350*495ae853SAndroid Build Coastguard Worker 
351*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_sei_cll_params_present_flag;
352*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_max_content_light_level;
353*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_max_pic_average_light_level;
354*495ae853SAndroid Build Coastguard Worker 
355*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_sei_ave_params_present_flag;
356*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_ambient_illuminance;
357*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_ambient_light_x;
358*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_ambient_light_y;
359*495ae853SAndroid Build Coastguard Worker 
360*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_sei_ccv_params_present_flag;
361*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_ccv_cancel_flag;
362*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_ccv_persistence_flag;
363*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_ccv_primaries_present_flag;
364*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_ccv_min_luminance_value_present_flag;
365*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_ccv_max_luminance_value_present_flag;
366*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_ccv_avg_luminance_value_present_flag;
367*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_ccv_reserved_zero_2bits;
368*495ae853SAndroid Build Coastguard Worker     WORD32 ai4_ccv_primaries_x[NUM_SEI_CCV_PRIMARIES];
369*495ae853SAndroid Build Coastguard Worker     WORD32 ai4_ccv_primaries_y[NUM_SEI_CCV_PRIMARIES];
370*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_ccv_min_luminance_value;
371*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_ccv_max_luminance_value;
372*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_ccv_avg_luminance_value;
373*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_use_default_vui;
374*495ae853SAndroid Build Coastguard Worker 
375*495ae853SAndroid Build Coastguard Worker     isvce_ctl_set_sei_mdcv_params_ip_t s_sei_mdcv_params;
376*495ae853SAndroid Build Coastguard Worker     isvce_ctl_set_sei_cll_params_ip_t s_sei_cll_params;
377*495ae853SAndroid Build Coastguard Worker     isvce_ctl_set_sei_ave_params_ip_t s_sei_ave_params;
378*495ae853SAndroid Build Coastguard Worker 
379*495ae853SAndroid Build Coastguard Worker     UWORD8 u1_num_temporal_layers;
380*495ae853SAndroid Build Coastguard Worker     UWORD8 u1_num_spatial_layers;
381*495ae853SAndroid Build Coastguard Worker     DOUBLE d_spatial_res_ratio;
382*495ae853SAndroid Build Coastguard Worker 
383*495ae853SAndroid Build Coastguard Worker } app_ctxt_t;
384*495ae853SAndroid Build Coastguard Worker 
385*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
386*495ae853SAndroid Build Coastguard Worker /*  Function Declarations                                                    */
387*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
388*495ae853SAndroid Build Coastguard Worker void codec_exit(CHAR *pc_err_message);
389*495ae853SAndroid Build Coastguard Worker void allocate_input(app_ctxt_t *ps_app_ctxt);
390*495ae853SAndroid Build Coastguard Worker void allocate_output(app_ctxt_t *ps_app_ctxt);
391*495ae853SAndroid Build Coastguard Worker void allocate_recon(app_ctxt_t *ps_app_ctxt);
392*495ae853SAndroid Build Coastguard Worker 
393*495ae853SAndroid Build Coastguard Worker IV_STATUS_T read_input(FILE *fp, iv_raw_buf_t *ps_raw_buf);
394*495ae853SAndroid Build Coastguard Worker IV_STATUS_T write_recon(FILE *fp, iv_raw_buf_t *ps_raw_buf);
395*495ae853SAndroid Build Coastguard Worker IV_STATUS_T write_output(FILE *fp, UWORD8 *pu1_buf, WORD32 num_bytes);
396*495ae853SAndroid Build Coastguard Worker 
397*495ae853SAndroid Build Coastguard Worker IV_STATUS_T read_mb_info(app_ctxt_t *ps_app_ctxt, void *pv_mb_info);
398*495ae853SAndroid Build Coastguard Worker IV_STATUS_T read_pic_info(app_ctxt_t *ps_app_ctxt, void *pv_pic_info);
399*495ae853SAndroid Build Coastguard Worker 
400*495ae853SAndroid Build Coastguard Worker void *isvca_aligned_malloc(WORD32 alignment, WORD32 size);
401*495ae853SAndroid Build Coastguard Worker void isvca_aligned_free(void *pv_buf);
402*495ae853SAndroid Build Coastguard Worker 
403*495ae853SAndroid Build Coastguard Worker void free_input(app_ctxt_t *ps_app_ctxt);
404*495ae853SAndroid Build Coastguard Worker void free_recon(app_ctxt_t *ps_app_ctxt);
405*495ae853SAndroid Build Coastguard Worker void free_output(app_ctxt_t *ps_app_ctxt);
406*495ae853SAndroid Build Coastguard Worker 
407*495ae853SAndroid Build Coastguard Worker void init_raw_buf_descr(app_ctxt_t *ps_app_ctxt, iv_raw_buf_t *ps_raw_buf, UWORD8 *pu1_buf,
408*495ae853SAndroid Build Coastguard Worker                         IV_COLOR_FORMAT_T e_color_fmt);
409*495ae853SAndroid Build Coastguard Worker 
410*495ae853SAndroid Build Coastguard Worker #ifndef MD5_DISABLE
411*495ae853SAndroid Build Coastguard Worker void calc_md5_cksum(UWORD8 *pu1_inbuf, UWORD32 u4_stride, UWORD32 u4_width, UWORD32 u4_height,
412*495ae853SAndroid Build Coastguard Worker                     UWORD8 *pu1_cksum_p);
413*495ae853SAndroid Build Coastguard Worker #else
414*495ae853SAndroid Build Coastguard Worker #define calc_md5_cksum(a, b, c, d, e)
415*495ae853SAndroid Build Coastguard Worker #endif
416*495ae853SAndroid Build Coastguard Worker 
417*495ae853SAndroid Build Coastguard Worker #endif
418