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

2014-05-15 Thread Xiang, Haihao
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.beauche...@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;


___
Libva mailing list
Libva@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libva


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

2014-05-14 Thread Gwenole Beauchesne
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.

Signed-off-by: Gwenole Beauchesne gwenole.beauche...@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;
-- 
1.7.9.5

___
Libva mailing list
Libva@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libva