mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-06 17:46:50 +08:00
[h264e]: Add parameter check for H.264 encoder
Check rc mode, quality and bps parameter. NOTE: current H.264 bitrate only accept range from 10K to 100M. Change-Id: I7cacf2e3f7093bc55e1f5686f06b0efdbf865a4d Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
@@ -213,9 +213,32 @@ MPP_RET h264e_config(void *ctx, RK_S32 cmd, void *param)
|
|||||||
p->idr_request++;
|
p->idr_request++;
|
||||||
} break;
|
} break;
|
||||||
case MPP_ENC_SET_RC_CFG : {
|
case MPP_ENC_SET_RC_CFG : {
|
||||||
mpp_log_f("MPP_ENC_SET_RC_CFG bps %d [%d : %d]\n", p->set->rc.bps_target,
|
MppEncRcCfg *rc = &p->set->rc;
|
||||||
p->set->rc.bps_min, p->set->rc.bps_max);
|
|
||||||
|
if (rc->rc_mode >= MPP_ENC_RC_MODE_BUTT) {
|
||||||
|
mpp_err("invalid rc mode %d should be RC_MODE_VBR or RC_MODE_CBR\n",
|
||||||
|
rc->rc_mode);
|
||||||
|
ret = MPP_ERR_VALUE;
|
||||||
|
}
|
||||||
|
if (rc->quality >= MPP_ENC_RC_QUALITY_BUTT) {
|
||||||
|
mpp_err("invalid quality %d should be from QUALITY_WORST to QUALITY_BEST\n",
|
||||||
|
rc->quality);
|
||||||
|
ret = MPP_ERR_VALUE;
|
||||||
|
}
|
||||||
|
if ((rc->bps_target >= 100 * SZ_1M || rc->bps_target <= 1 * SZ_1K) ||
|
||||||
|
(rc->bps_max >= 100 * SZ_1M || rc->bps_max <= 1 * SZ_1K) ||
|
||||||
|
(rc->bps_min >= 100 * SZ_1M || rc->bps_min <= 1 * SZ_1K)) {
|
||||||
|
mpp_err("invalid bit per second %d [%d:%d] out of range 1K~100M\n",
|
||||||
|
rc->bps_target, rc->bps_min, rc->bps_max);
|
||||||
|
ret = MPP_ERR_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ret) {
|
||||||
|
mpp_log_f("MPP_ENC_SET_RC_CFG bps %d [%d : %d]\n",
|
||||||
|
rc->bps_target, rc->bps_min, rc->bps_max);
|
||||||
p->rc_ready = 1;
|
p->rc_ready = 1;
|
||||||
|
} else
|
||||||
|
mpp_err_f("failed to accept new rc config\n");
|
||||||
} break;
|
} break;
|
||||||
default:
|
default:
|
||||||
mpp_err("No correspond cmd found, and can not config!");
|
mpp_err("No correspond cmd found, and can not config!");
|
||||||
|
Reference in New Issue
Block a user