Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Gen9 H.264 encoders: Fix condition for enabling MB rate control
As documented in va.h, it should not be enabled when the user passes
the value 2 here.  This now matches the behaviour of the H.265
encoder.

Fixes #166.

Signed-off-by: Mark Thompson <sw@jkqxz.net>
  • Loading branch information
fhvwy authored and xhaihao committed May 16, 2017
1 parent 51839c1 commit 0dd6ba4
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 3 deletions.
4 changes: 2 additions & 2 deletions src/gen9_avc_encoder.c
Expand Up @@ -424,15 +424,15 @@ gen9_avc_update_misc_parameters(VADriverContextP ctx,

if (generic_state->internal_rate_mode == VA_RC_CBR) {
generic_state->min_bit_rate = generic_state->max_bit_rate;
generic_state->mb_brc_enabled = encoder_context->brc.mb_rate_control[0];
generic_state->mb_brc_enabled = encoder_context->brc.mb_rate_control[0] == 1;

if (generic_state->target_bit_rate != generic_state->max_bit_rate) {
generic_state->target_bit_rate = generic_state->max_bit_rate;
generic_state->brc_need_reset = 1;
}
} else if (generic_state->internal_rate_mode == VA_RC_VBR) {
generic_state->min_bit_rate = generic_state->max_bit_rate * (2 * encoder_context->brc.target_percentage[0] - 100) / 100;
generic_state->mb_brc_enabled = encoder_context->brc.mb_rate_control[0];
generic_state->mb_brc_enabled = encoder_context->brc.mb_rate_control[0] == 1;

if (generic_state->target_bit_rate != generic_state->max_bit_rate * encoder_context->brc.target_percentage[0] / 100) {
generic_state->target_bit_rate = generic_state->max_bit_rate * encoder_context->brc.target_percentage[0] / 100;
Expand Down
2 changes: 1 addition & 1 deletion src/gen9_vdenc.c
Expand Up @@ -860,7 +860,7 @@ gen9_vdenc_update_misc_parameters(VADriverContextP ctx,
vdenc_context->init_vbv_buffer_fullness_in_bit = encoder_context->brc.hrd_initial_buffer_fullness;

vdenc_context->max_bit_rate = ALIGN(encoder_context->brc.bits_per_second[0], 1000) / 1000;
vdenc_context->mb_brc_enabled = encoder_context->brc.mb_rate_control[0];
vdenc_context->mb_brc_enabled = encoder_context->brc.mb_rate_control[0] == 1;
vdenc_context->brc_need_reset = (vdenc_context->brc_initted && encoder_context->brc.need_reset);

if (vdenc_context->internal_rate_mode == I965_BRC_CBR) {
Expand Down

0 comments on commit 0dd6ba4

Please sign in to comment.