From 8e0a1017c327cfad275ec4f7f4e56b6f95d52037 Mon Sep 17 00:00:00 2001 From: Zhao Yakui Date: Tue, 24 May 2016 08:00:32 -0400 Subject: [PATCH] Add the VAEncMacroblockMapBufferType buffer for encoding Signed-off-by: Zhao Yakui Reviewed-by: Sean V Kelley --- src/i965_drv_video.c | 9 +++++++++ src/i965_drv_video.h | 1 + 2 files changed, 10 insertions(+) diff --git a/src/i965_drv_video.c b/src/i965_drv_video.c index 259bfc0..7ee889a 100644 --- a/src/i965_drv_video.c +++ b/src/i965_drv_video.c @@ -2090,6 +2090,7 @@ i965_destroy_context(struct object_heap *heap, struct object_base *obj) i965_release_buffer_store(&obj_context->codec_state.encode.packed_header_data_ext[i]); free(obj_context->codec_state.encode.packed_header_data_ext); + i965_release_buffer_store(&obj_context->codec_state.encode.encmb_map); } else { assert(obj_context->codec_state.decode.num_slice_params <= obj_context->codec_state.decode.max_slice_params); assert(obj_context->codec_state.decode.num_slice_datas <= obj_context->codec_state.decode.max_slice_datas); @@ -2361,6 +2362,7 @@ i965_create_buffer_internal(VADriverContextP ctx, case VAProcFilterParameterBufferType: case VAHuffmanTableBufferType: case VAProbabilityBufferType: + case VAEncMacroblockMapBufferType: /* Ok */ break; @@ -2421,6 +2423,7 @@ i965_create_buffer_internal(VADriverContextP ctx, } else if (type == VASliceDataBufferType || type == VAImageBufferType || type == VAEncCodedBufferType || + type == VAEncMacroblockMapBufferType || type == VAProbabilityBufferType) { /* If the buffer is wrapped, the bo/buffer of buffer_store is bogus. @@ -2799,6 +2802,7 @@ i965_BeginPicture(VADriverContextP ctx, obj_context->codec_state.encode.num_packed_header_data_ext = 0; obj_context->codec_state.encode.slice_index = 0; obj_context->codec_state.encode.vps_sps_seq_index = 0; + i965_release_buffer_store(&obj_context->codec_state.encode.encmb_map); } else { obj_context->codec_state.decode.current_render_target = render_target; i965_release_buffer_store(&obj_context->codec_state.decode.pic_param); @@ -3064,6 +3068,7 @@ DEF_RENDER_ENCODE_SINGLE_BUFFER_FUNC(huffman_table, huffman_table) /* extended buffer */ DEF_RENDER_ENCODE_SINGLE_BUFFER_FUNC(sequence_parameter_ext, seq_param_ext) DEF_RENDER_ENCODE_SINGLE_BUFFER_FUNC(picture_parameter_ext, pic_param_ext) +DEF_RENDER_ENCODE_SINGLE_BUFFER_FUNC(encmb_map, encmb_map) #define DEF_RENDER_ENCODE_MULTI_BUFFER_FUNC(name, member) DEF_RENDER_MULTI_BUFFER_FUNC(encode, name, member) // DEF_RENDER_ENCODE_MULTI_BUFFER_FUNC(slice_parameter, slice_params) @@ -3335,6 +3340,10 @@ i965_encoder_render_picture(VADriverContextP ctx, obj_buffer); break; + case VAEncMacroblockMapBufferType: + vaStatus = I965_RENDER_ENCODE_BUFFER(encmb_map); + break; + default: vaStatus = VA_STATUS_ERROR_UNSUPPORTED_BUFFERTYPE; break; diff --git a/src/i965_drv_video.h b/src/i965_drv_video.h index 2053bc8..93f9921 100644 --- a/src/i965_drv_video.h +++ b/src/i965_drv_video.h @@ -159,6 +159,7 @@ struct encode_state struct buffer_store *packed_header_param[5]; struct buffer_store *packed_header_data[5]; struct buffer_store **slice_params_ext; + struct buffer_store *encmb_map; int max_slice_params_ext; int num_slice_params_ext; -- 2.11.0