Looks good to me, tested on baytraili.
>-----Original Message----- >From: Libva [mailto:libva-boun...@lists.freedesktop.org] On Behalf Of Zhao >Yakui >Sent: Monday, March 17, 2014 5:08 PM >To: libva@lists.freedesktop.org >Subject: [Libva] [PATCH Libva-intel-driver 4/4] Add the csc conversion from >YV16 >to NV12 > >V1->V2: Follow Zhiwen's comment to add the missing code when the source >V1->is >YV16 image instead of YV16 surface. > >Reviewed-by: Wind Yuan <feng.y...@intel.com> >Tested-by: Wind Yuan <feng.y...@intel.com> >Signed-off-by: Zhao Yakui <yakui.z...@intel.com> >--- > src/gen8_post_processing.c | 8 ++++++++ src/i965_post_processing.c | 23 >+++++++++++++++++++++-- > 2 files changed, 29 insertions(+), 2 deletions(-) > >diff --git a/src/gen8_post_processing.c b/src/gen8_post_processing.c index >f34392c..a5b3b90 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')); @@ -564,6 +566,12 @@ >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('V', 'V', '1', '6')) { >+ width[1] = obj_image->image.width / 2; >+ height[1] = obj_image->image.height; >+ width[2] = obj_image->image.width / 2; >+ height[2] = obj_image->image.height; >+ } > } > } > >diff --git a/src/i965_post_processing.c b/src/i965_post_processing.c index >936c1a6..3242257 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')); @@ -1832,6 +1836,12 @@ >pp_set_media_rw_message_surface(VADriverContextP ctx, struct >i965_post_processin > height[2] = obj_image->image.height / 2; > pitch[2] = obj_image->image.pitches[2]; > offset[2] = obj_image->image.offsets[2]; >+ if (fourcc == VA_FOURCC('V', 'V', '1', '6')) { >+ width[1] = obj_image->image.width / 2; >+ height[1] = obj_image->image.height; >+ width[2] = obj_image->image.width / 2; >+ height[2] = obj_image->image.height; >+ } > } > } > >@@ -1875,8 +1885,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')); @@ -1942,6 +1954,12 @@ >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('V', 'V', '1', '6')) { >+ width[1] = obj_image->image.width / 2; >+ height[1] = obj_image->image.height; >+ width[2] = obj_image->image.width / 2; >+ height[2] = obj_image->image.height; >+ } > } > } > >@@ -5230,6 +5248,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 > >_______________________________________________ >Libva mailing list >Libva@lists.freedesktop.org >http://lists.freedesktop.org/mailman/listinfo/libva _______________________________________________ Libva mailing list Libva@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libva