Thibault Saunier
1dbf0b9146
composition: do not flush downstream when updating pipeline ourselves.
...
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:10 +01:00
Mathieu Duponchelle
b7265ecde2
composition: Set update to TRUE when updating the stack because of EOS
...
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:10 +01:00
Thibault Saunier
afc483b69d
composition: Handle seeking current stack while PAUSED
...
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:10 +01:00
Mathieu Duponchelle
6869c58e28
composition: Add and enhance some debug
...
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:09 +01:00
Thibault Saunier
48bd4c3046
composition: Dot the newly created stacks
...
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:09 +01:00
Thibault Saunier
b28c506121
composition: Factor out a function to seek the current stack
...
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:09 +01:00
Mathieu Duponchelle
75a809cf75
composition: Set the seqnum only when receiving the actual seek event
...
Setting it before calling seek_handling is racy!
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:09 +01:00
Thibault Saunier
f6cb54c2ef
composition: Set the real_eos_seqnum in a dedicated method
...
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:09 +01:00
Mathieu Duponchelle
28bea48893
composition: Reset the real_eos_seqnum when reseting the composition
...
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:09 +01:00
Thibault Saunier
9759f801e5
composition: Release OBJECTS_LOCK when emiting the "commited"
...
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:09 +01:00
Mathieu Duponchelle
913798ea3d
composition: Use the private struct directly
...
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:09 +01:00
Thibault Saunier
96672825d5
gnloperation: Totally clear operations when removing emptying current_bin
...
Removing linked childre leads to weird behaviour, we want to make sure
that all elements are totally clean when they are out the current bin.
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:09 +01:00
Thibault Saunier
9d8d077627
composition: Fix the build
...
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:09 +01:00
Thibault Saunier
eeb475db5b
composition: Relink nodes *after* setting the seqnum
...
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:09 +01:00
Thibault Saunier
92105a17a5
composition: Handle the case were we get an EOS right after a segment
...
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:09 +01:00
Mathieu Duponchelle
f0dbc0fcd6
composition: Make basic seeking working
...
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:09 +01:00
Thibault Saunier
054569cce7
composition: Implement the logic to PAUSE the task while executing actions
...
We need to wait for the pipeline update to be actually finished before we can start another
action. That means that we pause the task until one buffer from the new stack is
outputed.
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:09 +01:00
Mathieu Duponchelle
6e476ddd24
composition: Do not forget to set expandables state to NULL when disposing
...
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:09 +01:00
Thibault Saunier
bd47c57d1a
composition: Factor out a function to commit only the values
...
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:09 +01:00
Mathieu Duponchelle
de9c348ae0
composition: Get the current position before actually commiting values on commit
...
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:09 +01:00
Thibault Saunier
eeb530e19d
composition: Add a method that set the current bin to READY
...
We need to get the stream lock in some conditions, and thuse send
flush event in those cases.
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:09 +01:00
Mathieu Duponchelle
c99642fe66
composition: Remove useless code
...
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:09 +01:00
Thibault Saunier
5efd167bf2
composition: Clear the old stack when removing children that where used
...
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:09 +01:00
Mathieu Duponchelle
e522427cb4
composition: Remove useless toplevel_seek argiment from activate_new_stack
...
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:08 +01:00
Thibault Saunier
7de8b9c16c
composition: Rework the seqnum logic to avoid races when setting the new stack seqnum
...
When we were seeking the same stack without a logic that gurantees that we actually
saw the seek with the new seqnum set, we could have ended up with an EOS set with
the right seqnum even if it was actually not the case.
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:08 +01:00
Mathieu Duponchelle
7b55a91284
composition: Add/Remove children in the same order as they were called
...
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:08 +01:00
Thibault Saunier
5ec01408df
composition: Remove useless flush_start argument from the stop_task method
...
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:08 +01:00
Mathieu Duponchelle
44e95d240a
composition: Force setting children state to NULL rebfore unrefing them
...
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:08 +01:00
Thibault Saunier
f0c5f87284
compositition: Check last stack in the children thread
...
Avoiding to take the OBJECT_LOCK when recieving EOS. The computation is
based on the GstEvent.seqnum to make sure that the EOS we receive
corresponds to the right sequence.
In that patch we tweak seqnums so that they are correctly computed
avoiding to depend on all elements to do it properly as it might pretty
much not be the case!
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:08 +01:00
Mathieu Duponchelle
2e01715209
composition: Actiually set current_bin state even when not debugging
...
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:08 +01:00
Thibault Saunier
5df6986a81
composition: Set *all* children state when going back to READY and then NULL
...
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:08 +01:00
Mathieu Duponchelle
27d58a30af
composition: Fix toplevel seek event refcounting
...
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:08 +01:00
Thibault Saunier
0e663da588
composition: Teach the composition to seek same stack
...
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:08 +01:00
Thibault Saunier
c05898a169
composition: The ref the user gave us is our, and we give another to the bin when needed
...
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:08 +01:00
Mathieu Duponchelle
976cebeaed
composition: Rename commit_pipeline_func to commit_func
...
We do not commit any pipeline, we commit the new state of the composition internals
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:08 +01:00
Thibault Saunier
3f76ea7c2f
composition: Set the state of the internal bin before removing its children
...
Otherwize when we set the composition state to READY or NULL we can end
up with children in PAUSED state outside of everything
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:08 +01:00
Mathieu Duponchelle
23f58e27e6
composition: Empty current_bin on gnl_composition_reset
...
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:08 +01:00
Thibault Saunier
be37cb14bd
composition: Remove now useless external_gst_bin_add_remove field
...
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:08 +01:00
Mathieu Duponchelle
2af389dc87
composition: Remove now useless pad probes
...
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:08 +01:00
Thibault Saunier
74c30001f9
composition: Add an internal bin where that contain used children
...
Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2014-10-31 11:58:08 +01:00
Thibault Saunier
d8ca412cd9
composition: Add objects to the pending IO list in a GSource
...
This way we make sure we do not manipulate our children from another
thread than the dedicated one.
2014-10-31 11:58:08 +01:00
Thibault Saunier
bb7fa996b4
composition: Start implementing seeking in a GSource
2014-10-31 11:58:08 +01:00
Thibault Saunier
5faa417583
composition: switch to using an action signal to add and remove objects.
2014-10-31 11:58:08 +01:00
Mathieu Duponchelle
be269c833f
composition: chain up finalize before clering mcontext_lock.
2014-10-31 11:58:08 +01:00
Thibault Saunier
33aea7c5f4
composition: Initialize the first stack async
2014-10-31 11:58:08 +01:00
Thibault Saunier
3c958af13c
Finish fixing tests
2014-10-31 11:58:08 +01:00
Mathieu Duponchelle
6dc52ca0d2
composition: Actually commit in on our own thread
...
Avoiding races
2014-10-31 11:58:08 +01:00
Mathieu Duponchelle
23e7788921
composition: start and stop task in init and finalize
2014-10-31 11:58:07 +01:00
Mathieu Duponchelle
e81d987fad
composition: home grown task
2014-10-31 11:58:07 +01:00
Mathieu Duponchelle
13ae2cecd3
composition: simplify update_pipeline_func
2014-10-31 11:58:07 +01:00