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
d73cab7186
tests: Minor cleanup
...
Co-Authored by: Thibault Saunier <tsaunier@gnome.org>
2014-10-31 11:58:08 +01:00
Thibault Saunier
9c9fe03b8f
gnlobject: Allow commiting of object that are not inside a composition
...
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
ab1d577a10
tests/common: disconnect commited handler
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
170ea10cde
tests: unref message correctly
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
c9bbb1d230
Don't be sync silly test
2014-10-31 11:58:07 +01:00
Mathieu Duponchelle
13ae2cecd3
composition: simplify update_pipeline_func
2014-10-31 11:58:07 +01:00
Thibault Saunier
9c10aa34d1
composition: Reset the srcpad target when removing the toplevelentry
2014-10-31 11:58:07 +01:00
Thibault Saunier
550aaf522d
composition: Use a GstPad task to run the update pipeline thread
2014-10-31 11:58:07 +01:00
Thibault Saunier
6b193cdbda
gnlcomposition: Factor out code to deactivate old stack and activate new one
2014-10-31 11:58:07 +01:00
Thibault Saunier
924f9ecf83
composition: Avoid looping using gotos
2014-10-31 11:58:07 +01:00
Thibault Saunier
03b11d58e4
gnlcomposition: Use the new _object_block_and_drop_data where appropriate
...
Renaming block_object_src_pad to _object_block_and_drop_data
2014-10-31 11:58:07 +01:00
Thibault Saunier
978e5cbe48
gnlcomposition: factor out some functions
2014-10-31 11:58:07 +01:00
Thibault Saunier
bf367f704c
gnlcomposition: Factor out the condition of _parent_or_priority_changed
2014-10-31 11:58:07 +01:00
Thibault Saunier
381f7d2aee
gnlcomposition: Add a function to block object source pad
2014-10-31 11:58:07 +01:00
Mathieu Duponchelle
4cb834fa21
gnl: Add the srcpad directly to GnlObject
...
Starting from now we will not claim that we support GnlObject that have
several source pads as this is
1- Not true at all;
2- the design of priorities in the GnlComposition tree does not allow that;
3- Not very useful in most of the cases and it complexifies quite a lot the code
in the composition.
Conflicts:
configure.ac
tests/check/Makefile.am
2014-10-31 11:58:07 +01:00
Thibault Saunier
38b080deb3
Revert "gnlobject: Commit object in READY_TO_PAUSED"
...
This causes races when seeking, reverting for now even if we will
probably want to bring something like that back.
This reverts commit 3549e745a8f0de3977b83c60e9b447afaf55d8a0.
2014-10-31 11:58:07 +01:00
Mathieu Duponchelle
bd7d8776a1
gnlsource: remove useless "controls_one" field.
2014-10-31 11:58:07 +01:00
Thibault Saunier
81a0ee66c1
Import GNL from 978332e7c4c3bba1949421d28b492540ab471450 'Release 1.4.0'
2014-10-31 11:58:07 +01:00
Thibault Saunier
a09caa3da2
tests: timelineedition: Init GES once at the beginning.
...
Avoiding to forget to init in a particular test and failling stupidly
2014-10-31 11:58:07 +01:00
Thibault Saunier
88430d70ea
test: backgroundsource: Disable tests that rely on nlecomposition internals
...
We can't rely on that, in particular now that it does not actually
add its children all the time but only when it is needed (and that
it has an internal bin where actual things happen).
2014-10-31 11:58:07 +01:00
Thibault Saunier
b752eea818
timeline: Add a method to retrieve a pad from a track
...
It allows user to easily get the proxied pad from a track.
API:
+ ges_timeline_get_pad_for_track
2014-10-31 11:58:07 +01:00
Thibault Saunier
cc84b63305
tools:launcher: Avoid commiting when we are not done loading the timeline
2014-10-31 11:58:07 +01:00
Thibault Saunier
b9c6606e89
ges: Use the new GNL element message feature to notify async operations
2014-10-31 11:58:07 +01:00
Mathieu Duponchelle
2104cd9e50
xml-formatter: message-forward is not something that should be parsed.
2014-10-31 11:58:07 +01:00
Mathieu Duponchelle
565591e9ee
timeline: handle async start
2014-10-31 11:58:07 +01:00