Files
mpp/utils/mpi_enc_utils.h
toby.zhang 02095f66d3 feat[vepu510]: Sync code from enc_tune branch
1. Add cu_qp_delta_depth cfg
2. Configure AQ regs for H.265
3. Configure regs according to scene mode
4. Support fixed frame level QP
5. Add RDO lambda table index
6. Update stat info for HEVC
7. Add tuning code for H.264 encoder

Change-Id: Id7dae4ed55e1b94622aee72cfce8f24c833d00e1
Signed-off-by: Tingjin Huang <timkingh.huang@rock-chips.com>
2024-08-27 10:08:49 +08:00

122 lines
3.4 KiB
C

/*
* Copyright 2015 Rockchip Electronics Co. LTD
*
* 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.
*/
#ifndef __MPI_ENC_UTILS_H__
#define __MPI_ENC_UTILS_H__
#include <stdio.h>
#include "rk_venc_cmd.h"
#include "iniparser.h"
typedef struct MpiEncTestArgs_t {
char *file_input;
char *file_output;
char *file_cfg;
dictionary *cfg_ini;
MppCodingType type;
MppCodingType type_src; /* for file source input */
MppFrameFormat format;
RK_S32 frame_num;
RK_S32 loop_cnt;
RK_S32 nthreads;
RK_S32 width;
RK_S32 height;
RK_S32 hor_stride;
RK_S32 ver_stride;
/* -rc */
RK_S32 rc_mode;
/* -bps */
RK_S32 bps_target;
RK_S32 bps_max;
RK_S32 bps_min;
/* -fps */
RK_S32 fps_in_flex;
RK_S32 fps_in_num;
RK_S32 fps_in_den;
RK_S32 fps_out_flex;
RK_S32 fps_out_num;
RK_S32 fps_out_den;
/* -qc */
RK_S32 qp_init;
RK_S32 qp_min;
RK_S32 qp_max;
RK_S32 qp_min_i;
RK_S32 qp_max_i;
/* -fqc */
RK_S32 fqp_min_i;
RK_S32 fqp_min_p;
RK_S32 fqp_max_i;
RK_S32 fqp_max_p;
/* -g gop mode */
RK_S32 gop_mode;
RK_S32 gop_len;
RK_S32 vi_len;
/* -sm scene_mode */
RK_S32 scene_mode;
/* -qpdd cu_qp_delta_depth */
RK_S32 cu_qp_delta_depth;
/* -v q runtime log disable flag */
RK_U32 quiet;
/* -v f runtime fps log flag */
RK_U32 trace_fps;
FpsCalc fps;
RK_U32 psnr_en;
RK_U32 ssim_en;
char *file_slt;
} MpiEncTestArgs;
#ifdef __cplusplus
extern "C" {
#endif
RK_S32 mpi_enc_width_default_stride(RK_S32 width, MppFrameFormat fmt);
/*
* gop_mode
* 0 - default IPPPP gop
* 1 ~ 3 - tsvc2 ~ tsvc4
* >= 4 - smart gop mode
*/
MPP_RET mpi_enc_gen_ref_cfg(MppEncRefCfg ref, RK_S32 gop_mode);
MPP_RET mpi_enc_gen_smart_gop_ref_cfg(MppEncRefCfg ref, RK_S32 gop_len, RK_S32 vi_len);
MPP_RET mpi_enc_gen_osd_data(MppEncOSDData *osd_data, MppBufferGroup group,
RK_U32 width, RK_U32 height, RK_U32 frame_cnt);
MPP_RET mpi_enc_gen_osd_plt(MppEncOSDPlt *osd_plt, RK_U32 frame_cnt);
MpiEncTestArgs *mpi_enc_test_cmd_get(void);
MPP_RET mpi_enc_test_cmd_update_by_args(MpiEncTestArgs* cmd, int argc, char **argv);
MPP_RET mpi_enc_test_cmd_put(MpiEncTestArgs* cmd);
MPP_RET mpi_enc_test_cmd_show_opt(MpiEncTestArgs* cmd);
#ifdef __cplusplus
}
#endif
#endif /*__MPI_ENC_UTILS_H__*/