xref: /aosp_15_r20/external/libavc/examples/avcenc/app.h (revision 495ae853bb871d1e5a258cb02c2cc13cde8ddb9a)
1*495ae853SAndroid Build Coastguard Worker /******************************************************************************
2*495ae853SAndroid Build Coastguard Worker  *
3*495ae853SAndroid Build Coastguard Worker  * Copyright (C) 2015 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 *******************************************************************************
23*495ae853SAndroid Build Coastguard Worker * @file
24*495ae853SAndroid Build Coastguard Worker *  app.h
25*495ae853SAndroid Build Coastguard Worker *
26*495ae853SAndroid Build Coastguard Worker * @brief
27*495ae853SAndroid Build Coastguard Worker *  This file contains all the necessary structure and enumeration definitions
28*495ae853SAndroid Build Coastguard Worker *  needed for the Application
29*495ae853SAndroid Build Coastguard Worker *
30*495ae853SAndroid Build Coastguard Worker * @author
31*495ae853SAndroid Build Coastguard Worker *  ittiam
32*495ae853SAndroid Build Coastguard Worker *
33*495ae853SAndroid Build Coastguard Worker * @remarks
34*495ae853SAndroid Build Coastguard Worker *  none
35*495ae853SAndroid Build Coastguard Worker *
36*495ae853SAndroid Build Coastguard Worker *******************************************************************************
37*495ae853SAndroid Build Coastguard Worker */
38*495ae853SAndroid Build Coastguard Worker 
39*495ae853SAndroid Build Coastguard Worker #ifndef _APP_H_
40*495ae853SAndroid Build Coastguard Worker #define _APP_H_
41*495ae853SAndroid Build Coastguard Worker 
42*495ae853SAndroid Build Coastguard Worker #include "iv2.h"
43*495ae853SAndroid Build Coastguard Worker #include "ive2.h"
44*495ae853SAndroid Build Coastguard Worker #ifdef WINDOWS_TIMER
45*495ae853SAndroid Build Coastguard Worker #include <windows.h>
46*495ae853SAndroid Build Coastguard Worker #else
47*495ae853SAndroid Build Coastguard Worker #include <sys/time.h>
48*495ae853SAndroid Build Coastguard Worker #endif
49*495ae853SAndroid Build Coastguard Worker 
50*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
51*495ae853SAndroid Build Coastguard Worker /* Function Macros                                                           */
52*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
53*495ae853SAndroid Build Coastguard Worker #define MAX(a, b) ((a) > (b))? (a) : (b)
54*495ae853SAndroid Build Coastguard Worker #define MIN(a, b) ((a) < (b))? (a) : (b)
55*495ae853SAndroid Build Coastguard Worker 
56*495ae853SAndroid Build Coastguard Worker #define ALIGN16(x) ((((x) + 15) >> 4) << 4)
57*495ae853SAndroid Build Coastguard Worker 
58*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
59*495ae853SAndroid Build Coastguard Worker /* Constant Macros                                                           */
60*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
61*495ae853SAndroid Build Coastguard Worker #define DEFAULT_NUM_INPUT_BUFS   32
62*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_INPUT_BUFS   32
63*495ae853SAndroid Build Coastguard Worker 
64*495ae853SAndroid Build Coastguard Worker #define DEFAULT_NUM_OUTPUT_BUFS  32
65*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_OUTPUT_BUFS  32
66*495ae853SAndroid Build Coastguard Worker 
67*495ae853SAndroid Build Coastguard Worker #define DEFAULT_NUM_RECON_BUFS   32
68*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_RECON_BUFS   DEFAULT_NUM_RECON_BUFS
69*495ae853SAndroid Build Coastguard Worker 
70*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_REF_FRM         2
71*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_REORDER_FRM     0
72*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_SRCH_RANGE_X    256
73*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_SRCH_RANGE_Y    256
74*495ae853SAndroid Build Coastguard Worker #define DEFAULT_QP_MIN              4
75*495ae853SAndroid Build Coastguard Worker #define DEFAULT_QP_MAX              49
76*495ae853SAndroid Build Coastguard Worker 
77*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MEM_REC_CNT         0
78*495ae853SAndroid Build Coastguard Worker #define DEFAULT_RECON_ENABLE        0
79*495ae853SAndroid Build Coastguard Worker #define DEFAULT_CHKSUM_ENABLE       0
80*495ae853SAndroid Build Coastguard Worker #define DEFAULT_START_FRM           0
81*495ae853SAndroid Build Coastguard Worker #define DEFAULT_NUM_FRMS            0xFFFFFFFF
82*495ae853SAndroid Build Coastguard Worker #define DEFAULT_INP_COLOR_FMT       IV_YUV_420SP_UV
83*495ae853SAndroid Build Coastguard Worker #define DEFAULT_RECON_COLOR_FMT     IV_YUV_420P
84*495ae853SAndroid Build Coastguard Worker #define DEFAULT_NUM_CORES           1
85*495ae853SAndroid Build Coastguard Worker #define DEFAULT_LOOPBACK            0
86*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_FRAMERATE       120000 /* in ticks (1000 ticks = 1s) */
87*495ae853SAndroid Build Coastguard Worker #define DEFAULT_SRC_FRAME_RATE      30
88*495ae853SAndroid Build Coastguard Worker #define DEFAULT_TGT_FRAME_RATE      30
89*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_WD              1920
90*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_HT              1920
91*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_LEVEL           40
92*495ae853SAndroid Build Coastguard Worker #define DEFAULT_STRIDE              0
93*495ae853SAndroid Build Coastguard Worker #define DEFAULT_WD                  0
94*495ae853SAndroid Build Coastguard Worker #define DEFAULT_HT                  0
95*495ae853SAndroid Build Coastguard Worker #define DEFAULT_PSNR_ENABLE         0
96*495ae853SAndroid Build Coastguard Worker #define DEFAULT_ME_SPEED            100
97*495ae853SAndroid Build Coastguard Worker #define DEFAULT_ENABLE_FAST_SAD     0
98*495ae853SAndroid Build Coastguard Worker #define DEFAULT_ENABLE_ALT_REF      0
99*495ae853SAndroid Build Coastguard Worker #define DEFAULT_RC                  1
100*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_BITRATE         240000000
101*495ae853SAndroid Build Coastguard Worker #define DEFAULT_BITRATE             6000000
102*495ae853SAndroid Build Coastguard Worker #define DEFAULT_I_QP                25
103*495ae853SAndroid Build Coastguard Worker #define DEFAULT_I_QP_MAX            DEFAULT_QP_MAX
104*495ae853SAndroid Build Coastguard Worker #define DEFAULT_I_QP_MIN            DEFAULT_QP_MIN
105*495ae853SAndroid Build Coastguard Worker #define DEFAULT_P_QP                28
106*495ae853SAndroid Build Coastguard Worker #define DEFAULT_P_QP_MAX            DEFAULT_QP_MAX
107*495ae853SAndroid Build Coastguard Worker #define DEFAULT_P_QP_MIN            DEFAULT_QP_MIN
108*495ae853SAndroid Build Coastguard Worker #define DEFAULT_B_QP                28
109*495ae853SAndroid Build Coastguard Worker #define DEFAULT_B_QP_MAX            DEFAULT_QP_MAX
110*495ae853SAndroid Build Coastguard Worker #define DEFAULT_B_QP_MIN            DEFAULT_QP_MIN
111*495ae853SAndroid Build Coastguard Worker #define DEFAULT_AIR                 0
112*495ae853SAndroid Build Coastguard Worker #define DEFAULT_AIR_REFRESH_PERIOD  30
113*495ae853SAndroid Build Coastguard Worker #define DEFAULT_SRCH_RNG_X          64
114*495ae853SAndroid Build Coastguard Worker #define DEFAULT_SRCH_RNG_Y          64
115*495ae853SAndroid Build Coastguard Worker #define DEFAULT_I_INTERVAL          30
116*495ae853SAndroid Build Coastguard Worker #define DEFAULT_IDR_INTERVAL        1200
117*495ae853SAndroid Build Coastguard Worker #define DEFAULT_CONSTRAINED_INTRAPRED  0
118*495ae853SAndroid Build Coastguard Worker #define DEFAULT_NUM_BFRAMES         0
119*495ae853SAndroid Build Coastguard Worker #define DEFAULT_DISABLE_DEBLK_LEVEL 0
120*495ae853SAndroid Build Coastguard Worker #define DEFAULT_HPEL                1
121*495ae853SAndroid Build Coastguard Worker #define DEFAULT_QPEL                1
122*495ae853SAndroid Build Coastguard Worker #define DEFAULT_I4                  1
123*495ae853SAndroid Build Coastguard Worker #define DEFAULT_EPROFILE            IV_PROFILE_BASE
124*495ae853SAndroid Build Coastguard Worker #define DEFAULT_SLICE_MODE          0
125*495ae853SAndroid Build Coastguard Worker #define DEFAULT_SLICE_PARAM         256
126*495ae853SAndroid Build Coastguard Worker #define DEFAULT_ENTROPY_CODING_MODE 0
127*495ae853SAndroid Build Coastguard Worker #define NUM_SEI_MDCV_PRIMARIES      3
128*495ae853SAndroid Build Coastguard Worker #define NUM_SEI_CCV_PRIMARIES       3
129*495ae853SAndroid Build Coastguard Worker #define SII_MAX_SUB_LAYERS 8
130*495ae853SAndroid Build Coastguard Worker #define SII_SUB_LAYER_IDX 0
131*495ae853SAndroid Build Coastguard Worker #define SHUTTER_INTERVAL_INFO_PRESENT_FLAG 1
132*495ae853SAndroid Build Coastguard Worker #define SII_TIME_SCALE 24000000
133*495ae853SAndroid Build Coastguard Worker #define FIXED_SHUTTER_INTERVAL_WITHIN_CVS_FLAG 0
134*495ae853SAndroid Build Coastguard Worker #define SII_NUM_UNITS_IN_SHUTTER_INTERVAL 480000
135*495ae853SAndroid Build Coastguard Worker #define SII_MAX_SUB_LAYERS_MINUS1 (SII_MAX_SUB_LAYERS - 1)
136*495ae853SAndroid Build Coastguard Worker #define SUB_LAYER_NUM_UNITS_IN_SHUTTER_INTERVAL_HFR 480000
137*495ae853SAndroid Build Coastguard Worker #define SUB_LAYER_NUM_UNITS_IN_SHUTTER_INTERVAL_SFR 240000
138*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MAX_DISPLAY_MASTERING_LUMINANCE 50000
139*495ae853SAndroid Build Coastguard Worker #define DEFAULT_MIN_DISPLAY_MASTERING_LUMINANCE 1
140*495ae853SAndroid Build Coastguard Worker 
141*495ae853SAndroid Build Coastguard Worker #define STRLENGTH               500
142*495ae853SAndroid Build Coastguard Worker 
143*495ae853SAndroid Build Coastguard Worker 
144*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
145*495ae853SAndroid Build Coastguard Worker /*  profile Macros                                                           */
146*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
147*495ae853SAndroid Build Coastguard Worker #ifdef PROFILE_ENABLE
148*495ae853SAndroid Build Coastguard Worker     #ifdef WINDOWS_TIMER
149*495ae853SAndroid Build Coastguard Worker         typedef  LARGE_INTEGER TIMER;
150*495ae853SAndroid Build Coastguard Worker     #else
151*495ae853SAndroid Build Coastguard Worker         //#ifdef X86_MINGW
152*495ae853SAndroid Build Coastguard Worker         typedef struct timeval TIMER;
153*495ae853SAndroid Build Coastguard Worker         //#endif
154*495ae853SAndroid Build Coastguard Worker     #endif
155*495ae853SAndroid Build Coastguard Worker #endif
156*495ae853SAndroid Build Coastguard Worker 
157*495ae853SAndroid Build Coastguard Worker #ifdef PROFILE_ENABLE
158*495ae853SAndroid Build Coastguard Worker     #ifdef WINDOWS_TIMER
159*495ae853SAndroid Build Coastguard Worker         #define GETTIME(timer) QueryPerformanceCounter(timer);
160*495ae853SAndroid Build Coastguard Worker     #else
161*495ae853SAndroid Build Coastguard Worker     //#ifdef X86_MINGW
162*495ae853SAndroid Build Coastguard Worker         #define GETTIME(timer) gettimeofday(timer,NULL);
163*495ae853SAndroid Build Coastguard Worker     //#endif
164*495ae853SAndroid Build Coastguard Worker     #endif
165*495ae853SAndroid Build Coastguard Worker 
166*495ae853SAndroid Build Coastguard Worker     #ifdef WINDOWS_TIMER
167*495ae853SAndroid Build Coastguard Worker         #define ELAPSEDTIME(s_start_timer,s_end_timer, s_elapsed_time, frequency) \
168*495ae853SAndroid Build Coastguard Worker                   { \
169*495ae853SAndroid Build Coastguard Worker                    TIMER s_temp_time;   \
170*495ae853SAndroid Build Coastguard Worker                    s_temp_time.LowPart = s_end_timer.LowPart - s_start_timer.LowPart ; \
171*495ae853SAndroid Build Coastguard Worker                    s_elapsed_time = (UWORD32) ( ((DOUBLE)s_temp_time.LowPart / (DOUBLE)frequency.LowPart )  * 1000000); \
172*495ae853SAndroid Build Coastguard Worker                 }
173*495ae853SAndroid Build Coastguard Worker     #else
174*495ae853SAndroid Build Coastguard Worker     //#ifdef X86_MINGW
175*495ae853SAndroid Build Coastguard Worker         #define ELAPSEDTIME(s_start_timer,s_end_timer, s_elapsed_time, frequency) \
176*495ae853SAndroid Build Coastguard Worker                    s_elapsed_time = ((s_end_timer.tv_sec - s_start_timer.tv_sec) * 1000000) + (s_end_timer.tv_usec - s_start_timer.tv_usec);
177*495ae853SAndroid Build Coastguard Worker     //#endif
178*495ae853SAndroid Build Coastguard Worker     #endif
179*495ae853SAndroid Build Coastguard Worker 
180*495ae853SAndroid Build Coastguard Worker #else
181*495ae853SAndroid Build Coastguard Worker     #define GETTIME(timer)
182*495ae853SAndroid Build Coastguard Worker     #define ELAPSEDTIME(s_start_timer,s_end_timer, s_elapsed_time, frequency)
183*495ae853SAndroid Build Coastguard Worker #endif
184*495ae853SAndroid Build Coastguard Worker 
185*495ae853SAndroid Build Coastguard Worker 
186*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
187*495ae853SAndroid Build Coastguard Worker /*  Structure definitions                                                    */
188*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
189*495ae853SAndroid Build Coastguard Worker 
190*495ae853SAndroid Build Coastguard Worker /**
191*495ae853SAndroid Build Coastguard Worker **************************************************************************
192*495ae853SAndroid Build Coastguard Worker * @brief input buffer context
193*495ae853SAndroid Build Coastguard Worker **************************************************************************
194*495ae853SAndroid Build Coastguard Worker */
195*495ae853SAndroid Build Coastguard Worker typedef struct
196*495ae853SAndroid Build Coastguard Worker {
197*495ae853SAndroid Build Coastguard Worker     UWORD8 *pu1_buf;
198*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_buf_size;
199*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_timestamp_low;
200*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_timestamp_high;
201*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_is_free;
202*495ae853SAndroid Build Coastguard Worker     void *pv_mb_info;
203*495ae853SAndroid Build Coastguard Worker     void *pv_pic_info;
204*495ae853SAndroid Build Coastguard Worker } input_buf_t;
205*495ae853SAndroid Build Coastguard Worker 
206*495ae853SAndroid Build Coastguard Worker /**
207*495ae853SAndroid Build Coastguard Worker **************************************************************************
208*495ae853SAndroid Build Coastguard Worker * @brief output buffer context
209*495ae853SAndroid Build Coastguard Worker **************************************************************************
210*495ae853SAndroid Build Coastguard Worker */
211*495ae853SAndroid Build Coastguard Worker typedef struct
212*495ae853SAndroid Build Coastguard Worker {
213*495ae853SAndroid Build Coastguard Worker     UWORD8 *pu1_buf;
214*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_buf_size;
215*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_timestamp_low;
216*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_timestamp_high;
217*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_is_free;
218*495ae853SAndroid Build Coastguard Worker } output_buf_t;
219*495ae853SAndroid Build Coastguard Worker 
220*495ae853SAndroid Build Coastguard Worker /**
221*495ae853SAndroid Build Coastguard Worker **************************************************************************
222*495ae853SAndroid Build Coastguard Worker * @brief recon buffer context
223*495ae853SAndroid Build Coastguard Worker **************************************************************************
224*495ae853SAndroid Build Coastguard Worker */
225*495ae853SAndroid Build Coastguard Worker typedef struct
226*495ae853SAndroid Build Coastguard Worker {
227*495ae853SAndroid Build Coastguard Worker     UWORD8 *pu1_buf;
228*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_buf_size;
229*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_timestamp_low;
230*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_timestamp_high;
231*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_is_free;
232*495ae853SAndroid Build Coastguard Worker } recon_buf_t;
233*495ae853SAndroid Build Coastguard Worker 
234*495ae853SAndroid Build Coastguard Worker /**
235*495ae853SAndroid Build Coastguard Worker **************************************************************************
236*495ae853SAndroid Build Coastguard Worker * @brief app context
237*495ae853SAndroid Build Coastguard Worker **************************************************************************
238*495ae853SAndroid Build Coastguard Worker */
239*495ae853SAndroid Build Coastguard Worker typedef struct
240*495ae853SAndroid Build Coastguard Worker {
241*495ae853SAndroid Build Coastguard Worker     iv_obj_t *ps_enc;
242*495ae853SAndroid Build Coastguard Worker     iv_mem_rec_t *ps_mem_rec;
243*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_num_mem_rec;
244*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_recon_enable;
245*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_chksum_enable;
246*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_mb_info_type;
247*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_pic_info_type;
248*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_mb_info_size;
249*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_pic_info_size;
250*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_start_frm;
251*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_max_num_frms;
252*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_total_bytes;
253*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_pics_cnt;
254*495ae853SAndroid Build Coastguard Worker     IV_COLOR_FORMAT_T e_inp_color_fmt;
255*495ae853SAndroid Build Coastguard Worker     IV_COLOR_FORMAT_T e_recon_color_fmt;
256*495ae853SAndroid Build Coastguard Worker     IV_ARCH_T e_arch;
257*495ae853SAndroid Build Coastguard Worker     IV_SOC_T e_soc;
258*495ae853SAndroid Build Coastguard Worker 
259*495ae853SAndroid Build Coastguard Worker     WORD32 header_generated;
260*495ae853SAndroid Build Coastguard Worker     void *pv_codec_obj;
261*495ae853SAndroid Build Coastguard Worker 
262*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_num_cores;
263*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_pre_enc_me;
264*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_pre_enc_ipe;
265*495ae853SAndroid Build Coastguard Worker 
266*495ae853SAndroid Build Coastguard Worker     CHAR ac_ip_fname[STRLENGTH];
267*495ae853SAndroid Build Coastguard Worker     CHAR ac_op_fname[STRLENGTH];
268*495ae853SAndroid Build Coastguard Worker     CHAR ac_recon_fname[STRLENGTH];
269*495ae853SAndroid Build Coastguard Worker     CHAR ac_chksum_fname[STRLENGTH];
270*495ae853SAndroid Build Coastguard Worker     CHAR ac_mb_info_fname[STRLENGTH];
271*495ae853SAndroid Build Coastguard Worker     CHAR ac_pic_info_fname[STRLENGTH];
272*495ae853SAndroid Build Coastguard Worker 
273*495ae853SAndroid Build Coastguard Worker     FILE *fp_ip;
274*495ae853SAndroid Build Coastguard Worker     FILE *fp_op;
275*495ae853SAndroid Build Coastguard Worker     FILE *fp_recon;
276*495ae853SAndroid Build Coastguard Worker     FILE *fp_chksum;
277*495ae853SAndroid Build Coastguard Worker     FILE *fp_psnr_ip;
278*495ae853SAndroid Build Coastguard Worker     FILE *fp_mb_info;
279*495ae853SAndroid Build Coastguard Worker     FILE *fp_pic_info;
280*495ae853SAndroid Build Coastguard Worker 
281*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_loopback;
282*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_max_frame_rate;
283*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_src_frame_rate;
284*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_tgt_frame_rate;
285*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_max_wd;
286*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_max_ht;
287*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_max_level;
288*495ae853SAndroid Build Coastguard Worker 
289*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_strd;
290*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_wd;
291*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_ht;
292*495ae853SAndroid Build Coastguard Worker 
293*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_psnr_enable;
294*495ae853SAndroid Build Coastguard Worker 
295*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_enc_speed;
296*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_me_speed;
297*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_enable_fast_sad;
298*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_enable_alt_ref;
299*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_rc;
300*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_max_bitrate;
301*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_bitrate;
302*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_i_qp, u4_i_qp_max, u4_i_qp_min;
303*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_p_qp, u4_p_qp_max, u4_p_qp_min;
304*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_b_qp, u4_b_qp_max, u4_b_qp_min;
305*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_air;
306*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_air_refresh_period;
307*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_srch_rng_x;
308*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_srch_rng_y;
309*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_i_interval;
310*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_idr_interval;
311*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_constrained_intra_pred;
312*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_num_bframes;
313*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_disable_deblk_level;
314*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_hpel;
315*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_qpel;
316*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_enable_intra_4x4;
317*495ae853SAndroid Build Coastguard Worker     IV_PROFILE_T e_profile;
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     ih264e_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 
331*495ae853SAndroid Build Coastguard Worker     DOUBLE adbl_psnr[3];
332*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_psnr_cnt;
333*495ae853SAndroid Build Coastguard Worker     UWORD8 *pu1_psnr_buf;
334*495ae853SAndroid Build Coastguard Worker     UWORD8 u4_psnr_buf_size;
335*495ae853SAndroid Build Coastguard Worker 
336*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_vbv_buffer_delay;
337*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_vbv_buf_size;
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 
374*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_shutter_interval_info_present_flag;
375*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_sii_sub_layer_idx;
376*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_sii_time_scale;
377*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_fixed_shutter_interval_within_cvs_flag;
378*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_sii_num_units_in_shutter_interval;
379*495ae853SAndroid Build Coastguard Worker     UWORD32 u4_sii_max_sub_layers_minus1;
380*495ae853SAndroid Build Coastguard Worker     UWORD32 au4_sub_layer_num_units_in_shutter_interval[SII_MAX_SUB_LAYERS];
381*495ae853SAndroid Build Coastguard Worker 
382*495ae853SAndroid Build Coastguard Worker     ih264e_ctl_set_sei_mdcv_params_ip_t s_sei_mdcv_params;
383*495ae853SAndroid Build Coastguard Worker     ih264e_ctl_set_sei_cll_params_ip_t s_sei_cll_params;
384*495ae853SAndroid Build Coastguard Worker     ih264e_ctl_set_sei_ave_params_ip_t s_sei_ave_params;
385*495ae853SAndroid Build Coastguard Worker     ih264e_ctl_set_sei_sii_params_ip_t s_sei_sii_params;
386*495ae853SAndroid Build Coastguard Worker 
387*495ae853SAndroid Build Coastguard Worker } app_ctxt_t;
388*495ae853SAndroid Build Coastguard Worker 
389*495ae853SAndroid Build Coastguard Worker 
390*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
391*495ae853SAndroid Build Coastguard Worker /*  Function Declarations                                                    */
392*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
393*495ae853SAndroid Build Coastguard Worker void codec_exit(CHAR *pc_err_message);
394*495ae853SAndroid Build Coastguard Worker void allocate_input(app_ctxt_t *ps_app_ctxt);
395*495ae853SAndroid Build Coastguard Worker void allocate_output(app_ctxt_t *ps_app_ctxt);
396*495ae853SAndroid Build Coastguard Worker void allocate_recon(app_ctxt_t *ps_app_ctxt);
397*495ae853SAndroid Build Coastguard Worker 
398*495ae853SAndroid Build Coastguard Worker IV_STATUS_T read_input(FILE *fp, iv_raw_buf_t *ps_raw_buf);
399*495ae853SAndroid Build Coastguard Worker IV_STATUS_T write_recon(FILE *fp, iv_raw_buf_t *ps_raw_buf);
400*495ae853SAndroid Build Coastguard Worker IV_STATUS_T write_output(FILE *fp, UWORD8 *pu1_buf, WORD32 num_bytes);
401*495ae853SAndroid Build Coastguard Worker 
402*495ae853SAndroid Build Coastguard Worker IV_STATUS_T read_mb_info(app_ctxt_t *ps_app_ctxt, void *pv_mb_info);
403*495ae853SAndroid Build Coastguard Worker IV_STATUS_T read_pic_info(app_ctxt_t *ps_app_ctxt, void *pv_pic_info);
404*495ae853SAndroid Build Coastguard Worker 
405*495ae853SAndroid Build Coastguard Worker void * ih264a_aligned_malloc(WORD32 alignment, WORD32 size);
406*495ae853SAndroid Build Coastguard Worker void ih264a_aligned_free(void *pv_buf);
407*495ae853SAndroid Build Coastguard Worker 
408*495ae853SAndroid Build Coastguard Worker void free_input(app_ctxt_t *ps_app_ctxt);
409*495ae853SAndroid Build Coastguard Worker void free_recon(app_ctxt_t *ps_app_ctxt);
410*495ae853SAndroid Build Coastguard Worker void free_output(app_ctxt_t *ps_app_ctxt);
411*495ae853SAndroid Build Coastguard Worker 
412*495ae853SAndroid Build Coastguard Worker void init_raw_buf_descr(app_ctxt_t *ps_app_ctxt,
413*495ae853SAndroid Build Coastguard Worker                         iv_raw_buf_t *ps_raw_buf,
414*495ae853SAndroid Build Coastguard Worker                         UWORD8 *pu1_buf,
415*495ae853SAndroid Build Coastguard Worker                         IV_COLOR_FORMAT_T e_color_fmt);
416*495ae853SAndroid Build Coastguard Worker 
417*495ae853SAndroid Build Coastguard Worker #ifndef MD5_DISABLE
418*495ae853SAndroid Build Coastguard Worker void calc_md5_cksum(UWORD8 *pu1_inbuf,
419*495ae853SAndroid Build Coastguard Worker                     UWORD32 u4_stride,
420*495ae853SAndroid Build Coastguard Worker                     UWORD32 u4_width,
421*495ae853SAndroid Build Coastguard Worker                     UWORD32 u4_height,
422*495ae853SAndroid Build Coastguard Worker                     UWORD8 *pu1_cksum_p);
423*495ae853SAndroid Build Coastguard Worker #else
424*495ae853SAndroid Build Coastguard Worker #define calc_md5_cksum(a, b, c, d, e)
425*495ae853SAndroid Build Coastguard Worker #endif
426*495ae853SAndroid Build Coastguard Worker 
427*495ae853SAndroid Build Coastguard Worker #endif /* _APP_H_ */
428