Commit graph

1474 commits

Author SHA1 Message Date
Thibault Saunier
2ffa9477e9 ges: Handle setting child property on container directly in the structured based interface 2015-03-20 13:53:40 +01:00
Thibault Saunier
3105797913 ges: Add an internal GstStructure based interface
To be use by GstValidate action and ges-launch

Reviewers: Mathieu_Du, thiblahute

Differential Revision: http://phabricator.freedesktop.org/D42
2015-03-20 13:53:35 +01:00
Thibault Saunier
7d0015b973 ges: Fix build for older GLib
The return type of g_hash_table_insert changed from void to boolean
2015-03-19 09:33:18 +01:00
Thibault Saunier
dd47def4e3 container: implement children property handling 2015-03-18 20:36:39 +01:00
Thibault Saunier
42477a5ec3 ges: Move the notion of children properties to GESTimelineElement
Summary:
Deprecate the old GESTrackElement children property handling API.

New APIs:
  * ges_timeline_element_list_children_properties
  * ges_timeline_element_lookup_child
  * ges_timeline_element_get_child_property_by_pspec
  * ges_timeline_element_get_child_property_valist
  * ges_timeline_element_get_child_properties
  * ges_timeline_element_set_child_property_valist
  * ges_timeline_element_set_child_property_by_pspec
  * ges_timeline_element_set_child_properties
  * ges_timeline_element_set_child_property
  * ges_timeline_element_get_child_property
  * ges_timeline_element_add_child_property
  * ges_timeline_element_remove_child_property

Deprecated APIs:
  * ges_track_element_list_children_properties
  * ges_track_element_lookup_child
  * ges_track_element_get_child_property_by_pspec
  * ges_track_element_get_child_property_valist
  * ges_track_element_get_child_properties
  * ges_track_element_set_child_property_valist
  * ges_track_element_set_child_property_by_pspec
  * ges_track_element_set_child_properties
  * ges_track_element_set_child_property
  * ges_track_element_get_child_property
  * ges_track_element_add_child_property

Reviewers: Mathieu_Du

Differential Revision: http://phabricator.freedesktop.org/D40
2015-03-18 20:36:39 +01:00
Thibault Saunier
3e49850e6d timeline: Add API to find a layer with a specific priority in a timeline
Summary:
API:
  * ges_timeline_get_layer

Test Plan: Nan

Reviewers: mathieu.duponchelle
2015-03-18 20:36:38 +01:00
Thibault Saunier
f470222f3d Revert "ges: Move the notion of children properties to GESTimelineElement"
I got some trouble with

  arc land

and I wanted to push the 3 commit coming after this revert as 3
different commits but they ended up being all squash into one single
commit, which is clearly not cool for later bisecting and blaming.
Reverting that commit and re pushing those 3 commits as they were
supposed to be.

This reverts commit 9fe15ef435.
2015-03-18 20:33:48 +01:00
Thibault Saunier
9fe15ef435 ges: Move the notion of children properties to GESTimelineElement
Summary:
Deprecate the old GESTrackElement children property handling API.

New APIs:
  * ges_timeline_element_list_children_properties
  * ges_timeline_element_lookup_child
  * ges_timeline_element_get_child_property_by_pspec
  * ges_timeline_element_get_child_property_valist
  * ges_timeline_element_get_child_properties
  * ges_timeline_element_set_child_property_valist
  * ges_timeline_element_set_child_property_by_pspec
  * ges_timeline_element_set_child_properties
  * ges_timeline_element_set_child_property
  * ges_timeline_element_get_child_property
  * ges_timeline_element_add_child_property
  * ges_timeline_element_remove_child_property

Deprecated APIs:
  * ges_track_element_list_children_properties
  * ges_track_element_lookup_child
  * ges_track_element_get_child_property_by_pspec
  * ges_track_element_get_child_property_valist
  * ges_track_element_get_child_properties
  * ges_track_element_set_child_property_valist
  * ges_track_element_set_child_property_by_pspec
  * ges_track_element_set_child_properties
  * ges_track_element_set_child_property
  * ges_track_element_get_child_property
  * ges_track_element_add_child_property

Reviewers: Mathieu_Du

Reviewed By: Mathieu_Du

Differential Revision: http://phabricator.freedesktop.org/D40
2015-03-18 20:23:55 +01:00
Thibault Saunier
f21132c3d5 ges: Remove all reference to already dead GESSimpleLayer 2015-03-13 10:02:39 +00:00
Luis de Bethencourt
8b4b2562a6 project: remove unnecessary dereference
g_clear_error() already dereferences the error pointer, no need to manually
check and do it.

CID #1257630
2015-03-05 13:53:32 +00:00
Tim-Philipp Müller
af3fd19637 ges-base-xml-formatter: fix setting of child properties
Make sure all child properties get set. GstStructureForeachFunc
takes a gboolean return value that decides whether to
continue or not.
2015-02-27 01:26:24 +00:00
Tim-Philipp Müller
7e9a2ef6c0 ges-meta-container: fix ges_meta_container_foreach()
Really call function on all metadata inside the container
instead of stopping randomly. GstStructureForeachFunc
takes a gboolean return value.
2015-02-27 01:24:30 +00:00
Tim-Philipp Müller
80909fb99a ges-base-xml-formatter: fix property setting
GstStructureForeachFunc has a gboolean return value,
and the foreach function will stop unless we return
TRUE here. This meant it was potluck whether all
properties in the structure got set or not.

Fixes setting of text overlay clip text property
in particular.

https://bugzilla.gnome.org/show_bug.cgi?id=743874
2015-02-26 20:14:31 +00:00
Thibault Saunier
d0421639e0 ges: Always set ANY capsfeatures on tracks caps property
Summary:
We should not restrict the CapsFeatures on the track caps.
If someone want to do such a restriction he should add it to
the restriction caps directly

Test Plan: Run testsuite

Reviewers: mathieu.duponchelle
2015-02-20 14:10:56 +01:00
Mathieu Duponchelle
6321a9135f ges-project: no need to commit an empty timeline.
Summary: Can lead to deadlocks if the user commits at the same time.

Test Plan: Ran make check, it worked

Reviewers: tsaunier
2015-02-19 18:24:39 +01:00
Luis de Bethencourt
7dd8dbab28 ges: initialize timeline_duration value
If priv->timeline is False the function does not set any value for
timeline_duration before using it in gap_new (). Initialize the value to aviod
unexpected behaviour.

CID #1268405
2015-02-10 10:29:39 +00:00
Thibault Saunier
f192ba3192 nlecomposition: Properly protect the children task 2015-02-06 10:06:05 +01:00
Mathieu Duponchelle
1bfe0b7ef3 Cleanly handle removing the last object in a composition
The strategy here is to seek at the new end of the composition. And in
GES we always add a 1ns long gap at the end of the tracks so that all
track have the exact same duration, and we have black frames when the
timeline is empty
2015-02-03 12:03:33 +01:00
Thibault Saunier
f3f27bd636 validate: Do not wrongly set clip duration for UriClips
That was making no sense at all....
2015-02-02 11:57:19 +01:00
Thibault Saunier
23c71e8222 validate: Properly expose the commit action as ASYNC 2015-02-02 11:57:03 +01:00
Thibault Saunier
0bb313030b layer: Remove child from children list before emitting "child-removed" 2015-01-28 11:39:58 +01:00
Luis de Bethencourt
1efe0639de ges: remove useless gpointer variable
gpointer useless is indeed useless since we can use GST_DEBUG_REGISTER_FUNCPTR
to avoid having to store the return of the GST_DEBUG_FUNCPTR registration.

CID #1265771
2015-01-26 18:25:02 +00:00
Luis de Bethencourt
8f79ee9230 ges: merge MIN() and MAX() into CLAMP()
Merge the usage of MIN() and MAX() into one CLAMP() function.

CID #1265770
2015-01-26 17:47:55 +00:00
Thibault Saunier
7a9d39fadb ges: Make sure the GESTextOverlayClip is register on init
So it can be used when de serializing projects containing it.

https://bugzilla.gnome.org/show_bug.cgi?id=743406
2015-01-24 10:56:30 +01:00
Thibault Saunier
dc2f48a726 uri-asset: Check that the newly computed URI exist
No the one we know failed!
2014-12-12 12:07:01 +01:00
Thibault Saunier
7c6ad5e3ba validate: Add an action type to load a project from its content 2014-12-12 12:07:01 +01:00
Thibault Saunier
752a2c6885 Revert "track: [API]: ges_track_update_restriction_caps."
This reverts commit e9544ce1d6.

This commit should never have landed we decided we do not want to do
that.
2014-12-06 10:41:33 +01:00
Thibault Saunier
97c56da95b timeline: Add a method to easily check if a timeline is empty
API:
    + ges_timeline_is_empty
2014-12-06 10:34:19 +01:00
Thibault Saunier
78913931b2 ges: Recompute Group priority when one of its clip.layer change priority
And add a unit test for that case where it was previously failing
2014-12-06 10:34:18 +01:00
Mathieu Duponchelle
e9544ce1d6 track: [API]: ges_track_update_restriction_caps.
+ And specify default restriction caps for audio and video tracks.
+ Add ges_track_set_restriction_caps to the sections, it was missing.

https://bugzilla.gnome.org/show_bug.cgi?id=740726
2014-12-06 10:34:18 +01:00
Thibault Saunier
523e279e91 nlecomposition: Minor debug enhancements 2014-12-06 10:34:17 +01:00
Thibault Saunier
122dcbc190 pipeline: Expose playsink::video-filter and playsink::audio-filter
That can be used to add filters at the very end of the pipeline,
and one can think of adding a watchdog element in there for
example.
2014-12-06 10:34:17 +01:00
Thibault Saunier
068c20ff60 pipeline: Dot not check for chain->tee twice 2014-12-06 10:34:17 +01:00
Thibault Saunier
c7cceae128 validate: Avoid depending on not stable APIs
And cleanup includes
2014-12-06 10:34:17 +01:00
Thibault Saunier
452ebc1965 validate: Move to new action type registration API 2014-12-06 10:34:17 +01:00
Thibault Saunier
8e3790495f validate: Add missing action execution printing 2014-12-06 10:34:16 +01:00
Thibault Saunier
b7daa03a6e timeline-element: Properly handle setting name to NULL 2014-12-06 10:34:16 +01:00
Thibault Saunier
6367c96d7d nlecomposition: Add a 'query-position' signal
In order to get the precise position of the pipeline, the only
way is to ask the 'application' to query the pipeline position and
use it.
2014-12-06 10:34:16 +01:00
Thibault Saunier
3b353be8ea ges: Keep backward compatibility for relocated assets CLI
Meaning adding an API for user to add relacation URI paths

API:
    ges_add_missing_uri_relocation_uri
2014-12-06 10:34:16 +01:00
Thibault Saunier
e5b57db7a2 ges: Add a method to pass argc/argv to GES at init time
Allowing user to set configuration actions without using
the GES GOptionGroup

https://bugzilla.gnome.org/show_bug.cgi?id=740717
2014-12-06 10:34:15 +01:00
Thibault Saunier
ac3cad47b6 validate: Expose GES Validate action
So other can also make use of those action outside
ges-launch itself

https://bugzilla.gnome.org/show_bug.cgi?id=740718
2014-12-06 10:34:15 +01:00
Thibault Saunier
dc0770bfa6 uri-asset: Ensure that UriAssets loaded with error are remembered 2014-12-06 10:34:15 +01:00
Thibault Saunier
55c88a726e project: Add a method to create assets synchronously
This allows to create a add an asset to a project in a
synchronous way.

API:
  ges_project_create_asset_sync

https://bugzilla.gnome.org/show_bug.cgi?id=740716
2014-12-06 10:34:15 +01:00
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
Thibault Saunier
af10f530ad build: Add reference to GstVideo in gir file 2014-04-06 16:43:07 +02:00
Lubosz Sarnecki
272e372566 multifilesrc: remove unused class declaration 2014-03-27 08:34:54 +01:00
Lubosz Sarnecki
d3bc58988d build: install ges-version.h 2014-03-27 08:34:52 +01:00
Thibault Saunier
0e9c74bcb1 pipeline: Do not set EncodingProfile.presence when we have no track for the type
That leads to freeze as encodebin will be waiting for a pad and EOS
forever
2014-03-21 10:22:52 +01:00
Lubosz Sarnecki
46c65aaaaf ges: multifilesrc support
* GESMultiFileSource class
* multifilesrc example
* Support multifile:// urls in uri asset
* start/stop index modification
* Doc

https://bugzilla.gnome.org/show_bug.cgi?id=719373
2014-03-19 18:32:48 +01:00
Thibault Saunier
d7c43140e7 Release 1.2.0 2014-03-16 12:46:26 +01:00
Thibault Saunier
9ef7344a21 Properly generate versioning #define-s during autogen 2014-03-15 20:01:48 +01:00
Thibault Saunier
9b050a54cd container: Properly handle the case where we could not set parent
In this case we had a FIXME about reverting everything that was done,
implement that FIXME!
2014-03-15 20:01:48 +01:00
Andreas Schwab
4dbdac99ed ges: remove extra semicolon
https://bugzilla.gnome.org/show_bug.cgi?id=726365
2014-03-15 13:12:06 +01:00
Thibault Saunier
0a903cdd35 pipeline: Always set the encoding profile presence to 1
We currenty do not support multiple tracks with same type in GESPipeline
and we actually need to set the presence field to avoid a scenario where
we have only video in a video track, and no audio in the audio track. So
audiotestsrc is used and we end up encoding the whole audio stream but
no decoded video frame as reached the decodebin src pad, so the pad
has not been created and thus it will not be linked to the encodebin.
On the audio part, the EOS will be emitted so fast that the resulting stream will
not have any video in it as the muxer will not even have a video pad created.

Setting the presence will ensure that the muxer does have a video pad
(because of how encodebin behaves) and thus will create a pad for it
and wait for its EOS.
2014-03-14 18:48:44 +01:00
Thibault Saunier
bffc8a1d94 title-source: Rename ges_title_clip_set_backrgound_colour as appropriate
The method was badly called _clip_ instead of _source_ we have not release the API
so we still can change it.
2014-03-14 12:12:17 +01:00
Dan Williams
636dcc3a26 ges: fix finalize/dispose mixup
https://bugzilla.gnome.org/show_bug.cgi?id=725918
2014-03-08 11:26:32 +00:00
Dan Williams
54367a2d36 ges: Ensure GObject finalize and dispose methods chain up to parents
https://bugzilla.gnome.org/show_bug.cgi?id=725918
2014-03-08 11:24:33 +00:00
Dan Williams
4170ed1721 Fix use-after-free in _free_pending_clip()
https://bugzilla.gnome.org/show_bug.cgi?id=725855
2014-03-07 17:42:52 +01:00
Alexandru Băluț
2fbf26a57f Update the documentation to use Pitivi instead of PiTiVi 2014-02-27 09:54:41 +01:00
Alexandru Băluț
abfe68b285 Remove "#" from short-description
It breaks the display in the index.html page.
2014-02-27 09:54:41 +01:00
Alexandru Băluț
eef3861272 Minor documentation fixes: GESExtractable, GESAsset 2014-02-27 09:54:41 +01:00
Thibault Saunier
e9ecfef808 timeline: Make sure not to add 2 times a TrackElement in the same track
Without that, if a UriClip contains several tracks of a same type (ie.
video or audio...), we would add all the TrackElements to each track
making everything failling as we end up with several GNL sources at
the same position with the same priority.
2014-02-18 11:02:49 +01:00
Thibault Saunier
f921277ac2 Rename TIMELINE_MODE_XXX to GES_PIPELINE_MODE_XXX so it corresponds to reality
First, it was not in any namespace, second the name of the enum is
GESPipelineFlags.
2014-02-17 12:37:57 +01:00
Thibault Saunier
387b234f3b ges: Give a reference to the formatter for the idle callback
This avoid segfault as we are not guaranteed that the formatter will
not be destroyed in the meantime.

+ Minor cleanup of handling of private members

https://bugzilla.gnome.org/show_bug.cgi?id=724337
2014-02-16 20:58:04 +01:00
Sebastian Dröge
0a25ed00a1 ges: Remove unused functions 2014-02-09 23:50:25 +01:00
Sebastian Dröge
f88cc0f433 ges-group: Properly check for integer underflows
error: comparison of unsigned expression < 0 is always false
2014-02-08 20:19:53 +01:00
Sebastian Dröge
92e595718a ges-extractable: Return NULL instead of G_TYPE_INVALID
The return type of this function is gchar *, not GType
2014-02-08 20:18:11 +01:00
Thibault Saunier
0b1f3bb5ff ges: Some documentation cleanup 2014-02-05 00:12:10 +01:00
Alexandru Băluț
df93acc581 ges-pipeline: Rename add_timeline to set_timeline
API BREAKAGE:
        - ges_pipeline_add_timeline
        + ges_pipeline_set_timeline
2014-02-04 14:17:47 +01:00
Thibault Saunier
f76000d750 uri-asset: Let a chance for user to change URI if the set one is not readable
It sounds like the most logical thing to do in that case.

https://bugzilla.gnome.org/show_bug.cgi?id=721111
2014-02-04 13:53:34 +01:00
Thibault Saunier
f4ce6dcab7 videosource: Always add a deinterlace at the beining of videosrcbin
It might be needed in some cases (for example when decoding prores files) and
it is the way it is done with playbin now. Also deinterlace now properly supports
passtrough mode.
2014-02-04 13:53:34 +01:00
Thibault Saunier
94dbf20400 ges-asset: Do not forget to give a ref to the registry
+ Add test in the testsuite
+ Fix broken tests

https://bugzilla.gnome.org/show_bug.cgi?id=721111
2014-01-30 22:27:54 +01:00
Mathieu Duponchelle
105d901c12 track-element: clamp interpolated keyframe values. 2014-01-10 18:40:37 +01:00
Thibault Saunier
14a2f5943d base-xml-formatter: Emit 'loaded' right after a project with empy timeline is loaded
https://bugzilla.gnome.org/show_bug.cgi?id=720040
2013-12-27 10:14:20 +01:00
Thibault Saunier
d00283f309 track-element: Remove constructors for TrackElement from the API
Most of the time the user should not create GESTrackElements
himself, instead he should add a GESAsset to a layer, that will
result in a clip creation and the proper TrackElements to be
created and added to the tracks.

The case of effects and overlays is a bit different as the user should
create the TrackElement and add them to a clip.
2013-12-27 10:14:19 +01:00
Thibault Saunier
b774783af8 ges: Remove versionning infos now that we start on the 1.X API serie
They are now meaningless, all the current symbols are the basic
ones for the 1.X serie.
2013-12-27 10:14:19 +01:00
Thibault Saunier
35cefaad1b ges: Add padding for API extension where missing 2013-12-27 10:14:19 +01:00
Thibault Saunier
289b04f170 ges: Reimplement 'always create a project to back a timeline'
Keeping it simple, and making sure everything is synchronous
2013-11-28 15:47:50 -03:00
Thibault Saunier
6e9e9338ae Revert "ges: Always create a project to back a timeline"
This reverts commit 59d83f1a93.

Conflicts:
	tests/check/ges/backgroundsource.c
	tests/check/ges/effects.c
	tests/check/ges/overlays.c
	tests/check/ges/simplelayer.c
	tests/check/ges/text_properties.c
	tests/check/ges/titles.c
2013-11-28 15:12:15 -03:00
Thibault Saunier
99a36b2b69 timeline: Add all assets of the clip added to the timeline to the project 2013-11-25 15:18:24 -03:00
Thibault Saunier
e7a45f0eef Remove GESSimplerLayer, that API should land into GESLayer in the end
The priority handling of clip is now handled by GESLayer itself, and
handling clip as a ordered list should be implemented in GESLayer itself
too, this way the user can decide to switch mode at any time instead of
2013-11-22 17:50:27 -03:00
Thibault Saunier
04071e7214 layer: Set clip start to the duration of the layer if == TIME_NONE
In the provided start of a clip is GST_CLOCK_TIME_NONE in
ges_layer_add_asset, it means that we want the clip to be
added at the end of the layer
2013-11-22 17:50:27 -03:00
Thibault Saunier
4c411761fd layer: Add an API to get the total duration of the layer
API:
    ges_layer_get_duration
2013-11-22 17:50:27 -03:00
Lubosz Sarnecki
7b1df27c86 gir: fix warnings 2013-11-22 17:50:27 -03:00
Thibault Saunier
a73644a7b9 video-uri-source: Handle interlaced videos
https://bugzilla.gnome.org/show_bug.cgi?id=710168
2013-11-19 12:37:23 -03:00
Thibault Saunier
371740ecdf framepositionner: Fix the range of properties dealing with number of pixels
This way it is possible to interpolate those values.
2013-11-09 10:35:13 -03:00
Thibault Saunier
59d83f1a93 ges: Always create a project to back a timeline
And fix all the tests as we need to wait for the project to be loaded
to check the reference count of the timeline (as we keep a ref on the
timeline in project to later emit "loaded" on idle).
2013-11-09 10:35:12 -03:00
Kishore Arepalli
5a5228a25a ges: Fix several memory leaks
https://bugzilla.gnome.org/show_bug.cgi?id=710390
2013-10-31 23:11:23 +01:00
Mathieu Duponchelle
219154eacb track-element: add start to the position to which we wish we split the bindings.
The bindings split is relative to the beginning of the clip.
2013-10-30 12:09:52 -03:00
Thibault Saunier
0e35a68aa6 clip: Fix the find_track_element method
What we want is to be able to find a TrackElement by its type, and
possibly specify a Track where to look into.
2013-10-29 17:31:06 -03:00
Kishore Arepalli
71a6d75d75 ges-formatter: don't use 'class' as function argument name in headers
It's a keyword in C++ and C++ compilers won't like it.

https://bugzilla.gnome.org/show_bug.cgi?id=710172
2013-10-15 10:49:50 +01:00
Thibault Saunier
ee36beb244 uri-asset: Check if file exists before trying it as a proxy
This avoids:

  1- discovering file that we know do not exist
  2- proposing the current proxy path (that failed) as a possible proxy
     which lead to errors
2013-10-11 17:09:46 -03:00
Thibault Saunier
35acbae033 formatter: Try to use best formatter first 2013-10-09 20:25:47 -03:00
Thibault Saunier
d77f260f9e audiosource: Add audioconvert and audioresample before the volume element
https://bugzilla.gnome.org/show_bug.cgi?id=709777
2013-10-09 20:08:03 -03:00
Mathieu Duponchelle
fb6aabfe4d timeline: pass the correct argument to disconnect_by_func.
fixes #709205
2013-10-02 21:17:56 +02:00
Thibault Saunier
ca562ba8a0 clip: Return the newly created TrackElement when adding an asset
This is a minor API change
2013-09-28 18:09:49 +02:00
Thibault Saunier
002977cd85 timeline: Add a signal to know when it is commited 2013-09-28 15:42:20 +02:00
MathieuDuponchelle
1c389d6af3 clip: split_bindings at position * + inpoint* 2013-09-28 02:44:06 +02:00
MathieuDuponchelle
e6f82c68e5 video-track: update gaps framerate along with restriction caps. 2013-09-28 02:44:06 +02:00
MathieuDuponchelle
1fac84c7b9 xml-formatter: add support for restriction caps. 2013-09-25 23:54:49 +02:00
Simon Corsin
3970e2fac7 video-source: Add a videorate in video-source.
And control it in framepositionner.

Conflicts:
	ges/ges-video-source.c
2013-09-25 23:54:49 +02:00