[Libva] [libva-intel-driver PATCH 06/10] VP9 HWDec:add vp9 surface structure and related parameter
Xiang, Haihao
haihao.xiang at intel.com
Thu Dec 3 10:13:59 PST 2015
From: Pengfei Qu <Pengfei.Qu at intel.com>
Signed-off-by: Pengfei Qu <Pengfei.Qu at intel.com>
Signed-off-by: Sirisha Muppavarapu <sirisha.muppavarapu at intel.com>
Signed-off-by: peng.chen <peng.c.chen at intel.com>
---
src/i965_defines.h | 9 +++++++++
src/intel_media.h | 11 +++++++++++
src/intel_media_common.c | 24 ++++++++++++++++++++++++
3 files changed, 44 insertions(+)
diff --git a/src/i965_defines.h b/src/i965_defines.h
index 65c0b11..9ea8a9f 100755
--- a/src/i965_defines.h
+++ b/src/i965_defines.h
@@ -437,6 +437,9 @@
#define HCP_PAK_OBJECT HCP(0x21)
#define HCP_INSERT_PAK_OBJECT HCP(0x22)
+#define HCP_VP9_SEGMENT_STATE HCP(0x32)
+#define HCP_VP9_PIC_STATE HCP(0x30)
+
#define I965_DEPTHFORMAT_D32_FLOAT 1
#define BASE_ADDRESS_MODIFY (1 << 0)
@@ -906,6 +909,12 @@
#define HCP_CODEC_HEVC 0
+#define HCP_CODEC_VP9 1
+#define HCP_VP9_KEY_FRAME 0
+#define HCP_VP9_INTER_FRAME 1
+#define HCP_VP9_PROFILE0 0 /* 8 bit 420 only */
+#define HCP_VP9_PROFILE2 2 /* 10 bits 420 only */
+
#define HCP_CODEC_SELECT_DECODE 0
#define HCP_CODEC_SELECT_ENCODE 1
diff --git a/src/intel_media.h b/src/intel_media.h
index 73a03c7..77afb5a 100644
--- a/src/intel_media.h
+++ b/src/intel_media.h
@@ -59,6 +59,17 @@ struct gen_hevc_surface
dri_bo *motion_vector_temporal_bo;
};
+typedef struct gen_vp9_surface GenVP9Surface;
+struct gen_vp9_surface
+{
+ GenCodecSurface base;
+ uint16_t frame_width;
+ uint16_t frame_height;
+ dri_bo *motion_vector_temporal_bo;
+};
+
extern void gen_free_hevc_surface(void **data);
+extern void gen_free_vp9_surface(void **data);
+
#endif /* INTEL_MEDIA_H */
diff --git a/src/intel_media_common.c b/src/intel_media_common.c
index f0e1cae..5fe9fc5 100644
--- a/src/intel_media_common.c
+++ b/src/intel_media_common.c
@@ -107,3 +107,27 @@ gen_free_hevc_surface(void **data)
pthread_mutex_unlock(&free_hevc_surface_lock);
}
+
+static pthread_mutex_t free_vp9_surface_lock = PTHREAD_MUTEX_INITIALIZER;
+
+void gen_free_vp9_surface(void **data)
+{
+ GenVP9Surface *vp9_surface;
+
+ pthread_mutex_lock(&free_vp9_surface_lock);
+
+ vp9_surface = *data;
+
+ if (!vp9_surface) {
+ pthread_mutex_unlock(&free_vp9_surface_lock);
+ return;
+ }
+
+ dri_bo_unreference(vp9_surface->motion_vector_temporal_bo);
+ vp9_surface->motion_vector_temporal_bo = NULL;
+
+ free(vp9_surface);
+ *data = NULL;
+
+ pthread_mutex_unlock(&free_vp9_surface_lock);
+}
--
1.9.1
More information about the Libva
mailing list