[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