aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhding3 <haitao.ding@intel.com>2014-12-18 17:13:47 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-12-18 17:13:47 +0000
commit0ba3b647c0f5a837615539a7a0929aee14925282 (patch)
tree838bf90ed7cedf22599d169828a78246d1de9285
parent8b201099dcc357276e6b562a161bcd6d0aab409d (diff)
parentfe436fee778fb0470d1d07150a8150eb38232533 (diff)
downloadpsb_video-0ba3b647c0f5a837615539a7a0929aee14925282.tar.gz
am fe436fee: Fix VP8 encoder realted CTS issue .
* commit 'fe436fee778fb0470d1d07150a8150eb38232533': Fix VP8 encoder realted CTS issue .
-rw-r--r--src/vsp_vp8.c31
1 files changed, 23 insertions, 8 deletions
diff --git a/src/vsp_vp8.c b/src/vsp_vp8.c
index a60e9d0..1e6bb9b 100644
--- a/src/vsp_vp8.c
+++ b/src/vsp_vp8.c
@@ -559,9 +559,17 @@ static VAStatus vsp_vp8_process_misc_param(context_VPP_p ctx, object_buffer_p ob
break;
case VAEncMiscParameterTypeFrameRate:
frame_rate_param = (VAEncMiscParameterFrameRate *)pBuffer->data;
- if (frame_rate_param->framerate < 1 || frame_rate_param->framerate > 65535) {
- vaStatus = VA_STATUS_ERROR_INVALID_PARAMETER;
- break;
+ if (frame_rate_param->framerate > 120) {
+ drv_debug_msg(VIDEO_DEBUG_ERROR, "%d is invalid."
+ "framerate could not be larger than 120\n",
+ frame_rate_param->framerate);
+ frame_rate_param->framerate = 120;
+ }
+ if (frame_rate_param->framerate < 1) {
+ drv_debug_msg(VIDEO_DEBUG_ERROR, "%d is invalid."
+ "framerate could not be smaller than 1\n",
+ frame_rate_param->framerate);
+ frame_rate_param->framerate = 1;
}
if (ctx->temporal_layer_number == 1) {
@@ -587,13 +595,13 @@ static VAStatus vsp_vp8_process_misc_param(context_VPP_p ctx, object_buffer_p ob
break;
case VAEncMiscParameterTypeRateControl:
rate_control_param = (VAEncMiscParameterRateControl *)pBuffer->data;
- if (rate_control_param->initial_qp > 63 ||
+ if (rate_control_param->max_qp > 63 ||
rate_control_param->min_qp > 63) {
- drv_debug_msg(VIDEO_DEBUG_ERROR, "Initial_qp(%d) and min_qpinitial_qp(%d) "
+ drv_debug_msg(VIDEO_DEBUG_ERROR, "max_qp(%d) and min_qp(%d) "
"are invalid.\nQP shouldn't be larger than 63 for VP8\n",
- rate_control_param->initial_qp, rate_control_param->min_qp);
- vaStatus = VA_STATUS_ERROR_INVALID_PARAMETER;
- break;
+ rate_control_param->max_qp, rate_control_param->min_qp);
+ rate_control_param->max_qp = 63;
+ rate_control_param->min_qp = rate_control_param->max_qp;
}
if (rate_control_param->min_qp != seq->rc_min_quantizer) {
@@ -616,6 +624,13 @@ static VAStatus vsp_vp8_process_misc_param(context_VPP_p ctx, object_buffer_p ob
seq->rc_undershoot_pct = rate_control_param->target_percentage;
}
+ if (rate_control_param->bits_per_second / 1000 > 20000) {
+ drv_debug_msg(VIDEO_DEBUG_ERROR, "%d is invalid."
+ "bitrate could not be larger than 20000\n",
+ rate_control_param->bits_per_second / 1000);
+ rate_control_param->bits_per_second = 20000000;
+ }
+
if (ctx->temporal_layer_number == 1) {
if (rate_control_param->bits_per_second / 1000 != seq->rc_target_bitrate) {
drv_debug_msg(VIDEO_DEBUG_ERROR, "bitrate was changed from %dkbps to %dkbps\n",