1*437bfbebSnyanmisaka /* 2*437bfbebSnyanmisaka * Copyright 2015 Rockchip Electronics Co. LTD 3*437bfbebSnyanmisaka * 4*437bfbebSnyanmisaka * Licensed under the Apache License, Version 2.0 (the "License"); 5*437bfbebSnyanmisaka * you may not use this file except in compliance with the License. 6*437bfbebSnyanmisaka * You may obtain a copy of the License at 7*437bfbebSnyanmisaka * 8*437bfbebSnyanmisaka * http://www.apache.org/licenses/LICENSE-2.0 9*437bfbebSnyanmisaka * 10*437bfbebSnyanmisaka * Unless required by applicable law or agreed to in writing, software 11*437bfbebSnyanmisaka * distributed under the License is distributed on an "AS IS" BASIS, 12*437bfbebSnyanmisaka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*437bfbebSnyanmisaka * See the License for the specific language governing permissions and 14*437bfbebSnyanmisaka * limitations under the License. 15*437bfbebSnyanmisaka */ 16*437bfbebSnyanmisaka 17*437bfbebSnyanmisaka #ifndef __MPI_ENC_UTILS_H__ 18*437bfbebSnyanmisaka #define __MPI_ENC_UTILS_H__ 19*437bfbebSnyanmisaka 20*437bfbebSnyanmisaka #include <stdio.h> 21*437bfbebSnyanmisaka 22*437bfbebSnyanmisaka #include "rk_venc_cmd.h" 23*437bfbebSnyanmisaka #include "iniparser.h" 24*437bfbebSnyanmisaka 25*437bfbebSnyanmisaka typedef struct MpiEncTestArgs_t { 26*437bfbebSnyanmisaka char *file_input; 27*437bfbebSnyanmisaka char *file_output; 28*437bfbebSnyanmisaka char *file_cfg; 29*437bfbebSnyanmisaka dictionary *cfg_ini; 30*437bfbebSnyanmisaka 31*437bfbebSnyanmisaka MppCodingType type; 32*437bfbebSnyanmisaka MppCodingType type_src; /* for file source input */ 33*437bfbebSnyanmisaka MppFrameFormat format; 34*437bfbebSnyanmisaka RK_S32 frame_num; 35*437bfbebSnyanmisaka RK_S32 loop_cnt; 36*437bfbebSnyanmisaka RK_S32 nthreads; 37*437bfbebSnyanmisaka RK_S32 frm_step; 38*437bfbebSnyanmisaka 39*437bfbebSnyanmisaka RK_S32 width; 40*437bfbebSnyanmisaka RK_S32 height; 41*437bfbebSnyanmisaka RK_S32 hor_stride; 42*437bfbebSnyanmisaka RK_S32 ver_stride; 43*437bfbebSnyanmisaka 44*437bfbebSnyanmisaka /* -rc */ 45*437bfbebSnyanmisaka RK_S32 rc_mode; 46*437bfbebSnyanmisaka 47*437bfbebSnyanmisaka /* -bps */ 48*437bfbebSnyanmisaka RK_S32 bps_target; 49*437bfbebSnyanmisaka RK_S32 bps_max; 50*437bfbebSnyanmisaka RK_S32 bps_min; 51*437bfbebSnyanmisaka 52*437bfbebSnyanmisaka /* -fps */ 53*437bfbebSnyanmisaka RK_S32 fps_in_flex; 54*437bfbebSnyanmisaka RK_S32 fps_in_num; 55*437bfbebSnyanmisaka RK_S32 fps_in_den; 56*437bfbebSnyanmisaka RK_S32 fps_out_flex; 57*437bfbebSnyanmisaka RK_S32 fps_out_num; 58*437bfbebSnyanmisaka RK_S32 fps_out_den; 59*437bfbebSnyanmisaka 60*437bfbebSnyanmisaka /* -qc */ 61*437bfbebSnyanmisaka RK_S32 qp_init; 62*437bfbebSnyanmisaka RK_S32 qp_min; 63*437bfbebSnyanmisaka RK_S32 qp_max; 64*437bfbebSnyanmisaka RK_S32 qp_min_i; 65*437bfbebSnyanmisaka RK_S32 qp_max_i; 66*437bfbebSnyanmisaka 67*437bfbebSnyanmisaka /* -fqc */ 68*437bfbebSnyanmisaka RK_S32 fqp_min_i; 69*437bfbebSnyanmisaka RK_S32 fqp_min_p; 70*437bfbebSnyanmisaka RK_S32 fqp_max_i; 71*437bfbebSnyanmisaka RK_S32 fqp_max_p; 72*437bfbebSnyanmisaka 73*437bfbebSnyanmisaka /* -g gop mode */ 74*437bfbebSnyanmisaka RK_S32 gop_mode; 75*437bfbebSnyanmisaka RK_S32 gop_len; 76*437bfbebSnyanmisaka RK_S32 vi_len; 77*437bfbebSnyanmisaka 78*437bfbebSnyanmisaka /* -sm scene_mode */ 79*437bfbebSnyanmisaka RK_S32 scene_mode; 80*437bfbebSnyanmisaka RK_S32 rc_container; 81*437bfbebSnyanmisaka RK_S32 bias_i; 82*437bfbebSnyanmisaka RK_S32 bias_p; 83*437bfbebSnyanmisaka 84*437bfbebSnyanmisaka /* -qpdd cu_qp_delta_depth */ 85*437bfbebSnyanmisaka RK_S32 cu_qp_delta_depth; 86*437bfbebSnyanmisaka RK_S32 anti_flicker_str; 87*437bfbebSnyanmisaka RK_S32 atf_str; 88*437bfbebSnyanmisaka RK_S32 atr_str_i; 89*437bfbebSnyanmisaka RK_S32 atr_str_p; 90*437bfbebSnyanmisaka RK_S32 atl_str; 91*437bfbebSnyanmisaka RK_S32 sao_str_i; 92*437bfbebSnyanmisaka RK_S32 sao_str_p; 93*437bfbebSnyanmisaka RK_S32 lambda_idx_p; 94*437bfbebSnyanmisaka RK_S32 lambda_idx_i; 95*437bfbebSnyanmisaka RK_S32 speed; 96*437bfbebSnyanmisaka /* -dbe deblur enable flag 97*437bfbebSnyanmisaka * -dbs deblur strength 98*437bfbebSnyanmisaka */ 99*437bfbebSnyanmisaka RK_S32 deblur_en; 100*437bfbebSnyanmisaka RK_S32 deblur_str; 101*437bfbebSnyanmisaka 102*437bfbebSnyanmisaka /* -v q runtime log disable flag */ 103*437bfbebSnyanmisaka RK_U32 quiet; 104*437bfbebSnyanmisaka /* -v f runtime fps log flag */ 105*437bfbebSnyanmisaka RK_U32 trace_fps; 106*437bfbebSnyanmisaka FpsCalc fps; 107*437bfbebSnyanmisaka RK_U32 psnr_en; 108*437bfbebSnyanmisaka RK_U32 ssim_en; 109*437bfbebSnyanmisaka char *file_slt; 110*437bfbebSnyanmisaka RK_U32 kmpp_en; 111*437bfbebSnyanmisaka } MpiEncTestArgs; 112*437bfbebSnyanmisaka 113*437bfbebSnyanmisaka #ifdef __cplusplus 114*437bfbebSnyanmisaka extern "C" { 115*437bfbebSnyanmisaka #endif 116*437bfbebSnyanmisaka 117*437bfbebSnyanmisaka RK_S32 mpi_enc_width_default_stride(RK_S32 width, MppFrameFormat fmt); 118*437bfbebSnyanmisaka 119*437bfbebSnyanmisaka /* 120*437bfbebSnyanmisaka * gop_mode 121*437bfbebSnyanmisaka * 0 - default IPPPP gop 122*437bfbebSnyanmisaka * 1 ~ 3 - tsvc2 ~ tsvc4 123*437bfbebSnyanmisaka * >= 4 - smart gop mode 124*437bfbebSnyanmisaka */ 125*437bfbebSnyanmisaka MPP_RET mpi_enc_gen_ref_cfg(MppEncRefCfg ref, RK_S32 gop_mode); 126*437bfbebSnyanmisaka MPP_RET mpi_enc_gen_smart_gop_ref_cfg(MppEncRefCfg ref, RK_S32 gop_len, RK_S32 vi_len); 127*437bfbebSnyanmisaka MPP_RET mpi_enc_gen_osd_data(MppEncOSDData *osd_data, MppBufferGroup group, 128*437bfbebSnyanmisaka RK_U32 width, RK_U32 height, RK_U32 frame_cnt); 129*437bfbebSnyanmisaka MPP_RET mpi_enc_gen_osd_plt(MppEncOSDPlt *osd_plt, RK_U32 frame_cnt); 130*437bfbebSnyanmisaka 131*437bfbebSnyanmisaka MpiEncTestArgs *mpi_enc_test_cmd_get(void); 132*437bfbebSnyanmisaka MPP_RET mpi_enc_test_cmd_update_by_args(MpiEncTestArgs* cmd, int argc, char **argv); 133*437bfbebSnyanmisaka MPP_RET mpi_enc_test_cmd_put(MpiEncTestArgs* cmd); 134*437bfbebSnyanmisaka 135*437bfbebSnyanmisaka MPP_RET mpi_enc_test_cmd_show_opt(MpiEncTestArgs* cmd); 136*437bfbebSnyanmisaka 137*437bfbebSnyanmisaka #ifdef __cplusplus 138*437bfbebSnyanmisaka } 139*437bfbebSnyanmisaka #endif 140*437bfbebSnyanmisaka 141*437bfbebSnyanmisaka #endif /*__MPI_ENC_UTILS_H__*/ 142