[vlc-devel] [vlc-commits] display: convert picture in vout_display_Prepare()

Rémi Denis-Courmont remi at remlab.net
Mon Jan 14 10:17:00 CET 2019


What "new" restriction? Prepare and display callbacks have been strictly paired ever since they were introduced ten years ago.

Le 14 janvier 2019 11:12:21 GMT+02:00, Steve Lhomme <robux4 at ycbcr.xyz> a écrit :
>The question is "Why this change ?" not "Why is this documented ?".
>
>I want to know why this new restriction and if it will make 3D 
>impossible with this new architecture.
>
>On 14/01/2019 10:03, Rémi Denis-Courmont wrote:
>> Look, you don't have to write documentation if you don't want to, but
>
>> please don't ask me why I write some.
>>
>> Le 14 janvier 2019 09:12:16 GMT+02:00, Steve Lhomme
><robux4 at ycbcr.xyz> 
>> a écrit :
>>
>>     Hi,
>>
>>     On 12/01/2019 14:43, Rémi Denis-Courmont wrote:
>>
>>         vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net>
>|
>>         Wed Jan 2 14:59:31 2019 +0200|
>>         [353ec59c3f7864b3cb5e4dc166eebea6f8924c27] | committer: Rémi
>>         Denis-Courmont display: convert picture in
>>         vout_display_Prepare() This allows non-core vout display
>usage
>>         without assuming DR.
>>
>>            
>http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=353ec59c3f7864b3cb5e4dc166eebea6f8924c27
>>
>>
>>        
>------------------------------------------------------------------------
>>         include/vlc_vout_display.h | 27 +++++++++++++++++++++------
>>         src/libvlccore.sym | 1 + src/video_output/display.c | 19
>>         ++++++++++++++----- src/video_output/video_output.c | 4 ++--
>4
>>         files changed, 38 insertions(+), 13 deletions(-) diff --git
>>         a/include/vlc_vout_display.h b/include/vlc_vout_display.h
>>         index 9c343fbcb6..04dc010e3b 100644 ---
>>         a/include/vlc_vout_display.h +++ b/include/vlc_vout_display.h
>>         @@ -312,13 +312,28 @@ VLC_API void
>>         vout_display_Delete(vout_display_t *); /** * Prepares a
>>         picture for display. + * + * This renders a picture for
>>         subsequent display, with vout_display_Display(). + * + *
>\note
>>         A reference to the input picture is consumed by the function,
>>         which + * returns a reference to an output picture for
>>         display. The input and output + * picture may or may not be
>>         equal depending on the underlying display setup. + * + * \bug
>>         Currently, only one picture can be prepared at a time. It
>must be 
>>
>>
>>     This is going to break 3D branches (which are bound to be merged
>in
>>     4.0). Why this change ?
>>
>>         + * displayed with vout_display_Display() before any picture
>>         is prepared or + * before the display is destroyd with
>>         vout_display_Delete(). + * + \ bug Rendering subpictures is
>>         not supported with this function yet. + * \c subpic must be
>@c
>>         NULL . + * + * \param vd display to prepare the picture for +
>>         * \param picture picure to be prepared 
>>
>>
>>     typo
>>
>>         + * \param subpic reserved, must be NULL + * \param date
>>         intended time to show the picture + * \return The prepared
>>         picture is returned, NULL on error. */ -static inline void
>>         vout_display_Prepare(vout_display_t *vd, picture_t *picture,
>-
>>         subpicture_t *subpic, vlc_tick_t date) -{ - if (vd->prepare
>!=
>>         NULL) - vd->prepare(vd, picture, subpic, date); -} +VLC_API
>>         picture_t *vout_display_Prepare(vout_display_t *vd, picture_t
>>         *picture, + subpicture_t *subpic, vlc_tick_t date); /** *
>>         Displays a picture. diff --git a/src/libvlccore.sym
>>         b/src/libvlccore.sym index 87a656f62d..4551406515 100644 ---
>>         a/src/libvlccore.sym +++ b/src/libvlccore.sym @@ -752,6
>+752,7
>>         @@ vout_display_SendEventPicturesInvalid
>>         vout_display_SendMouseMovedDisplayCoordinates
>vout_display_New
>>         vout_display_Delete +vout_display_Prepare xml_Create
>>         text_style_Copy text_style_Create diff --git
>>         a/src/video_output/display.c b/src/video_output/display.c
>>         index d47aa826eb..56c16c1398 100644 ---
>>         a/src/video_output/display.c +++ b/src/video_output/display.c
>>         @@ -453,6 +453,17 @@ picture_t
>>         *vout_FilterDisplay(vout_display_t *vd, picture_t *picture)
>>         return picture; } +picture_t
>>         *vout_display_Prepare(vout_display_t *vd, picture_t *picture,
>>         + subpicture_t *subpic, vlc_tick_t date) +{ + assert(subpic
>==
>>         NULL); /* TODO */ + picture = vout_FilterDisplay(vd,
>picture);
>>         + + if (picture != NULL && vd->prepare != NULL) +
>>         vd->prepare(vd, picture, subpic, date); + return picture; +}
>+
>>         void vout_FilterFlush(vout_display_t *vd) {
>>         vout_display_priv_t *osys = container_of(vd,
>>         vout_display_priv_t, display); @@ -860,11 +871,9 @@ static
>>         void SplitterPrepare(vout_display_t *vd, return; } - for (int
>>         i = 0; i < sys->count; i++) { - sys->picture[i] =
>>         vout_FilterDisplay(sys->display[i], sys->picture[i]); - if
>>         (sys->picture[i]) - vout_display_Prepare(sys->display[i],
>>         sys->picture[i], NULL, date); - } + for (int i = 0; i <
>>         sys->count; i++) + sys->picture[i] =
>>         vout_display_Prepare(sys->display[i], + sys->picture[i],
>NULL,
>>         date); } static void SplitterDisplay(vout_display_t *vd,
>>         picture_t *picture) { diff --git
>>         a/src/video_output/video_output.c
>>         b/src/video_output/video_output.c index
>41daa5cf51..314e06004f
>>         100644 --- a/src/video_output/video_output.c +++
>>         b/src/video_output/video_output.c @@ -1154,8 +1154,8 @@
>static
>>         int ThreadDisplayRenderPicture(vout_thread_t *vout, bool
>>         is_forced) if (!do_dr_spu && sys->spu_blend != NULL && subpic
>>         != NULL) picture_BlendSubpicture(todisplay, sys->spu_blend,
>>         subpic); - vout_display_Prepare(vd, todisplay, do_dr_spu ?
>>         subpic : NULL, - todisplay->date); + if (vd->prepare != NULL)
>>         + vd->prepare(vd, todisplay, do_dr_spu ? subpic : NULL,
>>         todisplay->date); vout_chrono_Stop(&sys->render); #if 0
>>        
>------------------------------------------------------------------------
>>         vlc-commits mailing list vlc-commits at videolan.org
>>         https://mailman.videolan.org/listinfo/vlc-commits 
>>
>>    
>------------------------------------------------------------------------
>>     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
>
>_______________________________________________
>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é.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20190114/97d7c255/attachment.html>


More information about the vlc-devel mailing list