Commit graph

1331 commits

Author SHA1 Message Date
Thibault Saunier
58d525a4e7 ges: Add an init option to set media paths for moved assets
Allowing user to easily set a set of paths to look for moved
assets instead of needing the to re implement that logic
over and over.

https://bugzilla.gnome.org/show_bug.cgi?id=740714
2014-12-06 10:34:15 +01:00
Thibault Saunier
c8b2ab8dbb ges: Add a method to get GES GOption group
This allow us to have global options to be
passed as arguments of the program to configure
GES behaviour

API:
  ges_init_get_option_group

https://bugzilla.gnome.org/show_bug.cgi?id=740715
2014-12-06 10:34:14 +01:00
Thibault Saunier
39a7ce6ca0 pipeline: Disable encoding format renegotiation when rendering 2014-12-06 10:34:14 +01:00
Mathieu Duponchelle
fb34c5056e *source: new lines in xml break my parser.
+ So I removed them cause I'm clever

https://bugzilla.gnome.org/show_bug.cgi?id=740727
2014-12-05 22:12:12 +01:00
Mathieu Duponchelle
f85c463b93 track: [API]: ges_track_update_restriction_caps.
+ And specify default restriction caps for audio tracks.
+ Add ges_track_set_restriction_caps to the sections, it
  was missing.

https://bugzilla.gnome.org/show_bug.cgi?id=740726
2014-12-05 22:12:11 +01:00
Thibault Saunier
fd268f0387 element: Add a property allowing user to avoid serializing TimelineElements on demand 2014-11-10 17:03:46 +01:00
Thibault Saunier
5665e3abb1 xml-formatter: Serialize groups
They were not serialized until now.

That implies several changes:

* Override GESTimelineElement [start, inpoint, duration] properties in
  GESGroup to ensure that those properties are not serialized as they
  should not be.

* Rename GESBaseXmlContainer->clips field to
  GESBaseXmlContainer->containers as the hashtable now contains Groups

https://bugzilla.gnome.org/show_bug.cgi?id=709148
2014-11-10 16:22:43 +01:00
Thibault Saunier
e36c4c2bf7 pipeline: Do not relink an already linked track 2014-11-10 16:22:43 +01:00
Thibault Saunier
08af3721bf frameposition: In case sources have the same size as track, follow track size
For example if the size has been serialized in a file, but the user has
not personalized the size, we want that whenever the restriction caps
change the size, the video should take the size of the track
restriction caps.

We know need to keep track of the current positionner.size even if
setting through caps size changes.

https://bugzilla.gnome.org/show_bug.cgi?id=739527
2014-11-10 16:22:42 +01:00
Thibault Saunier
21807d6637 xml-formatter: Do not forget to set properties on the track elements
We were just setting children properties, even if the propertie to be
set on themselves where properly passed in

https://bugzilla.gnome.org/show_bug.cgi?id=729487
2014-11-10 16:22:42 +01:00
Thibault Saunier
7f71914f07 title-source: Expose the shaded-background property
Rework the way we override the background property to avoid trying to
lookup shaded-foreground-color!

https://bugzilla.gnome.org/show_bug.cgi?id=728635
2014-11-10 16:22:42 +01:00
Thibault Saunier
fcfdbef0b2 titlesource: Expose the outline-color property
https://bugzilla.gnome.org/show_bug.cgi?id=728634
2014-11-10 16:22:42 +01:00
Mathieu Duponchelle
ee2b3f7d24 pipeline: connect tracks when added, not only on state change.
+ ghost track src pad before calling track added so that
  pipeline has a pad to link.
+ Remove silly comment.
2014-11-10 16:22:42 +01:00
Thibault Saunier
ac906a9143 Document known and usable child properties for GESTrackElements subclasses 2014-11-10 16:22:41 +01:00
Thibault Saunier
20f76fe86f trackelement: Add a lookup_child vmethod
This method can be used for subclass to override the default behaviour
for child lookup. This vmethod can be used for example in the case where
you want the name of a child property to be 'overridden'.

As an example in the GESTitleSource where we have a videotestsrc
which has a 'foreground-color' property that is used in the TitleSource
to set the background color of the title, this vmethod is now used to
tweak the name passed as parameter to rename "background" to
"foreground-backend" making our API understandable.

API:
  GESTrackElement::lookup_child

https://bugzilla.gnome.org/show_bug.cgi?id=727880
2014-11-10 16:22:41 +01:00
Thibault Saunier
190643508f title: Deprecate all method related to child properties
The standard way setting children properties is by using the
GESTrackElement::set_child_propery and friend methods

https://bugzilla.gnome.org/show_bug.cgi?id=727880
2014-11-10 16:22:41 +01:00
Mathieu Duponchelle
3035bcb405 timeline: connect_after to layer.object_added.
We want the user provided signal handlers to be called before
we add track elements.
2014-11-10 16:22:41 +01:00
Mathieu Duponchelle
3f97397b4f nle: Downgrade some INFO to DEBUG.
+ makes it more pleasant to read logs in info.
2014-11-10 16:22:40 +01:00
Thibault Saunier
79230eef1f nle: Handle sending SEEK event recursively to our children
Instead of relying on it being implemented in core (as it is currently
not!)
2014-11-10 16:22:40 +01:00
Thibault Saunier
c4f43c88f2 track-element: Add a signal about added control bindings
API:
  GESTrackElement::control-binding-added
2014-11-10 16:22:40 +01:00
Thibault Saunier
24e2c88180 track-element: Add an API to list all set ControlBinding
API:
    ges_track_element_get_all_control_bindings
2014-11-10 16:22:40 +01:00
Thibault Saunier
a022b4b394 title-source: Properly expose children properties
+ Make sure that the TitleClip properties are not serialized anymore as
  they are serialized through children properties now.

+ Enhance debugging for not serialized properties in GESXmlFormatter.
2014-11-10 16:22:40 +01:00
Mathieu Duponchelle
19ee23cdcc nlecomposition: update base time before seeking current stack.
There could be a race where the new segments were pushed after
a seek on some / all pads before the operation had had its basetime
updated, and thus incoming segments were tweaked wrongly.

Reproducible with 3 clips composited and multiple seeks,
FIXME hard to validate.
2014-11-10 16:22:39 +01:00
Joris Valette
84610050ae formatter: save and load source's children properties 2014-11-10 16:22:39 +01:00
Thibault Saunier
e8fd816e33 project: Do not concider adding am already tracked asset as failure
It is not really a failure, just a special case.
2014-11-10 16:22:39 +01:00
Thibault Saunier
bc7a465fcd extractable: Make extractable_set_asset return a boolean
WARNING: This is a minor API breakage, it should be harmless
and allows us to let users know whether changing setting the
asset worked or no.
2014-11-10 16:22:39 +01:00
Thibault Saunier
6a371b308b nlecomposition: Fix the get_current_position method 2014-11-10 16:22:38 +01:00
Thibault Saunier
d419bccf4f nlecomposition: Wait for a buffer from the new segment to restart task
Avoiding races where we would launch a seek right after a FLUSH_STOP and
before we get a Buffer which would possibly lead to ERROR message when upstream
elements try to push a buffer and check_sticky fails because downstream
is flushing.
2014-11-10 16:22:37 +01:00
Thibault Saunier
578364ce41 nlecomposition: Do useless thing so that the compiler doesn't warn us!
Otherwize we get a gcc warning about useless statements.
2014-11-10 16:22:37 +01:00
Thibault Saunier
2fb33d69f8 nlecomposition: Update start stop and duration on initialization
So that the composition is usable right after the initialization
2014-10-31 11:58:12 +01:00
Thibault Saunier
0d54d796de ges: Avoid to always commit when a project is loaded
In case we are not in a PLAYING state and the project is loaded, the
only thing that should be done is to fill the gaps and this way when the
composition get to PLAYING, their initialization will be enough to get
everything on track.
2014-10-31 11:58:12 +01:00
Thibault Saunier
95223fd46b Start taking advantage of the fact that NLE is in the same three as GES! 2014-10-31 11:58:12 +01:00
Thibault Saunier
50cf1fb5fe nlecomposition: Fix several leaks
* In the action closure invokation we were alway leaking the composition.
* gst_bin_add will actually take an extra ref since we already  gst_object_ref_sink so we
own the object, other call to that method will increase the refcount which means we do
not need to pass an extra ref to the bin.
* We want to ref_sink right when the object is added to the composition, making things
cleaner and simpler to follow in the tests.
2014-10-31 11:58:12 +01:00
Thibault Saunier
3e79e28213 nlecomposition: Activate the composition ghostpad to flush downstream
Since commit 060b16ac75
"pad: don't accept flush-stop on inactive pads" in -core, the flush_stop event will not be
fowarded downstream in case the pad is not activated. In our case the element is in
READY state, so pads are deactivated. In that commit we simply make sure that the
event can be fowarded downstream
2014-10-31 11:58:12 +01:00
Thibault Saunier
02665dae91 nlecomposition: Restart the main task on FLUSH_STOP
It means stop using a dedicated probe to restart task so that the main probe does not
drop the FLUSH_STOP event before we have a chance to restart the task. (and this is
for sure cleaner/and simpler to read).
2014-10-31 11:58:12 +01:00
Thibault Saunier
37f50193fd nle:source: Protect the probeid field with the GST_OBJECT_LOCK
Avoiding races where we try to remove a probe on an already destroyed pad.
2014-10-31 11:58:12 +01:00
Thibault Saunier
03c284abb6 framepositionner: Add a weak pointer to the track_source
Avoiding assertions when the object is destroyed.
2014-10-31 11:58:12 +01:00
Mathieu Duponchelle
e31d0554c8 nle: Seek gnlsource when prerolled only
Instead of implementing seek on ready all around GStreamer, just
seek in PAUSED, when the source gets 'prerolled'.
2014-10-31 11:58:12 +01:00
Thibault Saunier
6bd27667eb ges-track: Do not set removed object state
It is the composition to handle
2014-10-31 11:58:12 +01:00
Thibault Saunier
8913c14c58 nle: Stop using a MainContext avoiding needing one iter per source dispach
Using GClosure to handle the source handling and handle our action
ordering ourselves

https://bugzilla.gnome.org/show_bug.cgi?id=733342
2014-10-31 11:58:12 +01:00
Thibault Saunier
aa69de7514 ges: Use audiomixer instead of adder by default 2014-10-31 11:58:12 +01:00
Thibault Saunier
b3336fe26e Port to the new NLE API
Port the timeline, track and pipeline to the new NLE API where
all objects have static src pads.
2014-10-31 11:58:12 +01:00
Thibault Saunier
11f9c6e108 Cleanup import of GNL and rename gnl to nle for Non Linear Engine
Conflicts:
	ges/ges-track-element.c
	gnl/Makefile.am
	gnl/common

Conflicts:
	ges/ges-internal.h
	ges/ges-track.c
	ges/ges-utils.c
	ges/nle/.gitignore
	ges/nle/gnlmarshal.list
	ges/nle/nle.h
	ges/nle/nlecomposition.c
	ges/nle/nlecomposition.h
	ges/nle/nleghostpad.c
	ges/nle/nleghostpad.h
	ges/nle/nleobject.c
	ges/nle/nleoperation.c
	ges/nle/nleoperation.h
	ges/nle/nlesource.c
	ges/nle/nlesource.h
	ges/nle/nletypes.h
	ges/nle/nleurisource.c
	ges/nle/nleurisource.h
	gnl/Makefile.am
	gnl/gnl.c
	gnl/gnl.h
	gnl/gnl/gnl.h
	gnl/gnl/gnlcomposition.c
	gnl/gnl/gnlcomposition.h
	gnl/gnl/gnlghostpad.c
	gnl/gnl/gnlghostpad.h
	gnl/gnl/gnlmarshal.list
	gnl/gnl/gnlobject.c
	gnl/gnl/gnloperation.c
	gnl/gnl/gnloperation.h
	gnl/gnl/gnlsource.c
	gnl/gnl/gnlsource.h
	gnl/gnl/gnltypes.h
	gnl/gnl/gnlurisource.c
	gnl/gnl/gnlurisource.h
	gnl/gnlcomposition.c
	gnl/gnlcomposition.h
	gnl/gnlghostpad.c
	gnl/gnlghostpad.h
	gnl/gnlmarshal.list
	gnl/gnlobject.c
	gnl/gnlobject.h
	gnl/gnloperation.c
	gnl/gnloperation.h
	gnl/gnlsource.c
	gnl/gnlsource.h
	gnl/gnltypes.h
	gnl/gnlurisource.c
	gnl/gnlurisource.h
	gnl/tests/check/gnl/common.c
	gnl/tests/check/gnl/common.h
	gnl/tests/check/gnl/complex.c
	gnl/tests/check/gnl/gnlcomposition.c
	gnl/tests/check/gnl/gnloperation.c
	gnl/tests/check/gnl/gnlsource.c
	gnl/tests/check/gnl/seek.c
	gnl/tests/check/gnl/simple.c
	tests/check/gnl/common.c
	tests/check/gnl/common.h
	tests/check/gnl/complex.c
	tests/check/gnl/gnlcomposition.c
	tests/check/gnl/gnloperation.c
	tests/check/gnl/gnlsource.c
	tests/check/gnl/seek.c
	tests/check/gnl/simple.c
	tests/check/nle/common.c
	tests/check/nle/common.h
	tests/check/nle/complex.c
	tests/check/nle/nlecomposition.c
	tests/check/nle/nleoperation.c
	tests/check/nle/nlesource.c
	tests/check/nle/seek.c
	tests/check/nle/simple.c
2014-10-31 11:58:12 +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
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
Tim-Philipp Müller
5c79b5539b smart-video-mixer: unref pads_info hash table in dispose
Before gst_bin_dispose() runs and destroys elements.
2014-10-30 15:54:04 +00:00
Tim-Philipp Müller
9b82267aef smart-adder: fix crash in unit test
Unref pads_info hash table in dispose instead of
finalize, i.e. before gst_bin_dispose runs and
destroys pads_info->bin (to which the pads_info
does not hold a ref).
2014-10-30 15:49:21 +00:00
Tim-Philipp Müller
717985182a track: fix indentation 2014-10-26 20:36:22 +00:00
Tim-Philipp Müller
e1f92be62b timeline-element: don't leak name string 2014-10-26 20:35:52 +00:00
Tim-Philipp Müller
29bac48934 timeline: fix mutex and all_elements hash table leaks 2014-10-26 20:35:20 +00:00
Tim-Philipp Müller
44724f8d6d timeline: free tracks obtained via select-tracks-for-object signal 2014-10-26 20:33:50 +00:00
Tim-Philipp Müller
30d879f357 timeline: free track elements list 2014-10-26 20:32:41 +00:00
Tim-Philipp Müller
b3114b6a4d video-test-source: fix caps leak 2014-10-26 20:31:40 +00:00
Tim-Philipp Müller
0c5dfcf931 framepositionner: fix caps leak 2014-10-26 20:31:26 +00:00
Tim-Philipp Müller
0f809b481b audiotrack: fix caps leak 2014-10-26 20:31:08 +00:00
Tim-Philipp Müller
4ecb7c88fb videotrack: fix caps leak 2014-10-26 20:30:53 +00:00
Tim-Philipp Müller
8edb4a7ec6 track: don't leak restriction caps 2014-10-26 20:30:29 +00:00
Tim-Philipp Müller
d2e33a35e9 smart-adder: don't leak pads_infos hash table 2014-10-26 20:29:06 +00:00
Tim-Philipp Müller
dd7d2d26ec smart-video-mixer: don't leak pads_infos hash table 2014-10-26 20:28:48 +00:00
Tim-Philipp Müller
3e02157f02 project: fix string leak 2014-10-26 20:27:29 +00:00
Tim-Philipp Müller
4ad628bb13 metacontainer: don't leak GValue contents 2014-10-26 20:25:46 +00:00
Lazar Claudiu
b850f3042e text-overlay: added text properties as child-properties 2014-07-23 16:11:31 +02:00
Thibault Saunier
ea2b814fba ges: Use registry to select the compositor element 2014-07-23 16:11:30 +02:00
Mathieu Duponchelle
0d2256b5bd xml-formatter: Set errno to 0 before g_ascii_strtoll. 2014-07-18 20:23:57 +02:00
Vincent Penquerc'h
31257a260c smart-video-mixer: fix memory leak on error path
Coverity 1212166
2014-06-12 09:51:02 +01:00
Thibault Saunier
edd95cf57d trackelement: Sort paramspec by name in list_children_properties
https://bugzilla.gnome.org/show_bug.cgi?id=720023
2014-06-09 16:10:41 +02:00
Thibault Saunier
03c87dbbc7 clip: Fix the ges_clip_set_position function
And enhance the new test

https://bugzilla.gnome.org/show_bug.cgi?id=731248
2014-06-09 16:10:41 +02:00
Thibault Saunier
bb4cf62b62 clip: Rename top_effect_index to top_effect_index
Keeping the old method to not break the API but removing it from the
documentation as users should use the new method (which is the exact
same with a better naming)

https://bugzilla.gnome.org/show_bug.cgi?id=731248
2014-06-09 16:10:41 +02:00
Thibault Saunier
2db5368b9d tests: Check ges_clip_set_position behaviour
+ Minor fix to handle properly the feature when clip is not in any layer

https://bugzilla.gnome.org/show_bug.cgi?id=731248
2014-06-09 16:10:41 +02:00
Thibault Saunier
b3a240126d pipeline: Add support to rendering without container
+ Simplify the support in ges-launch as we should not require the
profile desc to start with : in that case

https://bugzilla.gnome.org/show_bug.cgi?id=731245
2014-06-09 16:10:41 +02:00
Christoph Reiter
ba2b4920b6 Fix invalid GEnumValue.value_name entries.
This makes the enum entries in the gir have valid c:identifiers and documentation.

https://bugzilla.gnome.org/show_bug.cgi?id=730691
2014-06-09 16:10:41 +02:00
Mathieu Duponchelle
4494296830 ges-track: fill the gaps left empty by deactivated track elements. 2014-06-03 18:14:21 +02:00
Thibault Saunier
1fed9555cf ges:clip: Add a method to look for a list of TrackElement-s
+ Add unit tests to check it works properly.

API:
  + ges_clip_find_track_elements
2014-05-19 12:21:52 +02:00
Thibault Saunier
be23365899 ges: Do not forget to update the count when updating already used name
That could still lead to naming conflicts
2014-05-15 20:47:28 +02:00
Thibault Saunier
10c3e97f42 ges: Add a queue after the decoder in video test src 2014-05-15 20:07:58 +02:00
Thibault Saunier
19df708207 ges: Avoid GESTimelineElement naming conflicts
When users (can be formatters) set timeline element names in the
default 'namespace' we need to update our counter to avoid setting
twice the same name on TimelineElements so afterward there is no
problem adding them in the GESTimeline

+ add a testcase to check that new code and fix leaks on the
existing testcases.

+ Sensibly enhance debugs
2014-05-14 22:29:44 +02:00
Edward Hervey
8da506f931 xml-formatter: Don't leak children_props
By going through the cleanup code-path

CID #1212146
2014-05-13 14:30:39 +02:00
Thibault Saunier
b2c8a9efb3 ges: Do not use freed pointers
COVERTY CID 1212182
COVERTY CID 1212184
COVERTY CID 1212185
2014-05-10 23:00:45 +02:00
Thibault Saunier
3c1518be6c ges: Plug a leak in ges-smart-adder
COVERTY CID 1212166
2014-05-10 22:48:12 +02:00
Thibault Saunier
cf492d3839 ges-xml-formatter: fix memory leak
COVERTY CID 1212148
2014-05-10 22:45:34 +02:00
Thibault Saunier
9cbdfad546 ges-xml-formatter: fix memory leak in error path
COVERITY CID 1212147
2014-05-10 22:41:23 +02:00
Thibault Saunier
a1bf40b9e1 ges: Assert if an asset is not in the global hashtable
COVERITY CID 1151679
2014-05-10 22:38:21 +02:00
Thibault Saunier
0cf5d3df13 ges: Remove useless pointer assignement
COVERITY CID: 1139442
2014-05-10 22:33:15 +02:00
Thibault Saunier
9cbcd9617a ges: Remove useless pointer assignement
COVERITY CID: 1139941
2014-05-10 22:30:00 +02:00
Thibault Saunier
27ecb81037 ges: Add license header in ges-meta-container 2014-05-10 22:28:28 +02:00
Thibault Saunier
8015359f16 ges: remove comparison of unsigned inferior to 0
COVERITY CID 1139769
2014-05-10 22:14:34 +02:00
Tim-Philipp Müller
6d68f55c63 ges-xml-formatter: fix memory leak in error path
CID 1212146
2014-05-09 13:00:32 +01:00
Mathieu Duponchelle
12a2d96a34 timeline-element: return TRUE in _set_name when both names match. 2014-05-08 14:26:41 +02:00
Mathieu Duponchelle
71b9d421b8 ges-timeline: Fix ges_timeline_get_project macro.
This macro was a little confused about its own meaning.
2014-05-08 14:25:18 +02:00
Thibault Saunier
2dd59ab53a tools: Add an option to disable mixing
+ Add a a GObject property so that the info is seralized

https://bugzilla.gnome.org/show_bug.cgi?id=729382
2014-05-02 16:59:08 +02:00
Thibault Saunier
cba79c09ac project: Enhance debugging when updating URI with an invalid one
https://bugzilla.gnome.org/show_bug.cgi?id=729382
2014-05-02 16:58:55 +02:00
Thibault Saunier
ff1446c2b2 ges: Rename remaning tlobj to clip
https://bugzilla.gnome.org/show_bug.cgi?id=729382
2014-05-02 16:58:42 +02:00
Thibault Saunier
1adb9a0030 Add a notion of 'name' in GESTimelineElement
https://bugzilla.gnome.org/show_bug.cgi?id=729382
2014-05-02 16:27:25 +02:00
Thibault Saunier
56abc17a70 uri-asset: Check return value of gst_tag_list_copy_value
CID 1139597
2014-04-17 13:18:19 +02:00
Edward Hervey
d582da74d3 framepositioner: Set the proper default value
Most likely a copy/paste error.

CID #1139646
2014-04-10 18:03:55 +02:00
Edward Hervey
73713c157d xml-formatter: Use proper value for string extraction
The pass would be filled with some bogus (pointer) numerical value

CID #1139652
2014-04-10 18:01:03 +02:00
Edward Hervey
e58a0a0fd8 base-xml-formatter: Don't attempt to use NULL entry
Instead return straight away

CID #1139739
2014-04-10 17:52:20 +02:00
Christoph Reiter
a66e674649 Include class related section documentation in the gir file.
g-ir-scanner includes section docs as class/interface docs if the section name is equal to the lowercase type name.
Since all the documentation is in section blocks, rename them to match the type names.

https://bugzilla.gnome.org/show_bug.cgi?id=727776
2014-04-07 22:13:25 +02:00