[vlc-devel] [PATCH 05/14] filter: allow the owner not to provide a buffer callback

Steve Lhomme robux4 at ycbcr.xyz
Wed Sep 18 11:15:30 CEST 2019


On input of filters it's easy, they get a video context (or NULL for CPU 
based sources).

The issue is when a filter needs to create a video context on its own. 
For CPU to GPU filters it cannot use the input video context. Just like 
a decoder it should use the "decoder device" to create its output video 
context.

So just like for the decoder, the owner of the filter provides a 
"get_decoder_device" callback to get it.

On 2019-09-18 10:39, Rémi Denis-Courmont wrote:
> Hi,
> 
> I am not sure how hardware should be exposed to filters/converters. I don't recall covering that part of the puzzle at the February workshop.
> 
> Le 18 septembre 2019 09:00:41 GMT+03:00, Steve Lhomme <robux4 at ycbcr.xyz> a écrit :
>> On 2019-09-17 17:32, Rémi Denis-Courmont wrote:
>>> Le tiistaina 17. syyskuuta 2019, 17.22.33 EEST Steve Lhomme a écrit :
>>>> In this case we just allocate a picture from the filter output
>> format.
>>>> ---
>>>>    include/vlc_filter.h | 7 ++++++-
>>>>    1 file changed, 6 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/include/vlc_filter.h b/include/vlc_filter.h
>>>> index 0c756ce10ec..0bc10e91997 100644
>>>> --- a/include/vlc_filter.h
>>>> +++ b/include/vlc_filter.h
>>>> @@ -26,6 +26,7 @@
>>>>    #define VLC_FILTER_H 1
>>>>
>>>>    #include <vlc_es.h>
>>>> +#include <vlc_picture.h>
>>>>
>>>>    /**
>>>>     * \defgroup filter Filters
>>>> @@ -160,7 +161,11 @@ struct filter_t
>>>>     */
>>>>    static inline picture_t *filter_NewPicture( filter_t *p_filter )
>>>>    {
>>>> -    picture_t *pic = p_filter->owner.video->buffer_new( p_filter );
>>>> +    picture_t *pic;
>>>> +    if ( p_filter->owner.video != NULL &&
>> p_filter->owner.video->buffer_new
>>>> != NULL)
>>>
>>> Two checks look redundant, though anyway this callback should go away
>>> altogether eventually.
>>
>> Yes, it will go away.
>>
>> The owner will have the "get_device" callback so it's possible at some
>> point in the code to have one callback and not the other. But in the
>> end
>> this code won't be there anymore.
>>
>>>> +        pic = p_filter->owner.video->buffer_new( p_filter );
>>>> +    else
>>>> +        pic = picture_NewFromFormat( &p_filter->fmt_out.video );
>>>>        if( pic == NULL )
>>>>            msg_Warn( p_filter, "can't get output picture" );
>>>>        return pic;
>>>
>>>
>>> -- 
>>> Rémi Denis-Courmont
>>> http://www.remlab.net/
>>>
>>>
>>>
>>> _______________________________________________
>>> vlc-devel mailing list
>>> To unsubscribe or modify your subscription options:
>>> https://mailman.videolan.org/listinfo/vlc-devel
>>>
>> _______________________________________________
>> vlc-devel mailing list
>> To unsubscribe or modify your subscription options:
>> https://mailman.videolan.org/listinfo/vlc-devel
> 
> -- 
> Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.
> 
> 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
> 


More information about the vlc-devel mailing list