Thibault Saunier [Mon, 22 Jul 2013 01:41:13 +0000 (21:41 -0400)]
pipeline: Check that the profile could actually be set on the encodebin
Setting the profile on an encodebin can fail, and if that happens, there
will be no profile set at all, we should return FALSE in GESPipeline
when that happens
Lubosz Sarnecki [Mon, 1 Jul 2013 14:27:54 +0000 (16:27 +0200)]
Rename GESTimelinePipeline to GESPipeline
rename ges_timeline_pipeline methods to ges_pipeline
Thibault Saunier [Thu, 18 Jul 2013 02:48:17 +0000 (22:48 -0400)]
tests: integration: Add some pipeline dumps
When we go to PLAYING, or when we get an error on the bus
+ Activate the hack so that we dump the pipeline on first buffer
pushed by the smart adder
Thibault Saunier [Thu, 18 Jul 2013 02:47:31 +0000 (22:47 -0400)]
tests: integration: Add video/audio only basic tests
Thibault Saunier [Thu, 18 Jul 2013 00:54:20 +0000 (20:54 -0400)]
tests: integration: Give some more information to user on errors
Thibault Saunier [Wed, 17 Jul 2013 22:34:22 +0000 (18:34 -0400)]
tests: intergration: Add some more encoding profiles
Thibault Saunier [Wed, 17 Jul 2013 20:09:29 +0000 (16:09 -0400)]
tests: integration: Give the user more details about failure when checking transcoded file
Thibault Saunier [Wed, 17 Jul 2013 20:06:09 +0000 (16:06 -0400)]
tests: integration: Be more precise with namings
Fully define formats in the namings
+ Add an mp3 + h264 in mov test
Thibault Saunier [Wed, 17 Jul 2013 17:06:05 +0000 (13:06 -0400)]
tests: integration: Refactor and make easier to add encoding profiles
Thibault Saunier [Wed, 17 Jul 2013 16:31:02 +0000 (12:31 -0400)]
tests: integration: Add audio/video only seeking tests
Thibault Saunier [Wed, 17 Jul 2013 16:05:26 +0000 (12:05 -0400)]
tests: integration: Remove the effect in test_seeking
It complexifies the test but this is not what we actually want in
that test
Thibault Saunier [Wed, 17 Jul 2013 01:58:16 +0000 (21:58 -0400)]
tests: Remove prints
And use GST_DEBUG and friends instead
Vasilis Liaskovitis [Sun, 14 Jul 2013 12:03:46 +0000 (14:03 +0200)]
integration: some fixes for seek tests
- Use g_list_remove_link so that ordering of seeks is not mandatory
- use g_slice allocator for SeekInfo structs
- Fix leak in freeing seek list
- Check for NULL seeks at end of test, otherwise fail and free failed seeks
Vasilis Liaskovitis [Sat, 13 Jul 2013 13:15:04 +0000 (15:15 +0200)]
integration: add SeekInfo and get_position callback for seek tests
A Seekinfo structure consists of 2 fields:
- position: the position to seek to
- seeking_position: the position to perform the seek from
Seeks can be appended to a global list e.g. from code:
seeks = g_list_append (seeks, new_seek_info (0.2 * GST_SECOND, 0.6 * GST_SECOND));
seeks = g_list_append (seeks, new_seek_info (1.0 * GST_SECOND, 1.2 * GST_SECOND));
seeks = g_list_append (seeks, new_seek_info (1.5 * GST_SECOND, 1.8 * GST_SECOND));
The get_position callback checks the current position and attempts to perform
the corresponding seek with gst_element_seek_simple
Mathieu Duponchelle [Tue, 2 Jul 2013 18:50:05 +0000 (20:50 +0200)]
ges-uri-clip: Add the possibility to specify an assets directory
through the GES_TESTING_ASSETS_DIRECTORY environment variable.
Thibault Saunier [Fri, 12 Jul 2013 23:44:46 +0000 (19:44 -0400)]
tests: Simplifie integration tests using macros all around
Mathieu Duponchelle [Thu, 25 Apr 2013 22:03:21 +0000 (00:03 +0200)]
tests: Add integration tests
Those are test with real media files, they are run separetely from other
unit tests using the make check-integration command (can be done from
the toplevel directory)
Mathieu Duponchelle [Sat, 27 Apr 2013 22:22:42 +0000 (00:22 +0200)]
test-utils: Add test file generation code.
Mathieu Duponchelle [Fri, 28 Jun 2013 13:49:03 +0000 (15:49 +0200)]
track-element: No need to log when prio == MIN_GNL_PRIO.
Mathieu Duponchelle [Thu, 27 Jun 2013 21:33:21 +0000 (23:33 +0200)]
framepositionner: fix messup with propname enum.
Mathieu Duponchelle [Wed, 26 Jun 2013 21:23:59 +0000 (23:23 +0200)]
track: Make it possible to disable the mixing feature
API:
ges_track_set_mixing
ges_track_get_mixing
Mathieu Duponchelle [Fri, 28 Jun 2013 22:17:31 +0000 (00:17 +0200)]
timeline: create_transitions_on_layer *before* actually commiting
Everything need to be in place before commiting, otherwize it makes no
sense at all.
Thibault Saunier [Fri, 12 Jul 2013 15:55:46 +0000 (11:55 -0400)]
group: Add an empty group constructor
As it is more intuitive for users.
API:
ges_group_new
Mathieu Duponchelle [Wed, 10 Jul 2013 21:33:51 +0000 (23:33 +0200)]
container/group/clip: Allow creating an empty group.
This is a legitimate use case.
Mathieu Duponchelle [Wed, 10 Jul 2013 19:24:28 +0000 (21:24 +0200)]
container: Add a 'recursive' argument to the get_children method
API:
- ges_container_get_children (GESContainer *container);
+ ges_container_get_children (GESContainer *container, gboolean recurse);
Mathieu Duponchelle [Thu, 11 Jul 2013 00:16:19 +0000 (02:16 +0200)]
group: set priv->setting_value to TRUE when moving ourselves in _child_removed
Thibault Saunier [Thu, 11 Jul 2013 03:15:17 +0000 (23:15 -0400)]
timelineelement: Make sure that we will never set a negative start
Currently we can end up overflowing the start of others child of our
parent, avoid that making sure we can set our start to what was
requested by the user before actually doing it
+ Add a test
Thibault Saunier [Wed, 10 Jul 2013 01:30:59 +0000 (21:30 -0400)]
timeline: Append missing layers when moving groups between layers
This was a missing feature of the newly added groups
Thibault Saunier [Wed, 26 Jun 2013 21:08:57 +0000 (17:08 -0400)]
ges: Implement a GESGroup class, subclass of GESContainer
The GESGroup class is used to group various GESContainer
together, it can contain either GESClips or GESGroup or both.
Thibault Saunier [Mon, 8 Jul 2013 02:40:55 +0000 (22:40 -0400)]
xml-formatter: Indent formatted files
Thibault Saunier [Wed, 3 Jul 2013 22:33:05 +0000 (18:33 -0400)]
timeline-element: Add a method to get the topelevel parent of an element
API:
ges_timeline_element_get_toplevel_parent
Thibault Saunier [Wed, 3 Jul 2013 16:48:58 +0000 (12:48 -0400)]
tests: More safely check if objects where destroyed
Check if an object rthat has already been freed has been destroyed is not safe.
Add a helper function that uses weak reference to check that objects that are expected
to be destroyed when unrefing an object are actually destroyed.
Thibault Saunier [Tue, 2 Jul 2013 23:47:48 +0000 (19:47 -0400)]
clip: Emit the notify::layer signal only when actually needed
That means:
- only when we do change layer
- At the end of moving between two layers
Thibault Saunier [Tue, 2 Jul 2013 14:56:40 +0000 (10:56 -0400)]
clip: Avoid list corruption when grouping objects
We are currently iterating over a list that is modified in the same
method, we have to get a copy of the list, and iterate over the copy.
Thibault Saunier [Tue, 2 Jul 2013 00:35:39 +0000 (20:35 -0400)]
clip: Add an internal method to easily get the priority of the layer the clip is in
Thibault Saunier [Mon, 1 Jul 2013 21:57:03 +0000 (17:57 -0400)]
container: Remove the get_priority_range vmethod
We now let full control to subclasses so we do not need it anymore.
Thibault Saunier [Mon, 1 Jul 2013 21:51:32 +0000 (17:51 -0400)]
container: Let full control of children priorities to subclasses
For that we make the children_control_mode a protected filed, directly usable by
subclasses, removing the method to set it.
And we let the subclass set and get the priority offsets to the container class.
Thibault Saunier [Mon, 1 Jul 2013 20:19:31 +0000 (16:19 -0400)]
track: Make sure that new gaps are filled before removing the old ones
Currently we can end up having gaps in track as the first step of the
gap filling method removes currently set gaps.
Thibault Saunier [Sat, 29 Jun 2013 23:31:23 +0000 (19:31 -0400)]
clip: Handle child priority offsets when setting priority
Thibault Saunier [Fri, 28 Jun 2013 23:17:54 +0000 (19:17 -0400)]
container: Do not allow adding an element to a container if it already has a parent
This should never happen, an element can have 1 and only 1 parent.
Thibault Saunier [Fri, 28 Jun 2013 23:16:47 +0000 (19:16 -0400)]
container: "Implement" the set_priority vmethod
This way we will just accept any value setted
Thibault Saunier [Fri, 28 Jun 2013 23:15:59 +0000 (19:15 -0400)]
ges: Avoid leaking the timeline when grouping containers
Thibault Saunier [Fri, 28 Jun 2013 18:39:16 +0000 (14:39 -0400)]
container: Let subclasses decide when height change should be computed
API:
- GESContainer.compute_height vmethod
+ _ges_container_set_height
Thibault Saunier [Tue, 2 Jul 2013 17:43:49 +0000 (13:43 -0400)]
base-xml-formatter: s/ducation/duration/
Thibault Saunier [Fri, 28 Jun 2013 16:56:17 +0000 (12:56 -0400)]
container: ges_container_ungroup return a transfer full list
Thibault Saunier [Fri, 28 Jun 2013 15:23:27 +0000 (11:23 -0400)]
ges: Move ges_clip_edit to GESContainer
This exact same method will be needed in GESGroup, so we should have the method
in the common parent class.
API:
- ges_clip_edit
+ ges_container_edit
+ GESContainer->edit vmethod
Thibault Saunier [Wed, 26 Jun 2013 23:55:37 +0000 (19:55 -0400)]
container: Update offsets in GESTimelineElement vmethod implementations
So subclasses just have to link up to resync offsets
Thibault Saunier [Wed, 26 Jun 2013 21:08:16 +0000 (17:08 -0400)]
docs: Misc documentation fixes
Thibault Saunier [Tue, 25 Jun 2013 22:37:48 +0000 (18:37 -0400)]
clip: Never try to set the start after the end of an element when trimming
Thibault Saunier [Tue, 25 Jun 2013 22:37:17 +0000 (18:37 -0400)]
internal: Add a macro to make it easier to get the end of a TimelineElement
Thibault Saunier [Tue, 25 Jun 2013 22:36:24 +0000 (18:36 -0400)]
track: Update gaps only when commiting
We were still updating them at useless moments, do it only when absolutely needed.
Thibault Saunier [Tue, 25 Jun 2013 22:34:44 +0000 (18:34 -0400)]
container: Fix the way we check priority of subclasses when grouping objects
The resulting list was from lower to higher, we need the contrary
Thibault Saunier [Wed, 26 Jun 2013 20:54:02 +0000 (16:54 -0400)]
ges: Move GESTimelineElemt vmethod implementation from container to clip
This is where they belong to has they are specific to that
implementation of the baseclass
Thibault Saunier [Tue, 25 Jun 2013 22:32:49 +0000 (18:32 -0400)]
container: Make initiated_move a read only protected member
It is a interesting information for subclasses.
Conflicts:
ges/ges-container.c
Thibault Saunier [Tue, 9 Jul 2013 14:57:51 +0000 (10:57 -0400)]
internal: Fix typo in the header
ges_base_xml_formatter_add_control_bindingi was meant to be
ges_base_xml_formatter_add_control_binding
Mathieu Duponchelle [Mon, 1 Jul 2013 21:33:01 +0000 (23:33 +0200)]
track-element: Remove duration_changed virtual method.
We use notifies for the properties.
+ Use notifies in audio-transition and video-transition
Mathieu Duponchelle [Mon, 8 Jul 2013 22:31:30 +0000 (00:31 +0200)]
formatters: Save and load bindings applied to sources.
Alban Browaeys [Mon, 17 Jun 2013 05:55:54 +0000 (07:55 +0200)]
ges-launch: make it portable to all locales.
Call setlocale (LC_ALL, "") as per setlocale man page
to make ges-launch portable to all locales (instead of default
"C" one).
Fixes g_option_context_parse on:
$ ges-launch-1.0 --verbose -r -q /home/prahal/Vidéos/Test3.xges -o
file:///home/prahal/Test3.mpeg
Error initializing: Invalid byte sequence in conversion input
The accentuated character in "Vidéos" the french xdg user directory
for "Videos" is what is choked upon.
https://bugzilla.gnome.org/show_bug.cgi?id=702425
Tim-Philipp Müller [Thu, 27 Jun 2013 23:24:33 +0000 (00:24 +0100)]
timelinepipeline: fix caps leak
Руслан Ижбулатов [Wed, 26 Jun 2013 12:57:17 +0000 (12:57 +0000)]
timelinepipeline: make the caps from encoding profile writable
https://bugzilla.gnome.org/show_bug.cgi?id=703121
Thibault Saunier [Sun, 23 Jun 2013 22:27:41 +0000 (18:27 -0400)]
urisource: Do not let user reset the URI property
This is not supported right now and would lead to unexpected behaviours
Mathieu Duponchelle [Mon, 3 Jun 2013 21:02:15 +0000 (23:02 +0200)]
ges: Add a framepositionner element used in ges-smart-mixer and ges-uri-source
It adds metadata on the buffers and the mixer parses them.
This is done because we want to keep positionning properties
and set them on the dynamic mixer pad.
Conflicts:
ges/Makefile.am
Mathieu Duponchelle [Thu, 30 May 2013 04:05:48 +0000 (06:05 +0200)]
tests: Add a audio/video mixing test.
Mathieu Duponchelle [Thu, 30 May 2013 04:04:47 +0000 (06:04 +0200)]
video-track: "implement" get_mixing_element.
Mathieu Duponchelle [Wed, 29 May 2013 16:48:42 +0000 (18:48 +0200)]
ges-smart-mixer: first code dump, mainly copy paste from ges-smart-adder.
Simon Corsin [Tue, 30 Apr 2013 17:19:39 +0000 (19:19 +0200)]
ges-layer.c: notify priority changes.
Mathieu Duponchelle [Thu, 16 May 2013 07:40:22 +0000 (09:40 +0200)]
ges-uri-source: Refactoring work.
+ Categorize functions (Callbacks, vmethods)
+ make more generic functions for the creation of the bin.
Mathieu Duponchelle [Thu, 16 May 2013 06:10:35 +0000 (08:10 +0200)]
uri-source: Expose the volume property.
+ Make the pspec_hash function an internal util.
+ Add a create_props_hashtable implementation
+ If TRACK_TYPE_AUDIO, put the volume properties in the hashtable.
Mathieu Duponchelle [Thu, 16 May 2013 02:22:16 +0000 (04:22 +0200)]
uri-source: when creating the audio element, set the volume to the layr volume when necessary.
Mathieu Duponchelle [Thu, 16 May 2013 01:27:20 +0000 (03:27 +0200)]
ges-uri-source: don't use gnlurisource but a custom bin.
+ This bin is a uridecodebin when GES_TRACK_TYPE_VIDEO
+ This bin contains a uridecodebin and a volume when GES_TRACK_TYPE_AUDIO
Mathieu Duponchelle [Wed, 15 May 2013 16:59:10 +0000 (18:59 +0200)]
smart-adder: remove volume from the bin, which quite simplifies the code.
+ Don't be too smart, adder.
Thibault Saunier [Sat, 30 Mar 2013 23:08:15 +0000 (00:08 +0100)]
smart-adder: Implement a GESSmartAdder bin element to be used as mixing element
..in audio tracks
Thibault Saunier [Mon, 22 Apr 2013 03:21:58 +0000 (00:21 -0300)]
meta-container: Add a VOLUME default meta to layers
Thibault Saunier [Sun, 31 Mar 2013 10:34:58 +0000 (12:34 +0200)]
ges: Misc documentation fixes
Thibault Saunier [Sat, 30 Mar 2013 18:02:52 +0000 (19:02 +0100)]
track: Implement infrastructure for mixing
Thibault Saunier [Sat, 30 Mar 2013 18:01:26 +0000 (19:01 +0100)]
track-element: Set a reference to the GESTrackElement on the GnlObjects using qdata
Thibault Saunier [Fri, 29 Mar 2013 18:23:00 +0000 (19:23 +0100)]
ges: Make space in the GESTracks to be able to add mixing elements later
And update the tests
Thibault Saunier [Fri, 29 Mar 2013 18:04:54 +0000 (19:04 +0100)]
tests:effects: Make use of normal layers, and enhance tests
Thibault Saunier [Fri, 29 Mar 2013 17:56:31 +0000 (18:56 +0100)]
layer: Fix some mix up in variable names
Thibault Saunier [Fri, 29 Mar 2013 17:55:27 +0000 (18:55 +0100)]
layer: Simplify a bit how we handle priorities
Thibault Saunier [Fri, 29 Mar 2013 17:53:25 +0000 (18:53 +0100)]
timeline-element: Make it possible to reset the timeline property to NULL
+ Add some debug symbol
Thibault Saunier [Thu, 28 Mar 2013 17:51:45 +0000 (18:51 +0100)]
ges: Implement GESAudioTrack and GESVideoTrack, subclasses of GESTrack
Thibault Saunier [Mon, 17 Jun 2013 01:47:52 +0000 (21:47 -0400)]
ges-launch: Report position while playing back
Giving more feedbacks to the user
Thibault Saunier [Sun, 16 Jun 2013 23:10:18 +0000 (19:10 -0400)]
ges-launch: Remove xptv formatter related code
It is not usefull anymore
Thibault Saunier [Sun, 16 Jun 2013 02:13:20 +0000 (22:13 -0400)]
ges-launch: Properly add UriClipAssets to the project
Thibault Saunier [Sun, 9 Jun 2013 16:29:05 +0000 (12:29 -0400)]
ges: Port to the new commit based API in GNL
The GNL API changed to go from a model where user could
enable/disable updates in the composition, which leaded to races
in many places, to a model where any positioning change in the
composition is not directly done but 'cached' and then the user
has to commit those changes so they become effective in the media
processing stack.
The new API in GES is pretty similare and is basically copy
pasting this new design.
We still need to see if in some context it would make sense to add
a mode where we would commit any changes ourself at the end of our
operation for basic use cases.
Removed APIs:
ges_timeline_enable_update
ges_timeline_is_updating
ges_track_enable_update
ges_track_is_updating
New APIs:
ges_track_commit
ges_timeline_commit
Lubosz Sarnecki [Thu, 20 Jun 2013 12:23:26 +0000 (14:23 +0200)]
timeline: fix segfaults
don't call the timeline update, when the reference is invalid
https://bugzilla.gnome.org/show_bug.cgi?id=702605
Tim-Philipp Müller [Tue, 18 Jun 2013 12:32:38 +0000 (13:32 +0100)]
autogen.sh: generate from common module, fixing srcdir != builddir build
https://bugzilla.gnome.org/show_bug.cgi?id=702424
Tim-Philipp Müller [Tue, 18 Jun 2013 12:14:48 +0000 (13:14 +0100)]
Add .doap file
Needed for common/update-autogen, but generally not a bad idea.
Mathieu Duponchelle [Tue, 30 Apr 2013 17:16:10 +0000 (19:16 +0200)]
ges-uri-asset.c: Fix ges_uri_asset_request_sync annotations.
Thibault Saunier [Wed, 12 Jun 2013 15:32:16 +0000 (11:32 -0400)]
project: Disable update in the project rather than the formatter
We need to make sure the update are disabled until the project is fully
loaded, let the responsability to the project instead of the formatter
Thibault Saunier [Wed, 12 Jun 2013 15:09:13 +0000 (11:09 -0400)]
timeline: Sync track enable_update property with parent
When we add a track to a timeline, we want it "enable update" property
to be set to the timeline's
Thibault Saunier [Wed, 12 Jun 2013 14:48:03 +0000 (10:48 -0400)]
ges-launch: Make use of assets for uri clips
It avoids races in TrackElement creations.
We should make use of assets everywhere in ges-launch but start using
them for uriclips first for now.
Sebastian Dröge [Wed, 5 Jun 2013 13:18:36 +0000 (15:18 +0200)]
Automatic update of common submodule
From 098c0d7 to 01a7a46
Thibault Saunier [Thu, 30 May 2013 15:40:36 +0000 (11:40 -0400)]
tests: Pass a ref of CAPS_ANY to ges_track_new
Thibault Saunier [Wed, 29 May 2013 20:48:03 +0000 (16:48 -0400)]
tests: Add a basic test for pipeline state change
Add some test utils to create a pipeline
Thibault Saunier [Wed, 29 May 2013 18:05:52 +0000 (14:05 -0400)]
ges: Protect from Gst dynamic callbacks
The pad-added and no-more-pad signal can be emited from any thread
so we have to protect our code from that
Thibault Saunier [Thu, 23 May 2013 19:52:35 +0000 (15:52 -0400)]
track: Update all gaps when timeline duration changed
And add a unit test to check that a gap is created in empty tracks
Thibault Saunier [Thu, 23 May 2013 17:16:22 +0000 (13:16 -0400)]
Finish renaming filesource to urisource
Thibault Saunier [Thu, 23 May 2013 15:57:42 +0000 (11:57 -0400)]
track: Update gaps when we set the timeline