summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXiang, Haihao <haihao.xiang@intel.com>2013-09-02 16:23:36 +0800
committerXiang, Haihao <haihao.xiang@intel.com>2013-09-09 15:02:42 +0800
commitc9b8eadcd9b49f884bcb978dbc541c525502ffa9 (patch)
tree986045b60a81795831a4c3d7c46373edc976de74
parent719fbefea2930e40020cd7baab34240424619f02 (diff)
Support B frame for reference frame
Signed-off-by: Xiang, Haihao <haihao.xiang@intel.com>
-rw-r--r--src/i965_encoder_utils.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/i965_encoder_utils.c b/src/i965_encoder_utils.c
index 7f6f768..cc67d15 100644
--- a/src/i965_encoder_utils.c
+++ b/src/i965_encoder_utils.c
@@ -298,6 +298,7 @@ build_avc_slice_header(VAEncSequenceParameterBufferH264 *sps_param,
{
avc_bitstream bs;
int is_idr = !!pic_param->pic_fields.bits.idr_pic_flag;
+ int is_ref = !!pic_param->pic_fields.bits.reference_pic_flag;
avc_bitstream_start(&bs);
nal_start_code_prefix(&bs);
@@ -305,10 +306,12 @@ build_avc_slice_header(VAEncSequenceParameterBufferH264 *sps_param,
if (IS_I_SLICE(slice_param->slice_type)) {
nal_header(&bs, NAL_REF_IDC_HIGH, is_idr ? NAL_IDR : NAL_NON_IDR);
} else if (IS_P_SLICE(slice_param->slice_type)) {
- nal_header(&bs, NAL_REF_IDC_MEDIUM, is_idr ? NAL_IDR : NAL_NON_IDR);
+ assert(!is_idr);
+ nal_header(&bs, NAL_REF_IDC_MEDIUM, NAL_NON_IDR);
} else {
assert(IS_B_SLICE(slice_param->slice_type));
- nal_header(&bs, NAL_REF_IDC_NONE, is_idr ? NAL_IDR : NAL_NON_IDR);
+ assert(!is_idr);
+ nal_header(&bs, is_ref ? NAL_REF_IDC_LOW : NAL_REF_IDC_NONE, NAL_NON_IDR);
}
slice_header(&bs, sps_param, pic_param, slice_param);