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

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


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é.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20190114/52aa23ab/attachment.html>


More information about the vlc-devel mailing list