[Libva] [PATCH libva-intel-driver master 2/2] Return error when trying to decoding an interlaced VC-1 video

Gwenole Beauchesne gb.devel at gmail.com
Fri May 9 03:20:40 PDT 2014


Hi,

2014-05-05 7:00 GMT+02:00 Xiang, Haihao <haihao.xiang at intel.com>:
> From: "Xiang, Haihao" <haihao.xiang at intel.com>
>
> https://bugs.freedesktop.org/show_bug.cgi?id=77386
>
> Signed-off-by: Xiang, Haihao <haihao.xiang at intel.com>
> ---
>  src/i965_decoder_utils.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/src/i965_decoder_utils.c b/src/i965_decoder_utils.c
> index 2533381..617bc15 100644
> --- a/src/i965_decoder_utils.c
> +++ b/src/i965_decoder_utils.c
> @@ -654,7 +654,12 @@ intel_decoder_check_vc1_parameter(VADriverContextP ctx,
>      VAPictureParameterBufferVC1 *pic_param = (VAPictureParameterBufferVC1 *)decode_state->pic_param->buffer;
>      struct object_surface *obj_surface;
>      int i = 0;
> -
> +
> +    if (pic_param->sequence_fields.bits.interlace == 1 &&
> +        pic_param->picture_fields.bits.frame_coding_mode != 0) { /* frame-interlace or field-interlace */
> +        return VA_STATUS_ERROR_DECODING_ERROR;
> +    }
> +
>      if (pic_param->picture_fields.bits.picture_type == 0 ||
>          pic_param->picture_fields.bits.picture_type == 3) {
>      } else if (pic_param->picture_fields.bits.picture_type == 1 ||
> --

In general, returning VA_STATUS_ERROR_DECODING_ERROR means returning a
valid error for vaQuerySurfaceError() as a next step. If you want to
return this type of error, you have to support this interface as well.

Maybe FLAG_NOT_SUPPORTED would be a more appropriate error, or at
least the catchall Unknown one? i.e. return something else, unless you
implement vaQuerySurfaceError() interface, which also means extending
the API to notify that some of the supplied {pic, slice} param fields
are not supported.

Thanks,
Gwenole.


More information about the Libva mailing list