[Libva] [Libva-intel-driver PATCH 19/27] HEVC: update frame store index
Xiang, Haihao
haihao.xiang at intel.com
Wed Nov 19 07:05:34 PST 2014
Signed-off-by: Xiang, Haihao <haihao.xiang at intel.com>
---
src/gen9_mfd.c | 6 ++++++
src/gen9_mfd.h | 2 ++
src/i965_decoder_utils.c | 17 +++++++++++++++++
src/i965_decoder_utils.h | 9 +++++++++
src/intel_media.h | 1 +
5 files changed, 35 insertions(+)
diff --git a/src/gen9_mfd.c b/src/gen9_mfd.c
index d04b133..45550f4 100644
--- a/src/gen9_mfd.c
+++ b/src/gen9_mfd.c
@@ -77,6 +77,7 @@ gen9_hcpd_init_hevc_surface(VADriverContextP ctx,
if (!gen9_hevc_surface) {
gen9_hevc_surface = calloc(sizeof(GenHevcSurface), 1);
+ gen9_hevc_surface->base.frame_store_id = -1;
obj_surface->private_data = gen9_hevc_surface;
}
@@ -127,6 +128,11 @@ gen9_hcpd_hevc_decode_init(VADriverContextP ctx,
assert(decode_state->pic_param && decode_state->pic_param->buffer);
pic_param = (VAPictureParameterBufferHEVC *)decode_state->pic_param->buffer;
+ intel_update_hevc_frame_store_index(ctx,
+ decode_state,
+ pic_param,
+ gen9_hcpd_context->reference_surfaces,
+ &gen9_hcpd_context->fs_ctx);
gen9_hcpd_context->picture_width_in_pixels = pic_param->pic_width_in_luma_samples;
gen9_hcpd_context->picture_height_in_pixels = pic_param->pic_height_in_luma_samples;
diff --git a/src/gen9_mfd.h b/src/gen9_mfd.h
index 6cf6db3..727c579 100644
--- a/src/gen9_mfd.h
+++ b/src/gen9_mfd.h
@@ -41,6 +41,8 @@ struct gen9_hcpd_context
{
struct hw_context base;
+ GenFrameStoreContext fs_ctx;
+
GenFrameStore reference_surfaces[MAX_GEN_HCP_REFERENCE_FRAMES];
VAIQMatrixBufferHEVC iq_matrix_hevc;
diff --git a/src/i965_decoder_utils.c b/src/i965_decoder_utils.c
index 6cf9604..491b266 100644
--- a/src/i965_decoder_utils.c
+++ b/src/i965_decoder_utils.c
@@ -671,6 +671,23 @@ intel_update_avc_frame_store_index(
}
void
+intel_update_hevc_frame_store_index(
+ VADriverContextP ctx,
+ struct decode_state *decode_state,
+ VAPictureParameterBufferHEVC *pic_param,
+ GenFrameStore frame_store[MAX_GEN_HCP_REFERENCE_FRAMES],
+ GenFrameStoreContext *fs_ctx
+ )
+{
+ intel_update_codec_frame_store_index(ctx,
+ decode_state,
+ pic_param->CurrPic.pic_order_cnt,
+ frame_store,
+ MAX_GEN_HCP_REFERENCE_FRAMES,
+ fs_ctx);
+}
+
+void
gen75_update_avc_frame_store_index(
VADriverContextP ctx,
struct decode_state *decode_state,
diff --git a/src/i965_decoder_utils.h b/src/i965_decoder_utils.h
index 856f4c4..a447707 100644
--- a/src/i965_decoder_utils.h
+++ b/src/i965_decoder_utils.h
@@ -111,6 +111,15 @@ intel_update_avc_frame_store_index(
);
void
+intel_update_hevc_frame_store_index(
+ VADriverContextP ctx,
+ struct decode_state *decode_state,
+ VAPictureParameterBufferHEVC *pic_param,
+ GenFrameStore frame_store[MAX_GEN_HCP_REFERENCE_FRAMES],
+ GenFrameStoreContext *fs_ctx
+);
+
+void
gen75_update_avc_frame_store_index(
VADriverContextP ctx,
struct decode_state *decode_state,
diff --git a/src/intel_media.h b/src/intel_media.h
index e30a3f0..73a03c7 100644
--- a/src/intel_media.h
+++ b/src/intel_media.h
@@ -55,6 +55,7 @@ extern int intel_format_convert(float src, int out_int_bits, int out_frac_bits,i
typedef struct gen_hevc_surface GenHevcSurface;
struct gen_hevc_surface
{
+ GenCodecSurface base;
dri_bo *motion_vector_temporal_bo;
};
--
1.9.1
More information about the Libva
mailing list