[Libva] [PATCH] check the result of hsw_veb_post_format_convert()
Xiang, Haihao
haihao.xiang at intel.com
Mon Jun 13 13:20:46 UTC 2016
Applied.
Thanks
Haihao
>-----Original Message-----
>From: Libva [mailto:libva-bounces at lists.freedesktop.org] On Behalf Of Víctor
>Manuel Jáquez Leal
>Sent: Wednesday, June 8, 2016 8:03 PM
>To: libva at lists.freedesktop.org
>Subject: [Libva] [PATCH] check the result of hsw_veb_post_format_convert()
>
>This commit is related to previous commit e4996019, which is a simpler
>approach of this commit, by adding more supported color formats.
>
>For example, VA_FOURCC_BGRX should be added too, to avoid an assert with
>this gstreamer pipeline:
>
>gst-play-1.0 burosch1.mpg --videosink=ximagesink
>
>http://samples.mplayerhq.hu/MPEG2/interlaced/burosch1.mpg
>
>Nonetheless, instead of just adding already supported color formats
>conversion, it is better to rely on what vpp_surface_convert() already checks,
>by verifying the result operation, and avoid the assert.
>
>This patch does it for hsw_veb_post_format_convert().
>
>Signed-off-by: Víctor Manuel Jáquez Leal <vjaquez at igalia.com>
>---
> src/gen75_vpp_vebox.c | 34 +++++++++++++---------------------
> 1 file changed, 13 insertions(+), 21 deletions(-)
>
>diff --git a/src/gen75_vpp_vebox.c b/src/gen75_vpp_vebox.c index
>1b4232d..8d0569d 100644
>--- a/src/gen75_vpp_vebox.c
>+++ b/src/gen75_vpp_vebox.c
>@@ -1500,16 +1500,18 @@ int
>hsw_veb_pre_format_convert(VADriverContextP ctx,
> return 0;
> }
>
>-int hsw_veb_post_format_convert(VADriverContextP ctx,
>+VAStatus
>+hsw_veb_post_format_convert(VADriverContextP ctx,
> struct intel_vebox_context *proc_ctx) {
> struct object_surface *obj_surface = NULL;
>+ VAStatus va_status = VA_STATUS_SUCCESS;
>
> obj_surface = proc_ctx->frame_store[proc_ctx-
>>current_output].obj_surface;
>
> if (proc_ctx->format_convert_flags & POST_COPY_CONVERT) {
> /* copy the saved frame in the second call */
>- vpp_surface_convert(ctx, obj_surface, proc_ctx-
>>surface_output_object);
>+ va_status = vpp_surface_convert(ctx, obj_surface,
>+ proc_ctx->surface_output_object);
> } else if(!(proc_ctx->format_convert_flags & POST_FORMAT_CONVERT)
>&&
> !(proc_ctx->format_convert_flags & POST_SCALING_CONVERT)){
> /* Output surface format is covered by vebox pipeline and @@ -1518,7
>+1520,7 @@ int hsw_veb_post_format_convert(VADriverContextP ctx,
> } else if ((proc_ctx->format_convert_flags & POST_FORMAT_CONVERT) &&
> !(proc_ctx->format_convert_flags & POST_SCALING_CONVERT)){
> /* convert and copy NV12 to YV12/IMC3/IMC2/RGBA output*/
>- vpp_surface_convert(ctx, obj_surface, proc_ctx-
>>surface_output_object);
>+ va_status = vpp_surface_convert(ctx, obj_surface,
>+ proc_ctx->surface_output_object);
>
> } else if(proc_ctx->format_convert_flags & POST_SCALING_CONVERT) {
> VAProcPipelineParameterBuffer * const pipe = proc_ctx-
>>pipeline_param; @@ -1532,20 +1534,10 @@ int
>hsw_veb_post_format_convert(VADriverContextP ctx,
> /* second step: color format convert and copy to output */
> obj_surface = proc_ctx->surface_output_object;
>
>- if(obj_surface->fourcc == VA_FOURCC_NV12 ||
>- obj_surface->fourcc == VA_FOURCC_YV12 ||
>- obj_surface->fourcc == VA_FOURCC_I420 ||
>- obj_surface->fourcc == VA_FOURCC_YUY2 ||
>- obj_surface->fourcc == VA_FOURCC_IMC1 ||
>- obj_surface->fourcc == VA_FOURCC_IMC3 ||
>- obj_surface->fourcc == VA_FOURCC_RGBA) {
>- vpp_surface_convert(ctx, proc_ctx->surface_output_scaled_object,
>obj_surface);
>- }else {
>- assert(0);
>- }
>+ va_status = vpp_surface_convert(ctx,
>+proc_ctx->surface_output_scaled_object, obj_surface);
> }
>
>- return 0;
>+ return va_status;
> }
>
> static VAStatus
>@@ -1714,9 +1706,9 @@ gen75_vebox_process_picture(VADriverContextP
>ctx,
> intel_batchbuffer_flush(proc_ctx->batch);
> }
>
>- hsw_veb_post_format_convert(ctx, proc_ctx);
>+ status = hsw_veb_post_format_convert(ctx, proc_ctx);
>
>- return VA_STATUS_SUCCESS;
>+ return status;
> }
>
> void gen75_vebox_context_destroy(VADriverContextP ctx, @@ -1944,9
>+1936,9 @@ gen8_vebox_process_picture(VADriverContextP ctx,
> intel_batchbuffer_flush(proc_ctx->batch);
> }
>
>- hsw_veb_post_format_convert(ctx, proc_ctx);
>+ status = hsw_veb_post_format_convert(ctx, proc_ctx);
>
>- return VA_STATUS_SUCCESS;
>+ return status;
> }
>
>
>@@ -2412,7 +2404,7 @@ gen9_vebox_process_picture(VADriverContextP ctx,
> intel_batchbuffer_flush(proc_ctx->batch);
> }
>
>- hsw_veb_post_format_convert(ctx, proc_ctx);
>+ status = hsw_veb_post_format_convert(ctx, proc_ctx);
>
>- return VA_STATUS_SUCCESS;
>+ return status;
> }
>--
>2.8.1
>
>_______________________________________________
>Libva mailing list
>Libva at lists.freedesktop.org
>https://lists.freedesktop.org/mailman/listinfo/libva
More information about the Libva
mailing list