diff options
author | Xiang, Haihao <haihao.xiang@intel.com> | 2014-01-17 16:46:52 +0800 |
---|---|---|
committer | Xiang, Haihao <haihao.xiang@intel.com> | 2014-02-27 10:30:26 +0800 |
commit | df966b871c4d321bf332821b22619cfa5519941e (patch) | |
tree | fc55a22685de1d7614f487e1ae3959ab24026e04 | |
parent | 2151cda3d3a0d7c96cd19f9b89c18d30a4b612ef (diff) | |
download | libva-intel-driver-df966b871c4d321bf332821b22619cfa5519941e.tar.gz libva-intel-driver-df966b871c4d321bf332821b22619cfa5519941e.tar.bz2 libva-intel-driver-df966b871c4d321bf332821b22619cfa5519941e.zip |
Don't advertise CBR for MPEG-2 encoding
Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
-rw-r--r-- | src/gen6_mfc_common.c | 2 | ||||
-rwxr-xr-x | src/i965_drv_video.c | 6 | ||||
-rw-r--r-- | src/i965_encoder.c | 7 |
3 files changed, 14 insertions, 1 deletions
diff --git a/src/gen6_mfc_common.c b/src/gen6_mfc_common.c index 31573ba..26d8400 100644 --- a/src/gen6_mfc_common.c +++ b/src/gen6_mfc_common.c @@ -391,6 +391,8 @@ void intel_mfc_brc_prepare(struct encode_state *encode_state, struct gen6_mfc_context *mfc_context = encoder_context->mfc_context; if (rate_control_mode == VA_RC_CBR) { + assert(encoder_context->codec != CODEC_MPEG2); + /*Programing bit rate control */ if ( mfc_context->bit_rate_control_context[SLICE_TYPE_I].MaxSizeInWord == 0 ) { intel_mfc_bit_rate_control_context_init(encode_state, mfc_context); diff --git a/src/i965_drv_video.c b/src/i965_drv_video.c index ee8e7d4..8c5894c 100755 --- a/src/i965_drv_video.c +++ b/src/i965_drv_video.c @@ -527,7 +527,11 @@ i965_GetConfigAttributes(VADriverContextP ctx, case VAConfigAttribRateControl: if (entrypoint == VAEntrypointEncSlice) { - attrib_list[i].value = VA_RC_CBR | VA_RC_CQP; + attrib_list[i].value = VA_RC_CQP; + + if (profile != VAProfileMPEG2Main && + profile != VAProfileMPEG2Simple) + attrib_list[i].value |= VA_RC_CBR; break; } diff --git a/src/i965_encoder.c b/src/i965_encoder.c index 9bf133f..534591c 100644 --- a/src/i965_encoder.c +++ b/src/i965_encoder.c @@ -367,6 +367,13 @@ intel_enc_hw_context_init(VADriverContextP ctx, for (i = 0; i < obj_config->num_attribs; i++) { if (obj_config->attrib_list[i].type == VAConfigAttribRateControl) { encoder_context->rate_control_mode = obj_config->attrib_list[i].value; + + if (encoder_context->codec == CODEC_MPEG2 && + encoder_context->rate_control_mode & VA_RC_CBR) { + WARN_ONCE("Don't support CBR for MPEG-2 encoding\n"); + encoder_context->rate_control_mode &= ~VA_RC_CBR; + } + break; } } |