summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaihao Xiang <haihao.xiang@intel.com>2018-12-20 09:06:51 +0800
committerXiang, Haihao <haihao.xiang@intel.com>2019-01-08 10:19:19 +0800
commit449c6f91b38417d0baa0e463338760cb118ce9a5 (patch)
tree9120f7aa524e0f3d5c13942828776bcd93ee2d59
parent72f10f16f7e5767492acde130eeeaa598d26a3a6 (diff)
downloadlibva-intel-driver-449c6f91b38417d0baa0e463338760cb118ce9a5.tar.gz
HEVC encoder: correct the minimal bitrate for VBR
This fixes https://github.com/intel/intel-vaapi-driver/issues/430 Signed-off-by: Haihao Xiang <haihao.xiang@intel.com> Tested-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
-rw-r--r--src/gen9_hevc_encoder.c29
1 files changed, 14 insertions, 15 deletions
diff --git a/src/gen9_hevc_encoder.c b/src/gen9_hevc_encoder.c
index d5b2d3b0..c8d04273 100644
--- a/src/gen9_hevc_encoder.c
+++ b/src/gen9_hevc_encoder.c
@@ -1760,26 +1760,25 @@ gen9_hevc_brc_prepare(struct encode_state *encode_state,
else
priv_state->lcu_brc_enabled = 0;
+ priv_state->max_bit_rate_in_kbs =
+ ALIGN(encoder_context->brc.bits_per_second[0], HEVC_BRC_KBPS) /
+ HEVC_BRC_KBPS;
+
if (brc_method == HEVC_BRC_CBR) {
- priv_state->target_bit_rate_in_kbs =
- ALIGN(encoder_context->brc.bits_per_second[0], HEVC_BRC_KBPS) /
- HEVC_BRC_KBPS;
- priv_state->max_bit_rate_in_kbs = priv_state->target_bit_rate_in_kbs;
- priv_state->min_bit_rate_in_kbs = priv_state->target_bit_rate_in_kbs;
+ priv_state->target_bit_rate_in_kbs = priv_state->max_bit_rate_in_kbs;
+ priv_state->min_bit_rate_in_kbs = priv_state->max_bit_rate_in_kbs;
} else {
- if (encoder_context->brc.target_percentage[0] > HEVC_BRC_MIN_TARGET_PERCENTAGE) {
- priv_state->target_bit_rate_in_kbs =
- ALIGN(encoder_context->brc.bits_per_second[0], HEVC_BRC_KBPS) /
- HEVC_BRC_KBPS;
- priv_state->max_bit_rate_in_kbs = priv_state->target_bit_rate_in_kbs;
- priv_state->min_bit_rate_in_kbs = priv_state->target_bit_rate_in_kbs *
+ if (encoder_context->brc.target_percentage[0] > HEVC_BRC_MIN_TARGET_PERCENTAGE)
+ priv_state->min_bit_rate_in_kbs = priv_state->max_bit_rate_in_kbs *
(2 * encoder_context->brc.target_percentage[0] - 100) /
100;
- priv_state->target_bit_rate_in_kbs = priv_state->max_bit_rate_in_kbs *
- encoder_context->brc.target_percentage[0] / 100;
+ else
+ priv_state->min_bit_rate_in_kbs = 0;
- brc_reset = 1;
- }
+ priv_state->target_bit_rate_in_kbs = priv_state->max_bit_rate_in_kbs *
+ encoder_context->brc.target_percentage[0] / 100;
+
+ brc_reset = 1;
}
if (encoder_context->brc.framerate[0].den)