[vlc-devel] [vlc-commits] display: convert picture in vout_display_Prepare()
Thomas Guillem
thomas at gllm.fr
Mon Jan 14 10:07:05 CET 2019
On Mon, Jan 14, 2019, at 10:03, Rémi Denis-Courmont wrote:
> Look, you don't have to write documentation
Actually, we should all document the functions we add in VLC or LibVLC API.
>
> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20190114/991e5c0a/attachment.html>
More information about the vlc-devel
mailing list