[Libva] [PATCH][libva-intel-driver] vp9encoder: encoder to handle properly CSC on input surface

Xiang, Haihao haihao.xiang at intel.com
Mon Aug 15 07:57:55 UTC 2016


Thanks for your patch, applied.

> VP9 encoder was not checking for the yuv surface fourcc provided as
> the input.
> If the format is I420, the driver creates an underlying surface where
> the input
> is converted to NV12.
> 
> The underlying temporary surface was not used properly by the
> vme_pipeline_vp9 as
> intel_encoder_check_yuv_surface will place the underlying surface on
> the
> encode_state->input_yuv_object if it needed conversion or it will
> place the correct
> current_render_target if the conversion is not needed.
> 
> Signed-off-by: Daniel Charles <daniel.charles at intel.com>
> ---
>  src/gen9_vp9_encoder.c | 1 -
>  src/i965_encoder.c     | 1 +
>  2 files changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/gen9_vp9_encoder.c b/src/gen9_vp9_encoder.c
> index eecd206..0980a77 100644
> --- a/src/gen9_vp9_encoder.c
> +++ b/src/gen9_vp9_encoder.c
> @@ -3813,7 +3813,6 @@
> gen9_encode_vp9_check_parameter(VADriverContextP ctx,
>      vp9_state->status_buffer.bo = obj_buffer->buffer_store->bo;
>  
>      encode_state->reconstructed_object = SURFACE(pic_param-
> >reconstructed_frame);
> -    encode_state->input_yuv_object = SURFACE(encode_state-
> >current_render_target);
>  
>      if (!encode_state->reconstructed_object ||
>          !encode_state->input_yuv_object)
> diff --git a/src/i965_encoder.c b/src/i965_encoder.c
> index c83cc7d..df501f9 100644
> --- a/src/i965_encoder.c
> +++ b/src/i965_encoder.c
> @@ -740,6 +740,7 @@ intel_encoder_sanity_check_input(VADriverContextP
> ctx,
>          vaStatus = intel_encoder_check_vp9_parameter(ctx,
> encode_state, encoder_context);
>          if (vaStatus != VA_STATUS_SUCCESS)
>              goto out;
> +        vaStatus = intel_encoder_check_yuv_surface(ctx, profile,
> encode_state, encoder_context);
>          break;
>      }
>      default:


More information about the Libva mailing list