[Libva] [PATCH v2 intel-driver 6/8] config: fix supported set of chroma formats for JPEG decode.

Xiang, Haihao haihao.xiang at intel.com
Thu May 15 01:31:07 PDT 2014


On Wed, 2014-05-14 at 15:13 +0200, Gwenole Beauchesne wrote: 
> If the hardware supports JPEG decoding, then we have to expose the
> right set of chroma formats for the output (decoded) VA surface. In
> particular, we could support YUV 4:1:0, 4:2:2 and 4:4:4.

We could support YUV 4:0:0 for jpeg decoding.

> 
> Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne at intel.com>
> ---
>  src/i965_drv_video.c |   15 +++++++++++++++
>  src/i965_drv_video.h |    2 ++
>  2 files changed, 17 insertions(+)
> 
> diff --git a/src/i965_drv_video.c b/src/i965_drv_video.c
> index e60760f..768469a 100755
> --- a/src/i965_drv_video.c
> +++ b/src/i965_drv_video.c
> @@ -214,6 +214,10 @@ get_subpic_format(const VAImageFormat *va_format)
>      return NULL;
>  }
>  
> +/* Extra set of chroma formats supported for JPEG decoding (beyond YUV 4:2:0) */
> +#define EXTRA_JPEG_DEC_CHROMA_FORMATS \
> +    (VA_RT_FORMAT_YUV411 | VA_RT_FORMAT_YUV422 | VA_RT_FORMAT_YUV444)
> +
>  extern struct hw_context *i965_proc_context_init(VADriverContextP, struct object_config *);
>  extern struct hw_context *g4x_dec_hw_context_init(VADriverContextP, struct object_config *);
>  static struct hw_codec_info g4x_hw_codec_info = {
> @@ -278,6 +282,8 @@ static struct hw_codec_info gen7_hw_codec_info = {
>      .max_width = 4096,
>      .max_height = 4096,
>  
> +    .jpeg_dec_chroma_formats = EXTRA_JPEG_DEC_CHROMA_FORMATS,
> +
>      .has_mpeg2_decoding = 1,
>      .has_mpeg2_encoding = 1,
>      .has_h264_decoding = 1,
> @@ -305,6 +311,8 @@ static struct hw_codec_info gen75_hw_codec_info = {
>      .max_width = 4096,
>      .max_height = 4096,
>  
> +    .jpeg_dec_chroma_formats = EXTRA_JPEG_DEC_CHROMA_FORMATS,
> +
>      .has_mpeg2_decoding = 1,
>      .has_mpeg2_encoding = 1,
>      .has_h264_decoding = 1,
> @@ -336,6 +344,8 @@ static struct hw_codec_info gen8_hw_codec_info = {
>      .max_width = 4096,
>      .max_height = 4096,
>  
> +    .jpeg_dec_chroma_formats = EXTRA_JPEG_DEC_CHROMA_FORMATS,
> +
>      .has_mpeg2_decoding = 1,
>      .has_mpeg2_encoding = 1,
>      .has_h264_decoding = 1,
> @@ -592,6 +602,11 @@ i965_get_default_chroma_formats(VADriverContextP ctx, VAProfile profile,
>      uint32_t chroma_formats = VA_RT_FORMAT_YUV420;
>  
>      switch (profile) {
> +    case VAProfileJPEGBaseline:
> +        if (HAS_JPEG_DECODING(i965) && entrypoint == VAEntrypointVLD)
> +            chroma_formats |= i965->codec_info->jpeg_dec_chroma_formats;
> +        break;
> +
>      default:
>          break;
>      }
> diff --git a/src/i965_drv_video.h b/src/i965_drv_video.h
> index 8f2d288..e70852b 100644
> --- a/src/i965_drv_video.h
> +++ b/src/i965_drv_video.h
> @@ -289,6 +289,8 @@ struct hw_codec_info
>      int max_width;
>      int max_height;
>  
> +    unsigned int jpeg_dec_chroma_formats;
> +
>      unsigned int has_mpeg2_decoding:1;
>      unsigned int has_mpeg2_encoding:1;
>      unsigned int has_h264_decoding:1;




More information about the Libva mailing list