summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPengfei Qu <Pengfei.Qu@intel.com>2015-10-22 04:39:07 -0400
committerXiang, Haihao <haihao.xiang@intel.com>2015-12-07 13:31:29 +0800
commitd9572c8d11198f0624ac1aed44c41c0e5930098e (patch)
tree49fef3703f98eb395609f16292c6feb327bab1ca /src
parentc50bf5ff6079e9a409145fa58186f2967ceccb53 (diff)
downloadlibva-intel-driver-d9572c8d11198f0624ac1aed44c41c0e5930098e.tar.gz
VP9 HWDec:add vp9 surface structure and related parameter
Signed-off-by: Pengfei Qu <Pengfei.Qu@intel.com> Signed-off-by: Sirisha Muppavarapu <sirisha.muppavarapu@intel.com> Signed-off-by: peng.chen <peng.c.chen@intel.com> Reviewed-by: Zhao Yakui <yakui.zhao@intel.com> (cherry picked from commit f36ab3413f814c80f4df4f4570f4ef9a1168b624)
Diffstat (limited to 'src')
-rwxr-xr-xsrc/i965_defines.h9
-rw-r--r--src/intel_media.h11
-rw-r--r--src/intel_media_common.c24
3 files changed, 44 insertions, 0 deletions
diff --git a/src/i965_defines.h b/src/i965_defines.h
index 65c0b11d..9ea8a9fc 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 73a03c73..77afb5af 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 f0e1cae1..5fe9fc52 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);
+}