[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:
Herman Chen
2017-06-12 16:04:24 +08:00
parent f67a1a689a
commit c360c70be2

View File

@@ -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!");