diff options
author | Zhao Yakui <yakui.zhao@intel.com> | 2016-12-28 13:45:28 +0800 |
---|---|---|
committer | Xiang, Haihao <haihao.xiang@intel.com> | 2016-12-29 09:19:16 +0800 |
commit | 16d7fd3beb052eeb7368253e245642e2a3a251bd (patch) | |
tree | c3f38fbb7f100256a47b3cd27d8e779b25fff1eb /src/i965_encoder.c | |
parent | d63fee8e20a8e09b9acea90366c4431d6d35f8b9 (diff) | |
download | libva-intel-driver-16d7fd3beb052eeb7368253e245642e2a3a251bd.tar.gz |
Add new sequence flag check for HEVC/VP9 Encoding
Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
Reviewed-by: Xiang, Haihao<haihao.xiang@intel.com>
Diffstat (limited to 'src/i965_encoder.c')
-rw-r--r-- | src/i965_encoder.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/i965_encoder.c b/src/i965_encoder.c index be37b849..d4d74458 100644 --- a/src/i965_encoder.c +++ b/src/i965_encoder.c @@ -1047,8 +1047,15 @@ intel_encoder_check_hevc_parameter(VADriverContextP ctx, struct object_buffer *obj_buffer; VAEncPictureParameterBufferHEVC *pic_param = (VAEncPictureParameterBufferHEVC *)encode_state->pic_param_ext->buffer; VAEncSliceParameterBufferHEVC *slice_param; + VAEncSequenceParameterBufferHEVC *seq_param; int i; + seq_param = NULL; + + if (encode_state->seq_param_ext && + encode_state->seq_param_ext->buffer) + seq_param = (VAEncSequenceParameterBufferHEVC *)(encode_state->seq_param_ext->buffer); + assert(!(pic_param->decoded_curr_pic.flags & VA_PICTURE_HEVC_INVALID)); if (pic_param->decoded_curr_pic.flags & VA_PICTURE_HEVC_INVALID) @@ -1101,6 +1108,8 @@ intel_encoder_check_hevc_parameter(VADriverContextP ctx, /* TODO: add more check here */ } + encoder_context->is_new_sequence = (pic_param->pic_fields.bits.idr_pic_flag && seq_param); + return VA_STATUS_SUCCESS; error: @@ -1114,6 +1123,7 @@ intel_encoder_check_vp9_parameter(VADriverContextP ctx, { struct i965_driver_data *i965 = i965_driver_data(ctx); VAEncPictureParameterBufferVP9 *pic_param; + VAEncSequenceParameterBufferVP9 *seq_param; struct object_surface *obj_surface; struct object_buffer *obj_buffer; int i = 0; @@ -1124,6 +1134,11 @@ intel_encoder_check_vp9_parameter(VADriverContextP ctx, encode_state->pic_param_ext->buffer == NULL) return VA_STATUS_ERROR_INVALID_PARAMETER; + seq_param = NULL; + if (encode_state->seq_param_ext && + encode_state->seq_param_ext->buffer) + seq_param = (VAEncSequenceParameterBufferVP9 *)(encode_state->seq_param_ext->buffer); + pic_param = (VAEncPictureParameterBufferVP9 *)encode_state->pic_param_ext->buffer; obj_surface = SURFACE(pic_param->reconstructed_frame); @@ -1169,6 +1184,8 @@ intel_encoder_check_vp9_parameter(VADriverContextP ctx, for ( ; i < 16; i++) encode_state->reference_objects[i] = NULL; + encoder_context->is_new_sequence = (is_key_frame && seq_param); + return VA_STATUS_SUCCESS; error: |