Hi, 2014-03-18 1:44 GMT+01:00 Wu, Zhiwen <zhiwen...@intel.com>: > Looks good to me, tested on baytraili.
Interesting, how? The patch doesn't do what it tells to do in several places: >>-----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; >>+ } >> } >> } This is wrong, why VV16? Besides, Haihao mentioned to use a proper constant. You would have avoided this error. >>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; >>+ } >> } >> } Same here. >>@@ -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; Here. >> 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; >>+ } >> } >> } And here again. >> >>@@ -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 _______________________________________________ Libva mailing list Libva@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libva