Re: [FFmpeg-devel] [PATCH] lavc/vaap_encode_h265: Init the refs with predefined value.

2017-12-06 Thread Jun Zhao


On 2017/12/7 8:29, Mark Thompson wrote:
> On 06/12/17 21:32, Mark Thompson wrote:
>> On 06/12/17 08:20, Jun Zhao wrote:
>>> From 7519718216a2b98eb289ba20ba27685dff1cf686 Mon Sep 17 00:00:00 2001
>>> From: Jun Zhao 
>>> Date: Wed, 6 Dec 2017 15:50:05 +0800
>>> Subject: [PATCH] lavc/vaap_encode_h265: Init the refs with predefined value.
>>>
>>> Give a explicit init value to ref0/ref1 list to avoid use default value
>>> assgined by compiler, in iHD driver, it's will lead to HEVC ENC crash.
>>> h264_vaapi encoder use this way too.
>>>
>>> Signed-off-by: Jun Zhao 
>>> ---
>>>  libavcodec/vaapi_encode_h265.c | 6 ++
>>>  1 file changed, 6 insertions(+)
>>>
>>> diff --git a/libavcodec/vaapi_encode_h265.c b/libavcodec/vaapi_encode_h265.c
>>> index 2fc94be632..db9a7163cc 100644
>>> --- a/libavcodec/vaapi_encode_h265.c
>>> +++ b/libavcodec/vaapi_encode_h265.c
>>> @@ -757,6 +757,12 @@ static int 
>>> vaapi_encode_h265_init_slice_params(AVCodecContext *avctx,
>>>  else
>>>  sh->slice_qp_delta = priv->fixed_qp_idr - (pps->init_qp_minus26 + 
>>> 26);
>>>  
>>> +for (i = 0; i < FF_ARRAY_ELEMS(vslice->ref_pic_list0); i++) {
>>> +vslice->ref_pic_list0[i].picture_id = VA_INVALID_ID;
>>> +vslice->ref_pic_list0[i].flags  = VA_PICTURE_HEVC_INVALID;
>>> +vslice->ref_pic_list1[i].picture_id = VA_INVALID_ID;
>>> +vslice->ref_pic_list1[i].flags  = VA_PICTURE_HEVC_INVALID;
>>> +}
>>>  
>>>  *vslice = (VAEncSliceParameterBufferHEVC) {
>>>  .slice_segment_address = sh->slice_segment_address,
>>> -- 
>>> 2.14.1
>>>
>>
>> Um, this doesn't appear to do anything?
>>
>> I haven't tried the new driver release yet, but I intend to soon.
> Well, I had a look.  Default build fails because of 
> , but with that hacked around 
> it does work for me on Skylake.
>
> I made  to add support for the 
> MEM_TYPE_VA so that surface creation in ffmpeg can work without hacks.  With 
> that, decode works for H.26[45] and VC-1, though VP8 hangs the GPU pretty 
> much immediately (didn't investigate further).
>
> For the surface attribute query stuff, I think it would probably be best just 
> to implement it in the driver rather than adding further hacks to ffmpeg?  
> With the open-source version being released I don't think there is any reason 
> for anyone to use the old binary-only form of it with VAAPI any more, so we 
> might as well fix it properly.
>
> Thanks,
I agree need to add a fix in iHD open source driver, but I think FFmpeg 
AP-API need to add a explicit init for this.

BTW: if you want run FATE for H264/HEVC decoder, I think need to merge
the patch https://github.com/intel/media-driver/pull/10.

I will check VP8 DEC crash issue. Thanks.
> - Mark
> ___
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] lavc/vaap_encode_h265: Init the refs with predefined value.

2017-12-06 Thread Mark Thompson
On 06/12/17 21:32, Mark Thompson wrote:
> On 06/12/17 08:20, Jun Zhao wrote:
>> From 7519718216a2b98eb289ba20ba27685dff1cf686 Mon Sep 17 00:00:00 2001
>> From: Jun Zhao 
>> Date: Wed, 6 Dec 2017 15:50:05 +0800
>> Subject: [PATCH] lavc/vaap_encode_h265: Init the refs with predefined value.
>>
>> Give a explicit init value to ref0/ref1 list to avoid use default value
>> assgined by compiler, in iHD driver, it's will lead to HEVC ENC crash.
>> h264_vaapi encoder use this way too.
>>
>> Signed-off-by: Jun Zhao 
>> ---
>>  libavcodec/vaapi_encode_h265.c | 6 ++
>>  1 file changed, 6 insertions(+)
>>
>> diff --git a/libavcodec/vaapi_encode_h265.c b/libavcodec/vaapi_encode_h265.c
>> index 2fc94be632..db9a7163cc 100644
>> --- a/libavcodec/vaapi_encode_h265.c
>> +++ b/libavcodec/vaapi_encode_h265.c
>> @@ -757,6 +757,12 @@ static int 
>> vaapi_encode_h265_init_slice_params(AVCodecContext *avctx,
>>  else
>>  sh->slice_qp_delta = priv->fixed_qp_idr - (pps->init_qp_minus26 + 
>> 26);
>>  
>> +for (i = 0; i < FF_ARRAY_ELEMS(vslice->ref_pic_list0); i++) {
>> +vslice->ref_pic_list0[i].picture_id = VA_INVALID_ID;
>> +vslice->ref_pic_list0[i].flags  = VA_PICTURE_HEVC_INVALID;
>> +vslice->ref_pic_list1[i].picture_id = VA_INVALID_ID;
>> +vslice->ref_pic_list1[i].flags  = VA_PICTURE_HEVC_INVALID;
>> +}
>>  
>>  *vslice = (VAEncSliceParameterBufferHEVC) {
>>  .slice_segment_address = sh->slice_segment_address,
>> -- 
>> 2.14.1
>>
> 
> 
> Um, this doesn't appear to do anything?
> 
> I haven't tried the new driver release yet, but I intend to soon.

Well, I had a look.  Default build fails because of 
, but with that hacked around 
it does work for me on Skylake.

I made  to add support for the 
MEM_TYPE_VA so that surface creation in ffmpeg can work without hacks.  With 
that, decode works for H.26[45] and VC-1, though VP8 hangs the GPU pretty much 
immediately (didn't investigate further).

For the surface attribute query stuff, I think it would probably be best just 
to implement it in the driver rather than adding further hacks to ffmpeg?  With 
the open-source version being released I don't think there is any reason for 
anyone to use the old binary-only form of it with VAAPI any more, so we might 
as well fix it properly.

Thanks,

- Mark
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


Re: [FFmpeg-devel] [PATCH] lavc/vaap_encode_h265: Init the refs with predefined value.

2017-12-06 Thread Mark Thompson
On 06/12/17 08:20, Jun Zhao wrote:
> 
> From 7519718216a2b98eb289ba20ba27685dff1cf686 Mon Sep 17 00:00:00 2001

> From: Jun Zhao 

> Date: Wed, 6 Dec 2017 15:50:05 +0800

> Subject: [PATCH] lavc/vaap_encode_h265: Init the refs with predefined value.

> 

> Give a explicit init value to ref0/ref1 list to avoid use default value

> assgined by compiler, in iHD driver, it's will lead to HEVC ENC crash.

> h264_vaapi encoder use this way too.

> 

> Signed-off-by: Jun Zhao 

> ---

>  libavcodec/vaapi_encode_h265.c | 6 ++

>  1 file changed, 6 insertions(+)

> 

> diff --git a/libavcodec/vaapi_encode_h265.c b/libavcodec/vaapi_encode_h265.c

> index 2fc94be632..db9a7163cc 100644

> --- a/libavcodec/vaapi_encode_h265.c

> +++ b/libavcodec/vaapi_encode_h265.c

> @@ -757,6 +757,12 @@ static int 
> vaapi_encode_h265_init_slice_params(AVCodecContext *avctx,

>  else

>  sh->slice_qp_delta = priv->fixed_qp_idr - (pps->init_qp_minus26 + 
> 26);

>  

> +for (i = 0; i < FF_ARRAY_ELEMS(vslice->ref_pic_list0); i++) {

> +vslice->ref_pic_list0[i].picture_id = VA_INVALID_ID;

> +vslice->ref_pic_list0[i].flags  = VA_PICTURE_HEVC_INVALID;

> +vslice->ref_pic_list1[i].picture_id = VA_INVALID_ID;

> +vslice->ref_pic_list1[i].flags  = VA_PICTURE_HEVC_INVALID;

> +}

>  

>  *vslice = (VAEncSliceParameterBufferHEVC) {

>  .slice_segment_address = sh->slice_segment_address,

> -- 

> 2.14.1

> 


Um, this doesn't appear to do anything?

I haven't tried the new driver release yet, but I intend to soon.

- Mark
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel