From 937e7e024fc77120bb6a4764fe1ea98a505a4f92 Mon Sep 17 00:00:00 2001
From: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
Date: Thu, 3 Jun 2010 08:54:55 +0200
Subject: [PATCH 100/103] Add I420 image format.

---
 i965_drv_video/i965_drv_video.c |   16 +++++++++++++++-
 i965_drv_video/i965_drv_video.h |    2 +-
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/i965_drv_video/i965_drv_video.c b/i965_drv_video/i965_drv_video.c
index ccecf8a..cafa22f 100644
--- a/i965_drv_video/i965_drv_video.c
+++ b/i965_drv_video/i965_drv_video.c
@@ -64,6 +64,8 @@ static const i965_image_format_map_t
 i965_image_formats_map[I965_MAX_IMAGE_FORMATS + 1] = {
     { I965_SURFACETYPE_YUV,
       { VA_FOURCC('Y','V','1','2'), VA_LSB_FIRST, 12, } },
+    { I965_SURFACETYPE_YUV,
+      { VA_FOURCC('I','4','2','0'), VA_LSB_FIRST, 12, } },
 };
 
 /* List of supported subpicture formats */
@@ -1350,6 +1352,16 @@ i965_CreateImage(VADriverContextP ctx,
         image->offsets[2] = size;
         image->data_size  = size + 2 * size2;
         break;
+    case VA_FOURCC('I','4','2','0'):
+        image->num_planes = 3;
+        image->pitches[0] = width;
+        image->offsets[0] = 0;
+        image->pitches[1] = width2;
+        image->offsets[1] = size;
+        image->pitches[2] = width2;
+        image->offsets[2] = size + size2;
+        image->data_size  = size + 2 * size2;
+        break;
     default:
         goto error;
     }
@@ -1547,7 +1559,9 @@ i965_GetImage(VADriverContextP ctx,
     rect.height = height;
 
     switch (obj_image->image.format.fourcc) {
-    case VA_FOURCC('Y','V','1','2'): /* YV12 is native format here */
+    case VA_FOURCC('Y','V','1','2'):
+    case VA_FOURCC('I','4','2','0'):
+        /* I420 is native format for MPEG-2 decoded surfaces */
         if (render_state->interleaved_uv)
             goto operation_failed;
         get_image_yv12(obj_image, image_data, obj_surface, &rect);
diff --git a/i965_drv_video/i965_drv_video.h b/i965_drv_video/i965_drv_video.h
index 41060d1..d0d71a7 100644
--- a/i965_drv_video/i965_drv_video.h
+++ b/i965_drv_video/i965_drv_video.h
@@ -43,7 +43,7 @@
 #define I965_MAX_PROFILES                       11
 #define I965_MAX_ENTRYPOINTS                    5
 #define I965_MAX_CONFIG_ATTRIBUTES              10
-#define I965_MAX_IMAGE_FORMATS                  1
+#define I965_MAX_IMAGE_FORMATS                  2
 #define I965_MAX_SUBPIC_FORMATS                 4
 #define I965_MAX_DISPLAY_ATTRIBUTES             4
 #define I965_STR_VENDOR                         "i965 Driver 0.1"
-- 
1.7.0.4

