On 09/06/2016 08:09 AM, Pengfei Qu wrote:
Signed-off-by: Pengfei Qu<[email protected]>

This looks good to me.

Add: Reviewed-by: Zhao Yakui <[email protected]>

---
  src/intel_media.h        |  5 +++++
  src/intel_media_common.c | 10 ++++++++++
  2 files changed, 15 insertions(+)

diff --git a/src/intel_media.h b/src/intel_media.h
index 87d315f..4a55a93 100644
--- a/src/intel_media.h
+++ b/src/intel_media.h
@@ -57,6 +57,11 @@ struct gen_hevc_surface
  {
      GenCodecSurface base;
      dri_bo *motion_vector_temporal_bo;
+    //Encoding HEVC10:internal surface keep for P010->NV12 , this is only for 
hevc10 to save the P010->NV12
+    struct object_surface *nv12_surface_obj;
+    VASurfaceID nv12_surface_id;
+    VADriverContextP ctx;
+    int has_p010_to_nv12_done;
  };

  typedef struct gen_vp9_surface GenVP9Surface;
diff --git a/src/intel_media_common.c b/src/intel_media_common.c
index 8821bc4..01828b0 100644
--- a/src/intel_media_common.c
+++ b/src/intel_media_common.c
@@ -29,6 +29,7 @@

  #include "intel_driver.h"
  #include "intel_media.h"
+#include "i965_drv_video.h"

  static pthread_mutex_t free_avc_surface_lock = PTHREAD_MUTEX_INITIALIZER;

@@ -92,6 +93,9 @@ gen_free_hevc_surface(void **data)

      pthread_mutex_lock(&free_hevc_surface_lock);

+    if (!data || !*data)
+        return;
+
      hevc_surface = *data;

      if (!hevc_surface) {
@@ -102,6 +106,12 @@ gen_free_hevc_surface(void **data)
      dri_bo_unreference(hevc_surface->motion_vector_temporal_bo);
      hevc_surface->motion_vector_temporal_bo = NULL;

+    if (hevc_surface->nv12_surface_obj) {
+        i965_DestroySurfaces(hevc_surface->ctx,&hevc_surface->nv12_surface_id, 
1);
+        hevc_surface->nv12_surface_id = VA_INVALID_SURFACE;
+        hevc_surface->nv12_surface_obj = NULL;
+    }
+
      free(hevc_surface);
      *data = NULL;


_______________________________________________
Libva mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/libva

Reply via email to