[Libva] [PATCH] V3: Add 422H support.

zhiwen.wu at intel.com zhiwen.wu at intel.com
Sun Mar 23 19:45:27 PDT 2014


From: Alex wu <zhiwen.wu at intel.com>

Changes between V3 to V2:
1. Add 422H support into gen8_post_processing.c, according to
   yakui's comments.

changes between V2 and V1:
1. Rebase on staging branch.
2. Add 422H support for pp.
3. Reword the commit title.
---
 src/gen8_post_processing.c |    2 +-
 src/i965_drv_video.c       |   13 +++++++++++++
 src/i965_post_processing.c |    2 +-
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/gen8_post_processing.c b/src/gen8_post_processing.c
index 6f3afe7..2e5b880 100644
--- a/src/gen8_post_processing.c
+++ b/src/gen8_post_processing.c
@@ -566,7 +566,7 @@ gen8_pp_set_media_rw_message_surface(VADriverContextP ctx, struct i965_post_proc
             height[2] = obj_image->image.height / 2;
             pitch[2] = obj_image->image.pitches[V];
             offset[2] = obj_image->image.offsets[V];
-            if (fourcc == VA_FOURCC('Y', 'V', '1', '6')) {
+            if (fourcc == VA_FOURCC('Y', 'V', '1', '6') || fourcc == VA_FOURCC('4', '2', '2', 'H')) {
                 width[1] = obj_image->image.width / 2;
                 height[1] = obj_image->image.height;
                 width[2] = obj_image->image.width / 2;
diff --git a/src/i965_drv_video.c b/src/i965_drv_video.c
index 67f93ef..8792660 100755
--- a/src/i965_drv_video.c
+++ b/src/i965_drv_video.c
@@ -159,6 +159,8 @@ i965_image_formats_map[I965_MAX_IMAGE_FORMATS + 1] = {
       { VA_FOURCC('Y','U','Y','2'), VA_LSB_FIRST, 16, } },
     { I965_SURFACETYPE_YUV,
       { VA_FOURCC('U','Y','V','Y'), VA_LSB_FIRST, 16, } },
+    { I965_SURFACETYPE_YUV,
+      { VA_FOURCC('4','2','2','H'), VA_LSB_FIRST, 16, } },
     { I965_SURFACETYPE_RGBA,
       { VA_FOURCC('R','G','B','X'), VA_LSB_FIRST, 32, 24, 0x000000ff, 0x0000ff00, 0x00ff0000 } },
     { I965_SURFACETYPE_RGBA,
@@ -2864,6 +2866,16 @@ i965_CreateImage(VADriverContextP ctx,
         image->offsets[2] = size + size2;
         image->data_size  = size + 2 * size2;
         break;
+    case VA_FOURCC('4','2','2','H'):
+        image->num_planes = 3;
+        image->pitches[0] = awidth;
+        image->offsets[0] = 0;
+        image->pitches[1] = awidth / 2;
+        image->offsets[1] = size;
+        image->pitches[2] = awidth / 2;
+        image->offsets[2] = size + (awidth / 2) * aheight;
+        image->data_size  = size + 2 * ((awidth / 2) * aheight);
+        break;
     case VA_FOURCC('N','V','1','2'):
         image->num_planes = 2;
         image->pitches[0] = awidth;
@@ -3271,6 +3283,7 @@ VAStatus i965_DeriveImage(VADriverContextP ctx,
         break;
 
     case VA_FOURCC('I', '4', '2', '0'):
+    case VA_FOURCC('4', '2', '2', 'H'):
         image->num_planes = 3;
         image->pitches[0] = w_pitch; /* Y */
         image->offsets[0] = 0;
diff --git a/src/i965_post_processing.c b/src/i965_post_processing.c
index 35bc515..5d8dd90 100755
--- a/src/i965_post_processing.c
+++ b/src/i965_post_processing.c
@@ -1954,7 +1954,7 @@ gen7_pp_set_media_rw_message_surface(VADriverContextP ctx, struct i965_post_proc
             height[2] = obj_image->image.height / 2;
             pitch[2] = obj_image->image.pitches[V];
             offset[2] = obj_image->image.offsets[V];
-            if (fourcc == VA_FOURCC('Y', 'V', '1', '6')) {
+            if (fourcc == VA_FOURCC('Y', 'V', '1', '6') || fourcc == VA_FOURCC('4', '2', '2', 'H')) {
                 width[1] = obj_image->image.width / 2;
                 height[1] = obj_image->image.height;
                 width[2] = obj_image->image.width / 2;
-- 
1.7.9.5



More information about the Libva mailing list