summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjkyu <jiankang.yu@intel.com>2017-06-22 00:12:50 -0400
committerXiang, Haihao <haihao.xiang@intel.com>2018-01-18 09:27:20 +0800
commit3859af01e97d1c8f107b9ddf7f0983342e8e6998 (patch)
tree1dd4b4fb2b2ce0f14d2ca8adc1b144714c6c858c
parentc3c626865e61a127ca35325675f5b057ae7df8ed (diff)
downloadlibva-intel-driver-3859af01e97d1c8f107b9ddf7f0983342e8e6998.tar.gz
enc: Add restriction to vp9 encoder frame rate to avoid hang
Signed-off-by: jkyu <jiankang.yu@intel.com>
-rw-r--r--src/gen9_vp9_encoder.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/gen9_vp9_encoder.c b/src/gen9_vp9_encoder.c
index a9f2c8ca..858e1baa 100644
--- a/src/gen9_vp9_encoder.c
+++ b/src/gen9_vp9_encoder.c
@@ -46,6 +46,7 @@
#include "vp9_probs.h"
#include "gen9_vp9_const_def.h"
+#define MAX_VP9_ENCODER_FRAMERATE 60
#define MAX_VP9_ENCODER_SURFACES 64
#define MAX_URB_SIZE 4096 /* In register */
@@ -3723,6 +3724,11 @@ gen9_encode_vp9_check_parameter(VADriverContextP ctx,
vp9_state->gop_size = encoder_context->brc.gop_size;
vp9_state->framerate = encoder_context->brc.framerate[0];
+ if ((vp9_state->framerate.num / vp9_state->framerate.den) > MAX_VP9_ENCODER_FRAMERATE) {
+ vp9_state->framerate.num = MAX_VP9_ENCODER_FRAMERATE * vp9_state->framerate.den;
+ i965_log_info(ctx, "gen9_encode_vp9_check_parameter: Too high frame rate(num: %d, den: %d), max supported is %d fps.\n",
+ vp9_state->framerate.num, vp9_state->framerate.den, MAX_VP9_ENCODER_FRAMERATE);
+ }
if (encoder_context->rate_control_mode == VA_RC_CBR ||
!encoder_context->brc.target_percentage[0]) {