[Libva] [PATCH Libva-itnel-driver 4/4] Add the csc conversion from YV16 to NV12

Zhao Yakui yakui.zhao at intel.com
Fri Mar 14 00:21:25 PDT 2014


Signed-off-by: Zhao Yakui <yakui.zhao at intel.com>
---
 src/gen8_post_processing.c |  2 ++
 src/i965_post_processing.c | 11 +++++++++--
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/gen8_post_processing.c b/src/gen8_post_processing.c
index f34392c..8207e02 100644
--- a/src/gen8_post_processing.c
+++ b/src/gen8_post_processing.c
@@ -496,8 +496,10 @@ gen8_pp_set_media_rw_message_surface(VADriverContextP ctx, struct i965_post_proc
     dri_bo *bo;
     int fourcc = pp_get_surface_fourcc(ctx, surface);
     const int U = (fourcc == VA_FOURCC('Y', 'V', '1', '2') ||
+                   fourcc == VA_FOURCC('Y', 'V', '1', '6') ||
                    fourcc == VA_FOURCC('I', 'M', 'C', '1')) ? 2 : 1;
     const int V = (fourcc == VA_FOURCC('Y', 'V', '1', '2') ||
+                   fourcc == VA_FOURCC('Y', 'V', '1', '6') ||
                    fourcc == VA_FOURCC('I', 'M', 'C', '1')) ? 1 : 2;
     int interleaved_uv = fourcc == VA_FOURCC('N', 'V', '1', '2');
     int packed_yuv = (fourcc == VA_FOURCC('Y', 'U', 'Y', '2') || fourcc == VA_FOURCC('U', 'Y', 'V', 'Y'));
diff --git a/src/i965_post_processing.c b/src/i965_post_processing.c
index 936c1a6..0f92f38 100755
--- a/src/i965_post_processing.c
+++ b/src/i965_post_processing.c
@@ -1764,8 +1764,12 @@ pp_set_media_rw_message_surface(VADriverContextP ctx, struct i965_post_processin
     dri_bo *bo;
     int fourcc = pp_get_surface_fourcc(ctx, surface);
     const int Y = 0;
-    const int U = fourcc == VA_FOURCC('Y', 'V', '1', '2') ? 2 : 1;
-    const int V = fourcc == VA_FOURCC('Y', 'V', '1', '2') ? 1 : 2;
+    const int U = ((fourcc == VA_FOURCC('Y', 'V', '1', '2')) ||
+                   (fourcc == VA_FOURCC('Y', 'V', '1', '6')))
+                   ? 2 : 1;
+    const int V = ((fourcc == VA_FOURCC('Y', 'V', '1', '2')) ||
+                   (fourcc == VA_FOURCC('Y', 'V', '1', '6')))
+                   ? 1 : 2;
     const int UV = 1;
     int interleaved_uv = fourcc == VA_FOURCC('N', 'V', '1', '2');
     int packed_yuv = (fourcc == VA_FOURCC('Y', 'U', 'Y', '2') || fourcc == VA_FOURCC('U', 'Y', 'V', 'Y')); 
@@ -1875,8 +1879,10 @@ gen7_pp_set_media_rw_message_surface(VADriverContextP ctx, struct i965_post_proc
     dri_bo *bo;
     int fourcc = pp_get_surface_fourcc(ctx, surface);
     const int U = (fourcc == VA_FOURCC('Y', 'V', '1', '2') ||
+                   fourcc == VA_FOURCC('V', 'V', '1', '6') ||
                    fourcc == VA_FOURCC('I', 'M', 'C', '1')) ? 2 : 1;
     const int V = (fourcc == VA_FOURCC('Y', 'V', '1', '2') ||
+                   fourcc == VA_FOURCC('V', 'V', '1', '6') ||
                    fourcc == VA_FOURCC('I', 'M', 'C', '1')) ? 1 : 2;
     int interleaved_uv = fourcc == VA_FOURCC('N', 'V', '1', '2');
     int packed_yuv = (fourcc == VA_FOURCC('Y', 'U', 'Y', '2') || fourcc == VA_FOURCC('U', 'Y', 'V', 'Y'));
@@ -5230,6 +5236,7 @@ i965_image_processing(VADriverContextP ctx,
         case VA_FOURCC('4', '2', '2', 'V'):
         case VA_FOURCC('4', '1', '1', 'P'):
         case VA_FOURCC('4', '4', '4', 'P'):
+        case VA_FOURCC('Y', 'V', '1', '6'):
             status = i965_image_pl3_processing(ctx,
                                                src_surface,
                                                src_rect,
-- 
1.8.2-rc2



More information about the Libva mailing list