diff options
author | hding3 <haitao.ding@intel.com> | 2014-12-18 17:13:47 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-12-18 17:13:47 +0000 |
commit | 0ba3b647c0f5a837615539a7a0929aee14925282 (patch) | |
tree | 838bf90ed7cedf22599d169828a78246d1de9285 | |
parent | 8b201099dcc357276e6b562a161bcd6d0aab409d (diff) | |
parent | fe436fee778fb0470d1d07150a8150eb38232533 (diff) | |
download | psb_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.c | 31 |
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", |