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

Gwenole Beauchesne gb.devel at gmail.com
Thu May 15 01:49:52 PDT 2014


2014-05-15 10:31 GMT+02:00 Xiang, Haihao <haihao.xiang at intel.com>:
> 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.

Indeed, I missed that one from gen7_mfd_jpeg_decode_init(). Locally fixed.

Well, actually available here:
http://cgit.freedesktop.org/~gb/libva-intel-driver/ (15.grayscale)

Thanks,
Gwenole.

>> ---
>>  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