Update GES timeline on-the-fly?

Thibault Saunier tsaunier at gnome.org
Tue May 12 16:26:14 UTC 2020


> Note that all the pending changes will automatically be executed when the
timeline goes from GST_STATE_READY to GST_STATE_PAUSED, which is usually
triggered by a corresponding state changes in a containing GESPipeline.

This means that internally the nlecomposition commits itself when going
from READY to PAUSED so you are not required to commit the timeline before
going to PAUSE or PLAYING.

> Are you saying that I can modify a GESTimeline while the pipeline is
playing, and then execute `ges_timeline_commit` without pausing playback,
and all future points in time will be updated according to my modifications?

Yes, this works, there are some race in a test I introduced recently for
that case and am fixing it now.

> Perhaps only the bin inside NleComposition is transitioning from PLAYING
to READY, then back to PLAYING?  (While the timeline itself always remains
playing.)

When committing involves updating the current stack (ie. the part of the
timeline being played back), the composition will send
flush_start/flush_stop downstream "to ensure the pipeline is ready to
receive the new stream" which means the pipeline will prerol again and the
go back to PLAYING, but it is basically a detail from a user perspective.

- Thibault

On Tue, May 12, 2020 at 11:10 AM David Ing <ding at panopto.com> wrote:

> I would like some clarification on this also.
>
> The last paragraph of the documentation for ges_timeline_commit
> <https://gstreamer.freedesktop.org/documentation/gst-editing-services/gestimeline.html?gi-language=c#ges_timeline_commit>
> says:
>
> Note that all the pending changes will automatically be executed when the
> timeline goes from GST_STATE_READY to GST_STATE_PAUSED, which is usually
> triggered by a corresponding state changes in a containing GESPipeline.
>
>
> Are you saying that I can modify a GESTimeline while the pipeline is
> playing, and then execute `ges_timeline_commit` without pausing playback,
> and all future points in time will be updated according to my modifications?
>
> Perhaps only the bin inside NleComposition is transitioning from PLAYING
> to READY, then back to PLAYING?  (While the timeline itself always remains
> playing.)
>
> On Tue, May 12, 2020 at 4:08 AM Thibault Saunier <tsaunier at gnome.org>
> wrote:
>
>> Hello,
>>
>> This is not correct, you can commit the timeline in playing. What part of
>> the doc makes you think it is not the case so we can enhance it?
>>
>> - Thibault
>>
>> On Tue, May 12, 2020, 05:55 Electron826 <electron826 at gmail.com> wrote:
>>
>>> Hello,
>>> I'm using GStreamer Editing Services to create a Live Loops
>>> <https://youtu.be/-_ZgdSB_lGU>-style application where the user can
>>> schedule the playback of clips on the fly (while the pipeline is playing).
>>> However from what I understand, updating the timeline using
>>> ges_timeline_commit
>>> <https://gstreamer.freedesktop.org/documentation/gst-editing-services/gestimeline.html#ges_timeline_commit>
>>> is not possible without changing the state to PAUSED, which would disrupt
>>> playback. Is this the case? Is there any way I can get around this?
>>> Thanks in advance!
>>> Albert Tomanek
>>> _______________________________________________
>>> gstreamer-devel mailing list
>>> gstreamer-devel at lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>>
>> _______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20200512/09de025c/attachment.htm>


More information about the gstreamer-devel mailing list