Hi,Gwenole,

Thanks for your code review and comments.

>>This looks OK as a last resort solution, but it should be completed with an 
>>earlier check in vaQueryVideoProcPipelineCaps(). This is the function used to 
>>validate the filter chain somehow.
It sounds good idea. vaQueryVideoProcPipelineCaps() just offer the interface to 
get the supported image format capability(such as NV12, etc) by application and 
then the application (such as gstreamer) will be responsible for the final 
image format negociation/validation. Is it correct? This will change the 
structure VAProcPipelineParameterBuffer to support this.

>>Besides, I believe we should probably return 
>>VA_STATUS_ERROR_INVALID_IMAGE_FORMAT or any other 
>>VA_STATUS_ERROR_INVALID_SURFACE_FORMAT that yields the same error code?
Yes, you are right.  It should be changed as your comments.
Thanks,
Pengfei

-----Original Message-----
From: Gwenole Beauchesne [mailto:gb.de...@gmail.com] 
Sent: Wednesday, August 27, 2014 12:00 PM
To: Qu, Pengfei
Cc: libva@lists.freedesktop.org
Subject: Re: [Libva] [PATCH] MADI: Reject reference surfaces in the wrong format

Hi,

2014-08-14 13:04 GMT+02:00 Qu, Pengfei <pengfei...@intel.com>:
>
> From b62ef279566e8d2548b519f5b62abceede1042c7 Mon Sep 17 00:00:00 2001
> From: Simon Farnsworth <simon.farnswo...@onelan.co.uk>
> Date: Thu, 29 May 2014 10:21:03 +0100
> Subject: [PATCH] MADI: Reject reference surfaces in the wrong format
>
> SNB and IVB DNDI only work with NV12 surfaces. Reject anything else.
>
> Signed-off-by: Simon Farnsworth <simon.farnswo...@onelan.co.uk>
> ---
>  src/i965_post_processing.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/src/i965_post_processing.c b/src/i965_post_processing.c 
> index 5f5a508..44ba3e0 100755
> --- a/src/i965_post_processing.c
> +++ b/src/i965_post_processing.c
> @@ -3106,6 +3106,11 @@ pp_nv12_dndi_initialize(VADriverContextP ctx, struct 
> i965_post_processing_contex
>          return VA_STATUS_ERROR_UNIMPLEMENTED;
>      }
>
> +    if (previous_in_obj_surface && previous_in_obj_surface->fourcc != 
> VA_FOURCC_NV12) {
> +        WARN_ONCE("Forward temporal reference must be NV12\n");
> +        return VA_STATUS_ERROR_INVALID_PARAMETER;
> +    }
> +
>      /* source (temporal reference) YUV surface index 5 */
>      orig_w = previous_in_obj_surface->orig_width;
>      orig_h = previous_in_obj_surface->orig_height;
> @@ -3605,6 +3610,11 @@ gen7_pp_nv12_dndi_initialize(VADriverContextP ctx, 
> struct i965_post_processing_c
>          return VA_STATUS_ERROR_UNIMPLEMENTED;
>      }
>
> +    if (previous_in_obj_surface && previous_in_obj_surface->fourcc != 
> VA_FOURCC_NV12) {
> +        WARN_ONCE("Forward temporal reference must be NV12\n");
> +        return VA_STATUS_ERROR_INVALID_PARAMETER;
> +    }
> +
>      /* source (temporal reference) YUV surface index 4 */
>      orig_w = previous_in_obj_surface->orig_width;
>      orig_h = previous_in_obj_surface->orig_height;
> --
> 1.9.0
> _______________________________________________
> Libva mailing list
> Libva@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/libva

This looks OK as a last resort solution, but it should be completed with an 
earlier check in vaQueryVideoProcPipelineCaps(). This is the function used to 
validate the filter chain somehow.

Besides, I believe we should probably return 
VA_STATUS_ERROR_INVALID_IMAGE_FORMAT or any other 
VA_STATUS_ERROR_INVALID_SURFACE_FORMAT that yields the same error code?

Thanks,
--
Gwenole Beauchesne
Intel Corporation SAS / 2 rue de Paris, 92196 Meudon Cedex, France Registration 
Number (RCS): Nanterre B 302 456 199
_______________________________________________
Libva mailing list
Libva@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libva

Reply via email to