[Libva] [libva-intel-driver PATCH 06/10] VP9 HWDec:add vp9 surface structure and related parameter

Zhao Yakui yakui.zhao at intel.com
Thu Dec 3 16:29:56 PST 2015


On 12/04/2015 02:13 AM, Xiang, Haihao wrote:
> 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>

This looks good to me.

> ---
>   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);
> +}



More information about the Libva mailing list