[vlc-devel] [PATCH] avcodec: Support hwaccel 1.2

Rémi Denis-Courmont remi at remlab.net
Wed Jul 8 14:46:57 CEST 2015


Le 2015-07-08 15:23, Luca Barbato a écrit :
> On 08/07/15 13:40, Rémi Denis-Courmont wrote:
>> Le 2015-07-08 14:24, Luca Barbato a écrit :
>>> The hwaccel 1.2 can allocate by different means their buffers so 
>>> the
>>> get_buffer2 callback will not be called.
>>>
>>> Unbreaks VDA decoding.
>>> ---
>>>  modules/codec/avcodec/video.c | 8 +++++---
>>>  1 file changed, 5 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/modules/codec/avcodec/video.c
>>> b/modules/codec/avcodec/video.c
>>> index c84ecb9..faeba88 100644
>>> --- a/modules/codec/avcodec/video.c
>>> +++ b/modules/codec/avcodec/video.c
>>> @@ -775,8 +775,7 @@ static picture_t *DecodeVideo( decoder_t 
>>> *p_dec,
>>> block_t **pp_block )
>>>          if( p_pic == NULL )
>>>          {
>>>              /* Get a new picture */
>>> -            if( p_sys->p_va == NULL )
>>> -                p_pic = ffmpeg_NewPictBuf( p_dec, p_context );
>>> +            p_pic = ffmpeg_NewPictBuf( p_dec, p_context );
>>
>> By design, vlc_va_Get() MUST be called BEFORE decoding the frame.
>
> There are hwaccels that have their buffers allocated directly and no
> mean to know where, when and how they are allocated.
>
> How'd you suggest to handle that situation?

I suggest we do change how we "handle that situation". As with 
libde265, the handling consists of rejecting the patch and requesting 
that decoding library gets fixed.

> The patch seems working as intended.

Yes. Except for the facts that it relies on current implementation 
details and breaks (error paths) on other platforms.

-- 
Rémi Denis-Courmont
http://www.remlab.net/



More information about the vlc-devel mailing list