Hi Leo, Christian and Julien,

I tested the patch with Vaapi Encoding and Transcoding, it seems working fine. 
We are using "VAAPI_DISABLE_INTERLACE" env, so interlaced is always disabled.

Regards,
Boyuan

-----Original Message-----
From: Liu, Leo 
Sent: September-08-16 9:50 AM
To: Koenig, Christian; Julien Isorce; mesa-dev@lists.freedesktop.org
Cc: mesa-sta...@lists.freedesktop.org; Zhang, Boyuan; Julien Isorce
Subject: Re: [PATCH] st/va: also honors interlaced preference when providing a 
video format



On 09/08/2016 03:50 AM, Christian König wrote:
> Am 08.09.2016 um 09:34 schrieb Julien Isorce:
>> This fixes a crash when using the prefered video format with 
>> vaapisink on Nvidia hardwares.
>> Also caught by the following assert:
>>    nouveau_vp3_video.c:91: Assertion `templat->interlaced' failed.
>>
>> TEST= gst-launch-1.0 videotestsrc ! video/x-raw, format=NV12 ! 
>> vaapisink
>>
>> Signed-off-by: Julien Isorce <j.iso...@samsung.com>
>> Tested-by: Víctor Manuel Jáquez Leal <vjaq...@igalia.com>
>
> Reviewed-by: Christian König <christian.koe...@amd.com>.
>
> But somebody should double check if that doesn't break transcoding for 
> AMD GPUs.
>
> We had some problems with that in the past.

VA-API encode use "VAAPI_DISABLE_INTERLACE" env for making sure not interlaced, 
but better to double check.

Boyuan, can you test on this patch?

Regards,
Leo

>
> Regards,
> Christian.
>
>> ---
>>   src/gallium/state_trackers/va/surface.c | 36
>> +++++++++++++++++----------------
>>   1 file changed, 19 insertions(+), 17 deletions(-)
>>
>> diff --git a/src/gallium/state_trackers/va/surface.c
>> b/src/gallium/state_trackers/va/surface.c
>> index 3ee1cdd..00df69d 100644
>> --- a/src/gallium/state_trackers/va/surface.c
>> +++ b/src/gallium/state_trackers/va/surface.c
>> @@ -632,24 +632,26 @@ vlVaCreateSurfaces2(VADriverContextP ctx, 
>> unsigned int format,
>>        memset(&templat, 0, sizeof(templat));
>>   +   templat.buffer_format = pscreen->get_video_param(
>> +      pscreen,
>> +      PIPE_VIDEO_PROFILE_UNKNOWN,
>> +      PIPE_VIDEO_ENTRYPOINT_BITSTREAM,
>> +      PIPE_VIDEO_CAP_PREFERED_FORMAT
>> +   );
>> +   templat.interlaced = pscreen->get_video_param(
>> +      pscreen,
>> +      PIPE_VIDEO_PROFILE_UNKNOWN,
>> +      PIPE_VIDEO_ENTRYPOINT_BITSTREAM,
>> +      PIPE_VIDEO_CAP_PREFERS_INTERLACED
>> +   );
>> +
>>      if (expected_fourcc) {
>> -      templat.buffer_format = VaFourccToPipeFormat(expected_fourcc);
>> -      templat.interlaced = 0;
>> -   } else {
>> -      templat.buffer_format = pscreen->get_video_param
>> -            (
>> -               pscreen,
>> -               PIPE_VIDEO_PROFILE_UNKNOWN,
>> -               PIPE_VIDEO_ENTRYPOINT_BITSTREAM,
>> -               PIPE_VIDEO_CAP_PREFERED_FORMAT
>> -               );
>> -      templat.interlaced = pscreen->get_video_param
>> -            (
>> -               pscreen,
>> -               PIPE_VIDEO_PROFILE_UNKNOWN,
>> -               PIPE_VIDEO_ENTRYPOINT_BITSTREAM,
>> -               PIPE_VIDEO_CAP_PREFERS_INTERLACED
>> -               );
>> +      enum pipe_format expected_format =
>> VaFourccToPipeFormat(expected_fourcc);
>> +
>> +      if (expected_format != templat.buffer_format || memory_attibute)
>> +        templat.interlaced = 0;
>> +
>> +      templat.buffer_format = expected_format;
>>      }
>>        templat.chroma_format = ChromaToPipe(format);
>
>

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to