diff --git a/mpp/codec/enc/h264/h264e_api_v2.c b/mpp/codec/enc/h264/h264e_api_v2.c index 4fd0ccba..2fc5cbe5 100644 --- a/mpp/codec/enc/h264/h264e_api_v2.c +++ b/mpp/codec/enc/h264/h264e_api_v2.c @@ -17,6 +17,7 @@ #define MODULE_TAG "h264e_api_v2" #include +#include #include "mpp_env.h" #include "mpp_mem.h" @@ -180,10 +181,10 @@ static void init_h264e_cfg_set(MppEncCfgSet *cfg, MppClientType type) rc_cfg->qp_max_i = 0; rc_cfg->qp_min_i = 0; rc_cfg->qp_delta_ip = 2; - rc_cfg->fqp_min_i = 10; - rc_cfg->fqp_min_p = 10; - rc_cfg->fqp_max_i = 51; - rc_cfg->fqp_max_p = 51; + rc_cfg->fqp_min_i = INT_MAX; + rc_cfg->fqp_min_p = INT_MAX; + rc_cfg->fqp_max_i = INT_MAX; + rc_cfg->fqp_max_p = INT_MAX; } static void h264e_add_syntax(H264eCtx *ctx, H264eSyntaxType type, void *p) diff --git a/mpp/codec/enc/h265/h265e_api.c b/mpp/codec/enc/h265/h265e_api.c index 5aeaff32..852acb96 100644 --- a/mpp/codec/enc/h265/h265e_api.c +++ b/mpp/codec/enc/h265/h265e_api.c @@ -17,6 +17,7 @@ #define MODULE_TAG "h265e_api" #include +#include #include "mpp_env.h" #include "mpp_mem.h" @@ -164,10 +165,10 @@ static MPP_RET h265e_init(void *ctx, EncImplCfg *ctrlCfg) rc_cfg->qp_min_i = 15; rc_cfg->qp_delta_ip = 4; rc_cfg->qp_delta_vi = 2; - rc_cfg->fqp_min_i = 10; - rc_cfg->fqp_min_p = 10; - rc_cfg->fqp_max_i = 51; - rc_cfg->fqp_max_p = 51; + rc_cfg->fqp_min_i = INT_MAX; + rc_cfg->fqp_min_p = INT_MAX; + rc_cfg->fqp_max_i = INT_MAX; + rc_cfg->fqp_max_p = INT_MAX; INIT_LIST_HEAD(&p->rc_list); diff --git a/mpp/codec/enc/vp8/vp8e_api_v2.c b/mpp/codec/enc/vp8/vp8e_api_v2.c index 52489b56..00be169c 100644 --- a/mpp/codec/enc/vp8/vp8e_api_v2.c +++ b/mpp/codec/enc/vp8/vp8e_api_v2.c @@ -16,7 +16,7 @@ #define MODULE_TAG "vp8e_api_v2" #include -#include +#include #include "mpp_env.h" #include "mpp_mem.h" @@ -103,10 +103,10 @@ static MPP_RET vp8e_init(void *ctx, EncImplCfg *ctrl_cfg) rc_cfg->fps_out_denorm = 1; rc_cfg->gop = 60; rc_cfg->max_reenc_times = 1; - rc_cfg->fqp_min_i = 0; - rc_cfg->fqp_min_p = 0; - rc_cfg->fqp_max_i = 127; - rc_cfg->fqp_max_p = 127; + rc_cfg->fqp_min_i = INT_MAX; + rc_cfg->fqp_min_p = INT_MAX; + rc_cfg->fqp_max_i = INT_MAX; + rc_cfg->fqp_max_p = INT_MAX; p->rc = mpp_calloc(Vp8eRc, 1); memset(p->rc, 0, sizeof(Vp8eRc)); diff --git a/mpp/codec/mpp_enc_impl.cpp b/mpp/codec/mpp_enc_impl.cpp index f8b2d297..20eae625 100644 --- a/mpp/codec/mpp_enc_impl.cpp +++ b/mpp/codec/mpp_enc_impl.cpp @@ -1232,10 +1232,6 @@ static void set_rc_cfg(RcCfg *cfg, MppEncCfgSet *cfg_set) cfg->max_i_bit_prop = rc->max_i_prop; cfg->min_i_bit_prop = rc->min_i_prop; cfg->init_ip_ratio = rc->init_ip_ratio; - cfg->fqp_min_p = rc->fqp_min_p; - cfg->fqp_min_i = rc->fqp_min_i; - cfg->fqp_max_p = rc->fqp_max_p; - cfg->fqp_max_i = rc->fqp_max_i; cfg->bps_target = rc->bps_target; cfg->bps_max = rc->bps_max; @@ -1262,6 +1258,10 @@ static void set_rc_cfg(RcCfg *cfg, MppEncCfgSet *cfg_set) cfg->min_i_quality = rc->qp_min_i ? rc->qp_min_i : rc->qp_min; cfg->i_quality_delta = rc->qp_delta_ip; cfg->vi_quality_delta = rc->qp_delta_vi; + cfg->fqp_min_p = rc->fqp_min_p == INT_MAX ? cfg->min_quality : rc->fqp_min_p; + cfg->fqp_min_i = rc->fqp_min_i == INT_MAX ? cfg->min_i_quality : rc->fqp_min_i; + cfg->fqp_max_p = rc->fqp_max_p == INT_MAX ? cfg->max_quality : rc->fqp_max_p; + cfg->fqp_max_i = rc->fqp_max_i == INT_MAX ? cfg->max_i_quality : rc->fqp_max_i; } break; case MPP_VIDEO_CodingMJPEG : { MppEncJpegCfg *jpeg = &codec->jpeg; @@ -1271,10 +1271,10 @@ static void set_rc_cfg(RcCfg *cfg, MppEncCfgSet *cfg_set) cfg->min_quality = jpeg->qf_min; cfg->max_i_quality = jpeg->qf_max; cfg->min_i_quality = jpeg->qf_min; - cfg->fqp_min_i = jpeg->qf_min; - cfg->fqp_max_i = jpeg->qf_max; - cfg->fqp_min_p = jpeg->qf_min; - cfg->fqp_max_p = jpeg->qf_max; + cfg->fqp_min_i = 100 - jpeg->qf_max; + cfg->fqp_max_i = 100 - jpeg->qf_min; + cfg->fqp_min_p = 100 - jpeg->qf_max; + cfg->fqp_max_p = 100 - jpeg->qf_min; } break; default : { mpp_err_f("unsupport coding type %d\n", codec->coding);