summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXiang, Haihao <haihao.xiang@intel.com>2014-01-17 16:46:52 +0800
committerXiang, Haihao <haihao.xiang@intel.com>2014-02-27 10:30:26 +0800
commitdf966b871c4d321bf332821b22619cfa5519941e (patch)
treefc55a22685de1d7614f487e1ae3959ab24026e04
parent2151cda3d3a0d7c96cd19f9b89c18d30a4b612ef (diff)
downloadlibva-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.c2
-rwxr-xr-xsrc/i965_drv_video.c6
-rw-r--r--src/i965_encoder.c7
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;
}
}