Commit graph

1930 commits

Author SHA1 Message Date
Thibault Saunier
219c8791e6 formatter: Prefix all children properties in the XML formatter
Otherwise it will fail on properties that are mandatorily prefixed
like the newly added deinterlacing properties
2016-05-06 18:28:01 -03:00
Thibault Saunier
8718b01595 ges: Remove timeline_emit_group_removed which slipped in the API by mistake
This is formally an API break but I am sure no one ever used that and
we should make sure the method is removed as soon as possible because
it has no reason to be exposed.
2016-05-06 18:27:56 -03:00
Thibault Saunier
f6b04061c8 container: Handle setting children properties that need prefixing 2016-05-03 08:31:44 -03:00
Thibault Saunier
57543cc894 video-source: Expose deinterlace-[fields, mode, tff] child properties
Letting some control over the deinterlacing to the users
2016-05-03 08:31:44 -03:00
Tim-Philipp Müller
e40c8fcb30 ges: fix misc g-i annotations 2016-04-30 18:38:33 +01:00
Aurélien Zanelli
4257605141 g-i: use only "ges/ges.h" as c-include for introspection
This is the only header which shall be included by user. Otherwise some
language using gir to generate binding, e.g Vala, will includes all
headers files in alphabetical order which causes compilation errors due
to incomplete type.

https://bugzilla.gnome.org/show_bug.cgi?id=765856
2016-04-30 18:24:24 +01:00
Aurélien Zanelli
a8636244b5 timeline: rename "track-element" to "track_element" in select-tracks-for-object documentation
because "track-element" is not a valid identifier for a parameter and
will cause generated binding using GIR to be invalid. For instance in
Vala.

https://bugzilla.gnome.org/show_bug.cgi?id=765853
2016-04-30 16:35:16 +01:00
Thibault Saunier
05f62cb84c video-source: Do not ever plugin avdeinterlace
It is not feature compatible with deinterlace and is not safe to use
2016-04-29 10:33:47 -03:00
Sebastian Dröge
59d7a06b52 ges: #include glib.h for G_BEGIN_DECLS 2016-04-28 13:39:41 +03:00
Sebastian Dröge
503ebdd1f1 ges-multi-file-source: Fix case of standard gobject macros 2016-04-28 13:39:27 +03:00
Sebastian Dröge
d57f796a14 ges: Add G_BEGIN_DECLS around all relevant declarations in headers 2016-04-25 15:11:25 +03:00
Thibault Saunier
7d34e33ac4 title: Do not concider inpoints
It does not make sense for titles
Handle element with no inpoint handling in the timeline

Fixes https://phabricator.freedesktop.org/T7319
2016-04-22 16:15:33 -03:00
Sebastian Dröge
abfe2c5949 ges: Fix typo by renaming positionner to positioner
It's fortunately private API
2016-04-13 12:31:05 +03:00
Sebastian Dröge
3741d5ce19 framepositionner: Initialize all fields of the meta during initialization
GstMetas are not allocated with all fields initialized to zeroes.
2016-04-13 12:26:13 +03:00
Thibault Saunier
9add236a0e ges: Do not try to set read only properties
When copying and splitting clips

Fixes T7375
2016-04-09 21:12:10 -03:00
Thibault Saunier
af27a11d65 transition: Lower done some debug loggin level 2016-04-09 18:14:00 -03:00
Thibault Saunier
7248077011 titlesource: Add support for absolute positionning 2016-04-05 11:29:50 +02:00
Edward Hervey
f51314085e GES: Properly split the GOptionGroup initialization
Debugging must be configuring first (before any parsing), and then
the types are initialized at the end.

Fixes issues with debugging categories not being available at the
start
2016-03-30 09:26:18 +02:00
Vineeth TM
e660f47a1d editing-services: use new gst_element_class_add_static_pad_template()
https://bugzilla.gnome.org/show_bug.cgi?id=763195
2016-03-24 14:52:58 +02:00
Thibault Saunier
024117642a Revert "titlesource: use x/yabsolute instead of x/ypos."
This reverts commit c4356db40c.

This commit was not ready and was not support to be pushed
2016-03-11 17:31:15 +01:00
Thibault Saunier
8ce2b97a93 ges: Don't emit timeline::group-removed when ungrouping outside a timeline 2016-03-11 17:29:08 +01:00
Lubosz Sarnecki
c4356db40c titlesource: use x/yabsolute instead of x/ypos. 2016-03-11 13:56:59 +01:00
Thibault Saunier
189eb79b10 ges: Register scaletempo::rate as a rate changing property 2016-02-26 20:42:41 +01:00
Sjors Gielen
84f7f04a64 Handle changing playback rate
Before this patch, NLE and GES did not support NleOperations (respectively
GESEffects) that changed the speed/tempo/rate at which the source plays. For
example, the 'pitch' element can make audio play faster or slower. In GES 1.5.90
and before, an NleOperation containing the pitch element to change the rate (or
tempo) would cause a pipeline state change to PAUSED after that stack; that has
been fixed in 1.5.91 (see #755012 [0]). But even then, in 1.5.91 and later,
NleComposition would send segment events to its NleSources assuming that one
source second is equal to one pipeline second. The resulting early EOS event
(in the case of a source rate higher than 1.0) would cause it to switch stacks
too early, causing confusion in the timeline and spectacularly messed up
output.

This patch fixes that by searching for rate-changing elements in
GESTrackElements such as GESEffects. If such rate-changing elements are found,
their final effect on the playing rate is stored in the corresponding NleObject
as the 'media duration factor', named like this because the 'media duration',
or source duration, of an NleObject can be computed by multiplying the duration
with the media duration factor of that object and its parents (this is called
the 'recursive media duration factor'). For example, a 4-second NleSource with
an NleOperation with a media duration factor of 2.0 will have an 8-second media
duration, which means that for playing 4 seconds in the pipeline, the seek
event sent to it must span 8 seconds of media. (So, the 'duration' of an
NleObject or GES object always refers to its duration in the timeline, not the
media duration.)

To summarize:

* Rate-changing elements are registered in the GESEffectClass (pitch::tempo and
  pitch::rate are registered by default);
* GESTimelineElement is responsible for detecting rate-changing elements and
  computing the media_duration_factor;
* GESTrackElement is responsible for storing the media_duration_factor in
  NleObject;
* NleComposition is responsible for the recursive_media_duration_factor;
* The latter property finally fixes media time computations in NleObject.

NLE and GES tests are included.

[0] https://bugzilla.gnome.org/show_bug.cgi?id=755012

Differential Revision: https://phabricator.freedesktop.org/D276
2016-02-26 19:54:40 +01:00
Fabian Orccon
6a97b50b4b group-added and group-removed signals added
Differential Revision: https://phabricator.freedesktop.org/D619
2016-02-23 20:40:21 +01:00
Thibault Saunier
c4fd9cd2b1 Fix and test priority of TrackElement after splitting
And make sure we properly handle transitions in that case
2016-02-09 12:38:29 +01:00
Thibault Saunier
ef69d5f97d ges: Give better names to nleobjects 2016-02-09 12:38:29 +01:00
Lubosz Sarnecki
0c7191847d titlesource: Add properties for text dimensions. 2016-02-04 15:23:30 +01:00
Lubosz Sarnecki
6381e16c51 trackelement: Make use of read-only children properties.
Read only properties will throw a GLib warning like this
when accessed with "set_child_property":

Warning: g_object_set_property: property 'text-x' of object class 'GstTextOverlay' is not writable
2016-02-04 15:23:30 +01:00
Thibault Saunier
a81f4b2d8f track-element: Rely on nleobject to be created at construct time
Avoiding all the pending_xx dance and making the code simpler.

This is now possible thanks to the various recent refactoring.

Thanks to that the user is able to set_child_property on objects
that are not in GESTrack yet, as expected.

Reviewed-by: Thibault Saunier <thibault.saunier@collabora.com>
Differential Revision: https://phabricator.freedesktop.org/D739
2016-02-04 15:23:28 +01:00
Thibault Saunier
8c672f8366 effect: Determine the effect type as soon as possible
Making it possible to create the nleobject right at the creation
of the element.

Reviewed-by: Thibault Saunier <thibault.saunier@collabora.com>
Differential Revision: https://phabricator.freedesktop.org/D738
2016-02-04 15:23:26 +01:00
Thibault Saunier
3ffdad6db8 title-clip: Return default GESTitleSource value if no child set yet
In get_property we should return the default values if
we have not created any GESTitleSource yet
(instead of segfaulting).

And fix GESTitleSource default values!

Reviewed-by: Thibault Saunier <thibault.saunier@collabora.com>
Differential Revision: https://phabricator.freedesktop.org/D737
2016-02-04 15:23:24 +01:00
Thibault Saunier
7211e6982f ges: track-element: Try to create NleObject as soon as possible
This way we have informations about the content of the
children as soon as possible.

Most code paths where already ready to handle that as we use it for
copying clips.

Fix framepositionner to properly handle that (it would have broke
with copied clips before).

Reviewed-by: Thibault Saunier <thibault.saunier@collabora.com>
Differential Revision: https://phabricator.freedesktop.org/D736
2016-02-04 15:23:21 +01:00
Thibault Saunier
799c11b58c timeline: Avoid possible crash disposing the timeline 2016-01-19 11:22:57 +01:00
Thibault Saunier
106d4e98f5 g-i: fix init section to avoid compiler warnings 2016-01-19 11:22:11 +01:00
Thibault Saunier
a526e5634e container: Update start if adding a child that as a start < current start
Reviewed-by: Thibault Saunier <thibault.saunier@collabora.com>
Differential Revision: https://phabricator.freedesktop.org/D629
2016-01-17 09:23:39 +01:00
Thibault Saunier
0c46363f74 timeline: Fix infinite loop on dispose
Reviewed-by: Thibault Saunier <thibault.saunier@collabora.com>
Differential Revision: https://phabricator.freedesktop.org/D628
2016-01-17 09:23:37 +01:00
Thibault Saunier
2fae9ee50d group: Make deep copying actually copy deep
Allowing pasting groups paste exactly what had been copied

And not the new version of the contained objects

This technically breaks the C API but this is a new API and I believe
and hope nobody is using it right now.

Reviewed-by: Thibault Saunier <thibault.saunier@collabora.com>
Differential Revision: https://phabricator.freedesktop.org/D616
2016-01-17 09:23:35 +01:00
Thibault Saunier
7c825aac8b Do not install ges-smart-video-mixer.h
it should always have been private

Reviewed-by: Thibault Saunier <thibault.saunier@collabora.com>
Differential Revision: https://phabricator.freedesktop.org/D617
2016-01-17 09:23:19 +01:00
Thibault Saunier
b75d9b11c6 Revert "timeline-element: Do not consider not serializable elements when getting top element"
This commit was causing issue where we were reporting the toplevel
element as an element but that element was actually in another
not serialized group. That is very tricky to handle for end users
as they are not guaranteed the toplevel clips were actually not
contained in another element.

This reverts commit ceb82ba302.

Reviewed-by: Thibault Saunier <thibault.saunier@collabora.com>
Differential Revision: https://phabricator.freedesktop.org/D627
2016-01-17 09:23:16 +01:00
Sebastian Dröge
7500fab036 ges-asset: Don't dereference NULL proxy assets when resolving fails
CID 1346531
2015-12-29 18:08:03 +02:00
Sebastian Dröge
4997c455f4 ges: Fix various g-i warnings 2015-12-26 09:43:23 +01:00
Sebastian Dröge
f1c823ef60 ges-track-element: Rename control-binding-reomved signal to control-binding-removed
Strictly speaking an API change but nobody on the Internet seemed to have used
the signal with the typo in the name.
2015-12-26 09:43:19 +01:00
Sebastian Dröge
9deaacbe34 ges-validate: Fix compiler warning caused by usage of wrong enum type
ges-validate.c:237:22: error: implicit conversion from enumeration type
      'GESEdge' to different enumeration type 'GESEditMode'
      [-Werror,-Wenum-conversion]
  GESEditMode edge = GES_EDGE_NONE;
              ~~~~   ^~~~~~~~~~~~~
ges-validate.c:277:41: error: implicit conversion from enumeration type
      'GESEditMode' to different enumeration type 'GESEdge'
      [-Werror,-Wenum-conversion]
              new_layer_priority, mode, edge, position))) {
                                        ^~~~

https://bugzilla.gnome.org/show_bug.cgi?id=759758
2015-12-22 09:58:30 +01:00
Thibault Saunier
ceb82ba302 timeline-element: Do not consider not serializable elements when getting top element
Those are temporary elements that should not be considered when dealing
with the hierarchy of objects.

Fixes T3455
2015-12-21 18:12:40 +01:00
Thibault Saunier
6b03654f7a uri-clip: Copy sources child properties when resetting asset 2015-12-21 18:12:40 +01:00
Thibault Saunier
d38536ab18 Revert "project: Call asset_added in the first signal emition stage"
This reverts commit 08f927ca68.

That commit was breaking the API and could break other people's code.
2015-12-11 15:21:43 +01:00
Thibault Saunier
f473386b88 asset: Add a way to set asset as "needing reload"
Allowing application to force the asset system to recheck if an
asset has been "fixed" and can be used again

API:
    + ges_asset_needs_reload

Differential Revision: https://phabricator.freedesktop.org/D584
2015-12-10 14:48:08 +01:00
Thibault Saunier
08f927ca68 project: Call asset_added in the first signal emition stage
Differential Revision: https://phabricator.freedesktop.org/D520
2015-12-10 14:48:05 +01:00
Thibault Saunier
fa512ecdba Implement asset proxying support
API:
  ges_asset_set_proxy
  ges_asset_get_proxy
  ges_asset_list_proxies
  ges_asset_get_proxy_target

Differential Revision: https://phabricator.freedesktop.org/D504
2015-12-10 14:48:02 +01:00
Thibault Saunier
5e069976f6 asset: Add a method to retrieve the GError of an asset loaded with error
API:
    ges_asset_get_error
2015-11-08 22:56:41 +01:00
Thibault Saunier
5d82971eef project: Add a 'asset-loading' signal 2015-11-08 22:56:41 +01:00
Thibault Saunier
320b611ff7 ges: Set restriction caps in the audio source caps filter
Otherwise we could have not negotiated errors in audiomixer when
the channel/channel-mask do not match

Differential Revision: https://phabricator.freedesktop.org/D493
Reviewed-by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>
2015-11-05 23:49:05 +01:00
Thibault Saunier
fcf8d5382e formatter: Do not serialize top effect priorities
We just need to make sure they are always serialized in the right
order (which is the case) and de serializing them will lead to the
right behaviour.

We should not serialize the priority as the priority of the source
itself depends on the action having been done on the parent clip,
and we do not serialize the source priorities (and should not, GES
should just do the right thing).

Differential Revision: https://phabricator.freedesktop.org/D491
2015-11-04 21:13:07 +01:00
Thibault Saunier
5f81e64b59 uri-clip: Make sure to instantiate an asset to back GESUriClip-s 2015-10-30 11:07:58 +01:00
Justin Kim
b9112cac48 track: mixing_operation is handled by its parent
Summary:
Normally, mixing_operation is created and added to nlecomposition
as a child element so it will be freed when nlecomposition is removed
from a track.

Reviewers: thiblahute

Projects: #gstreamer_editing_services

Differential Revision: https://phabricator.freedesktop.org/D319
2015-10-02 16:39:31 +02:00
Justin Kim
8bce0baf62 asset: simplify if-statement in cache_set_loaded
Summary:
Manual iteration can be replaced with foreach function.
In addition, this patch fixes mismatched GFunc type for
g_list_foreach and adds debug cateory for gst-asset for
convenient debugging.

Reviewers: thiblahute

Reviewed By: thiblahute

Differential Revision: https://phabricator.freedesktop.org/D312
2015-10-02 16:19:14 +02:00
Justin Kim
46f9cbdf4f uri-asset: do not reuse a passed GError pointer
Summary: A passed GError is re-allocated when discoverer has no information.

Reviewers: thiblahute

Projects: #gstreamer_editing_services

Reviewed By: thiblahute

Differential Revision: https://phabricator.freedesktop.org/D302
2015-10-02 16:08:03 +02:00
Justin Kim
0defd9a893 xml-formatter: handle dispose properly
Summary:
To dispose properly, a child object should call same function
of parent class.

Reviewers: thiblahute

Differential Revision: https://phabricator.freedesktop.org/D311
2015-10-01 16:26:05 +02:00
Justin Kim
2b4e89c75e base-xml-formatter: properly handle GFile from wrong uri
Summary:
g_file_new_for_uri never fails so GFile always has valid pointer.
And fix a bug of double unref from D303.

Reviewers: thiblahute

Differential Revision: https://phabricator.freedesktop.org/D310
2015-10-01 16:06:33 +02:00
Justin Kim
61da5ad63c don't leaks caps and converted strings
Summary:
Valgrind reports trivial leakages related to handling
objects and their converted strings.

Reviewers: thiblahute

Differential Revision: https://phabricator.freedesktop.org/D303
2015-10-01 11:28:38 +02:00
Mathieu Duponchelle
c96d8c8c21 track: add gaps when going from READY to PAUSED.
Summary:
The backend commits itself automatically in these cases, so track
needs to do so too.

Reviewers: thiblahute

Reviewed By: thiblahute

Differential Revision: https://phabricator.freedesktop.org/D94
2015-09-30 14:50:46 +02:00
Justin Kim
807437f9fe project: fix a pointer for error message
https://bugzilla.gnome.org/show_bug.cgi?id=755862
2015-09-30 12:00:16 +02:00
Justin Kim
ecb2a7c820 project: don't leak GFileInfo
https://bugzilla.gnome.org/show_bug.cgi?id=755862
2015-09-30 12:00:16 +02:00
Justin Kim
731bda1592 timeline-element,track,framepositionner: don't leak internal object
https://bugzilla.gnome.org/show_bug.cgi?id=755247
2015-09-30 11:50:28 +02:00
Justin Kim
abf60df4af structured-interface: introduce TRY_GET_STRING
TRY_GET uses gst_structure_get. However, if boxed or
string pointer is retrieved by gst_structure_get,
it should be freed properly.

https://bugzilla.gnome.org/show_bug.cgi?id=755480
2015-09-28 16:11:03 +02:00
Justin Kim
aff2de6d5a uri-asset: don't leak uri string
https://bugzilla.gnome.org/show_bug.cgi?id=755505
2015-09-28 16:03:41 +02:00
Thibault Saunier
28b74c1452 Revert "title-source: Force format with alpha channels out of videotestsrc"
This reverts commit 7d1e101072.

This commit was never meant to be committed (at least *not* on master).
2015-09-28 15:59:58 +02:00
Justin Kim
c8b3e13a9c structure-parser: define GES_STRUCTURE_PARSER macro
And fix trivial leakages of internal list structure.

https://bugzilla.gnome.org/show_bug.cgi?id=755716
2015-09-28 15:57:25 +02:00
Thibault Saunier
7d1e101072 title-source: Force format with alpha channels out of videotestsrc
Making sure the user can set a background of the title with an alpha
channel.

Working around https://bugzilla.gnome.org/show_bug.cgi?id=755482 for
the 1.6 branch.
2015-09-28 12:07:07 +02:00
Thibault Saunier
822e0a7b09 ges: Avoid emitting 'child-added/removed' when signal emission stops addition
In the GESTimeline, TrackElement addition to a clip might get cancelled
(and thus the element gets removed), we need to make sure users do not
get wrong signals.

Also document the fact that user should connect to container::child-added
with g_signal_connect_after.
2015-09-24 13:27:16 +02:00
Justin Kim
0b900bddc9 pipeline: don't leak GstPad
https://bugzilla.gnome.org/show_bug.cgi?id=755505
2015-09-24 09:42:08 +02:00
Justin Kim
00ae999547 pitivi-formatter: don't leak internal hash table
https://bugzilla.gnome.org/show_bug.cgi?id=755505
2015-09-24 09:42:08 +02:00
Thibault Saunier
1131a22a74 video-transition: Make compositor background transparent
Allowing further mixing downstream
2015-09-23 21:23:13 +02:00
Thibault Saunier
d1c01678bc video-transition: Add a framepositioner at the end of the transitio
So downstream compositor knows the zorder of the various streams
2015-09-23 21:13:13 +02:00
Thibault Saunier
5a0393c54a ges: Namespace NLE utils function into GES
Avoiding name clashes when built statically
2015-09-18 10:01:44 +02:00
Justin Kim
fe2165cad3 timeline: don't leak pad in private structure
https://bugzilla.gnome.org/show_bug.cgi?id=754867
2015-09-11 13:09:40 +02:00
Thibault Saunier
f046bb5a03 video-source: Use the priority being set to compute zorder 2015-09-04 12:01:16 +02:00
Thibault Saunier
f0b3cd27f9 video:transition: Set mixer pad zorder 2015-09-02 23:27:16 +02:00
Thibault Saunier
8c0a6402f6 video-source: Make sure to set framepositionner zorder when creating it
And fix a computation bug where we would be having mixing order
reversed between layers.

And make sure that the positionner does not mix up Transition handling
of the zorder
2015-09-02 20:42:50 +02:00
Thibault Saunier
ab25464876 video-source: Simply set framepositionner->zorder = self->priority
Summary:
Making the code simpler and handling the transition case
where elements are in the same layer (which was failing
/setting same zorders until now).

Reviewers: Mathieu_Du

Differential Revision: https://phabricator.freedesktop.org/D237
2015-08-27 21:58:39 +02:00
Thibault Saunier
edc5c27ffb Move NLE to a dedicated GstPlugin
Summary: Allowing external user to directly use it

Reviewers: Mathieu_Du

Differential Revision: https://phabricator.freedesktop.org/D231
2015-08-20 13:49:20 +02:00
Thibault Saunier
fdd1456062 nle: Enhance debug logging 2015-07-23 12:28:14 +02:00
Thibault Saunier
3c127d9622 ges: Do not leak and uselessly create errors
And avoid parenthesis in GstObject names
2015-07-23 12:28:14 +02:00
Thibault Saunier
254c2b1f5e ges: Fix how we handle layer vs layer-priority in the structured interface 2015-07-23 12:28:14 +02:00
Thibault Saunier
d5663a46dc timeline: Remove transitions that can no fit into an auto transition
When activating auto transition mode
2015-07-16 11:23:20 +02:00
Thibault Saunier
6fc6ce29f9 ges; Minor debug enhancement 2015-07-16 10:53:17 +02:00
Thibault Saunier
724418b75d assets: Avoid deadlock when done initialising asset
Avoid to hold the CACHE lock when setting the GTasks return values.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=752300
2015-07-13 13:54:35 +02:00
Thibault Saunier
50f26f1269 nleobject: Concider objects as 'inactive' when they have a duration == 0 2015-07-08 19:10:31 +02:00
Thibault Saunier
0fad60e754 track-element: Handle the case where we have only one keyframe set when interpollating keyframes 2015-07-08 18:59:00 +02:00
Thibault Saunier
7be28b29b2 asset: Port use of deprecated GSimpleAsyncResult to GTask 2015-07-06 10:32:32 +02:00
Thibault Saunier
58fb9a6720 track-element: Fix splitting bindings and add unit tests 2015-07-03 14:06:54 +02:00
Thibault Saunier
d9c596162e structured-interface: Better handle CLOCK_TIME type from GstStructures 2015-07-03 14:06:54 +02:00
Thibault Saunier
5885f58c14 element: Implement a paste method
Allowing user to copy paste clips very easily
2015-07-03 14:06:54 +02:00
Thibault Saunier
d23e43ae1a timeline: Disable movement that lead to 2 transition at a position
We should never let 3 objects to overlap at a same position, for that
we introduce a "rollback" feature and whenever such an editing happens,
we rollback object position to whatever it was before the move.
2015-07-03 14:06:54 +02:00
Thibault Saunier
42700e98c5 smart-video-mixer: Always keep a ref on the mixer pad 2015-07-03 11:20:54 +02:00
Thibault Saunier
54be29e9ed timeline-element: Add a method to get the TrackType it interacts with
API:
  + ges_timeline_element_get_track_types
2015-07-03 11:20:54 +02:00
Thibault Saunier
87b790a9da timeline: Never create transitions between rippled objects
In case of groups, we can have track elements that do not belong
directly to the moved_trackelements but will be moved as others. Never
create transition to all object that have a start > moving group start.
2015-07-03 11:20:54 +02:00
Thibault Saunier
c17dae8f0e video-transition: Use a SmartMixer as mixer
So that the frame position metas are parsed and taken into account
2015-07-03 11:20:54 +02:00
Thibault Saunier
6a0ac89009 track-element: Add method to remove control binding
API:
  ges_track_element_remove_control_binding
2015-07-03 11:20:54 +02:00
Thibault Saunier
7f4f1b0a07 ges: Handle absolute GstDirectControlBindings 2015-07-03 11:20:54 +02:00
Thibault Saunier
8e13b7d9b8 framepositionner: Make use of the new CompositorPad.width/height
So that the scaling is done in the compositor and this way we can cleanly interpolate its value
2015-07-03 09:41:19 +02:00
Thibault Saunier
a0ee7e1f44 timeline: Never change output media time when trimming start
+ Fix testsuite

https://bugzilla.gnome.org/show_bug.cgi?id=638802
2015-07-03 09:31:07 +02:00
Thibault Saunier
53defaab7a track-element: Return right value when editing
We used to always return TRUE which was wrong

+ Fix testsuite and remove randomness from the tests
2015-07-03 09:30:50 +02:00
Thibault Saunier
938aaaef24 ges: Do not add a final gap at the end of track while rendering
It is not correct to force a black frame at the end of the rendered
video and it also leads to rendering issue with vpX encoders.

https://bugzilla.gnome.org/show_bug.cgi?id=751510
2015-07-02 10:17:25 +02:00
Thibault Saunier
8b821511ad clip: Use container priority offset when setting children prios
Instead of trying to compute it ourself which might lead to wrong
behaviour when moving between layer.

+ Make sure that when we reset clip children priority (to make space
  for effects,) we update the container knowledge of priority offsets
2015-07-01 11:38:53 +02:00
Thibault Saunier
f7dbdd27ba clip: Fix track element priority computation
We were computing the priority offset taking the global MIN_NLE_PRIO
(which is a constant == 2 to make space for the mixing elements) instead
of the layer 'track element' relative priority, leading to very big
offsets on layer with a prio > 0. In the end it leaded to effects having
the same priority as the sources which leads to an undefined behaviour
in NLE.
2015-07-01 10:19:07 +02:00
Thibault Saunier
9669bafe46 uri-asset: Bump the discoverer timeout to 1 minute
We should by default avoid false timeouts
2015-07-01 10:19:07 +02:00
Thibault Saunier
5833aae413 track: Give usefull name to compositions 2015-07-01 10:19:07 +02:00
Thibault Saunier
55f0601211 nle: Port tests to the "commit" action signals
Now that nle_object_commit symbol is hidden, we can't use it
in the tests.
2015-06-25 11:03:12 +02:00
Thibault Saunier
2994650f9e ges: Unbreeak API after renaming of GNL to NLE 2015-06-25 10:54:13 +02:00
Sebastian Dröge
f5a8c24077 ges: Hide more symbols of headers that are not installed 2015-06-25 10:28:41 +02:00
Sebastian Dröge
d46efecf2b nle: Remove unused function
nle/nlecomposition.c:2471:1: error: unused function '_parent_or_priority_changed' [-Werror,-Wunused-function]
_parent_or_priority_changed (NleObject * obj, GNode * oldnode,
^
2015-06-25 10:25:48 +02:00
Sebastian Dröge
fd81083071 nle: Hide away symbols, they're supposed to be internal 2015-06-25 10:24:13 +02:00
Tim-Philipp Müller
700e5b0ae0 nlesource: remove outdated comment 2015-06-23 09:42:08 +01:00
Thibault Saunier
ac49f22530 pipeline: Handle rendering with disabled tracks
Summary:
The user might want to render only some media type of the timeline,
for example he wants to only render the audio part of the timeline.

It was failing as we were not connecting the track but were still trying
to 'render' it.

Depends on D153

Reviewers: Mathieu_Du

Reviewed By: Mathieu_Du

Differential Revision: http://phabricator.freedesktop.org/D154
2015-06-10 18:00:58 +02:00
Thibault Saunier
321d2c2edd ges: Raise an error when the discoverer returns != RESULT_OK
And do not try to run the pipeline when that happens
2015-06-10 08:35:45 +02:00
Thibault Saunier
4f83cde172 uri-asset: Add a way to control discoverer timeout through envvar
Making it possible to run ges-launch test under valgrind for example
2015-06-10 08:35:45 +02:00
Thibault Saunier
0a6105ee3b timeline: Never snap end when rippling
http://phabricator.freedesktop.org/T74
2015-06-05 22:53:04 +02:00
Thibault Saunier
9d30b0014d timeline: Never create transition between elements inside the moving context
http://phabricator.freedesktop.org/T74
2015-06-05 22:52:57 +02:00
Thibault Saunier
73e4e3bb0a group: Disconnect from old layer notify::priority when a clip is moved to a NULL layer
This means we need to properly track the layer a clip was in. We now
keep track of the various signal IDs in a dedicated structure and
keep a ref on the layer an object is in.

http://phabricator.freedesktop.org/T88
2015-06-05 22:52:43 +02:00
Luis de Bethencourt
b86cca00f1 ges: remove dead code
Summary:
No need to recheck if error exists since it has already been checked by the
conditional above.

Coverity CID #1302832

Reviewers: thiblahute

Differential Revision: http://phabricator.freedesktop.org/D200
2015-06-01 13:32:47 +01:00
Thibault Saunier
c70a654dd6 ges: Handle trimming auto transitions
Meaning trimming neighbors.

+ And add a test
2015-06-01 10:24:11 +02:00
Thibault Saunier
d7dfcff745 timeline: Use a simple GList to track auto transitions 2015-05-29 15:27:03 +02:00
Thibault Saunier
4f70e5eb88 nlecomposition: Do not fail when removing/adding child without commiting
Summary:
We use to end up removing the nleobject when the following case happened:

 * add an object
 * remove that object
 * re add the object
 * commit the composition

Reviewers: Mathieu_Du

Differential Revision: http://phabricator.freedesktop.org/D193
2015-05-20 09:53:19 +02:00
Thibault Saunier
3ba6dec976 timeline: Minor documentation addition 2015-05-19 18:19:10 +02:00
Thibault Saunier
241e809a81 ges: Enhance xges format versioning
Summary:
Handle the fact that some new features can be added and that means
generated files will not be fully understandable by older versions of
the formatter.

Make sure that we set the format version to 0.2 when we serialize the
GstEncodingProfile.enabled property.

Add some tests around that.

+ Fix a minor bug in the test-utils
+ Add a meta on the projects to tell in what format version a project
  has been serialized/parsed back

API:
  GES_META_FORMAT_VERSION

Depends on D178

Reviewers: Mathieu_Du

Differential Revision: http://phabricator.freedesktop.org/D184
2015-05-18 21:27:48 +02:00
Thibault Saunier
ff274dee2e ges: If last added clip is not in a layer, get the first layer
Summary:
In case we just removed it from its layer, make sure to
just use the first layer when none specified.

Depends on D177

Reviewers: Mathieu_Du

Differential Revision: http://phabricator.freedesktop.org/D178
2015-05-14 15:31:52 +02:00
Thibault Saunier
9843ffeed2 ges: Fix some error settings
Summary: Depends on D176

Reviewers: Mathieu_Du

Differential Revision: http://phabricator.freedesktop.org/D177
2015-05-14 15:31:52 +02:00
Thibault Saunier
2ddab4db57 ges:structured-interface: Use GET_AND_CHECK in more places
Summary:
Giving more details about the issue to the user

Depends on D151

Reviewers: Mathieu_Du

Differential Revision: http://phabricator.freedesktop.org/D176
2015-05-14 15:31:51 +02:00
Thibault Saunier
8558a03272 xml-formatter: De/serialize whether encoding profiles are enabled or not
Reviewers: Mathieu_Du

Differential Revision: http://phabricator.freedesktop.org/D151
2015-05-14 11:15:00 +02:00
Tim-Philipp Müller
bb40668ff9 Remove obsolete Android build cruft
This is not needed any longer.
2015-04-26 18:23:14 +01:00
Thibault Saunier
27c016a300 ges:xml-formatter: Call g_markup_parse_context_end_parse
Summary:
Otherwise the parser context will never know that is all the XML it
will receive and fail out if the XML document is not valid (in that
case if it does not end)

https://bugzilla.gnome.org/show_bug.cgi?id=746354

Reviewers: Mathieu_Du

Reviewed By: Mathieu_Du

Differential Revision: http://phabricator.freedesktop.org/D38
2015-04-21 11:25:21 +02:00
Thibault Saunier
8dfac3c94f ges: Add debug output when get_element returns NULL 2015-04-20 17:42:44 +02:00
Mathieu Duponchelle
506662e2dc nleobject: It is wrong to update object->stop in set_property.
Summary: It must only be done when the object is commited.
We can do that in constructed though, as the changes will
anyway be commited when the object is added to a composition.

Also update the tests, as we set properties spearately then
check the stop, we can commit the source at its creation without
removing meaning from the tests.

Reviewers: thiblahute

Differential Revision: http://phabricator.freedesktop.org/D84
2015-04-09 15:40:32 +02:00
Mathieu Duponchelle
2e26a9e926 timeline, track: Emit commited at the correct moment.
Summary:
+ [API] GESTrack::commited signal.
+ [API] ges_track_commit_sync

We were emitting commited when timeline_commit was called, which
wasn't very helpful. This commit makes it so we emit commited once
all the compositions have actually been commited.

We also add a synchronous commit method to spare the user
the need to connect to the signal and wait, and update the
documentation.

Reviewers: thiblahute

Differential Revision: http://phabricator.freedesktop.org/D83
2015-04-09 14:44:11 +02:00
Mathieu Duponchelle
54190d9dd8 layer: call timeline_element_set_timeline in layer_set_timeline.
Summary:
Otherwise if there was still a reference to the layer when it
is removed from the timeline, it fails when the last reference
is released, because timeline_element_set_timeline calls
timeline_remove_element, which tries to remove the element from
an already disposed hashtable.

Reviewers: thiblahute

Differential Revision: http://phabricator.freedesktop.org/D82
2015-04-08 23:35:01 +02:00
Mathieu Duponchelle
c271f89d4a ges-launch: Add support for +test-clip
Summary: With the pattern as a mandatory argument.

Reviewers: thiblahute

Differential Revision: http://phabricator.freedesktop.org/D68
2015-04-07 14:15:36 +02:00
Mathieu Duponchelle
47f1713f1e ges-project: Surface a meaningful error when no suitable formatter.
Reviewers: thiblahute

Differential Revision: http://phabricator.freedesktop.org/D67
2015-04-07 14:15:36 +02:00
Mathieu Duponchelle
e89dccc9aa timeline-element: Disconnect child properties handlers.
Summary:
+ And freeze notifies while doing so.

We had a race with GstController which isn't MT safe, we can
fix it by propertly disconnecting signals, and making sure
no notifies are emitted while doing so.

Reviewers: thiblahute

Differential Revision: http://phabricator.freedesktop.org/D64
2015-03-31 15:32:08 +02:00
Mathieu Duponchelle
1ea442a021 track: Set any caps features on tmpcaps.
Summary: Before checking if we have a specific constructor for a track type.

Reviewers: thiblahute

Differential Revision: http://phabricator.freedesktop.org/D63
2015-03-31 15:32:08 +02:00
Mathieu Duponchelle
0d3a3eb9d2 pipeline: no reason to disconnect a pad that is NULL anyway.
Reviewers: thiblahute

Differential Revision: http://phabricator.freedesktop.org/D62
2015-03-31 15:31:49 +02:00
Mathieu Duponchelle
d4deeae5c1 build: no reason to introspect nodist sources.
Summary: g-ir-scanner was erroring like crazy on the generated sources.

Reviewers: thiblahute

Differential Revision: http://phabricator.freedesktop.org/D57
2015-03-25 12:27:02 +01:00
Mathieu Duponchelle
54c5723b75 ges-pitivi-formatter: Don't flood stdout with alarming conclusions.
Reviewers: thiblahute

Differential Revision: http://phabricator.freedesktop.org/D56
2015-03-25 12:23:24 +01:00
Mathieu Duponchelle
710d34adf4 build: fix make distcheck. 2015-03-23 12:41:00 +01:00
Thibault Saunier
d114cc60bd ges: Do not clear potentially NULL errors
And avoid dereferencing NULL errors
2015-03-23 12:41:00 +01:00
Thibault Saunier
663824d20f ges-launch: Prefix clip, transition and effect instruction with a +
Slightly changing the CLI so that we have indicators of the timeline
commands adding new objects.
2015-03-23 12:41:00 +01:00
Thibault Saunier
20d94bea13 ges: Accept path as URI in the create clip structured interface 2015-03-23 12:41:00 +01:00
Mathieu Duponchelle
d77ad923a6 parse.l: Modify command arguments.
+ --clip uri=file:// becomes clip file:// for example.
2015-03-20 13:53:42 +01:00
Thibault Saunier
e37d8e768f ges: command-line-formatter: Properly error out on invalid arguments 2015-03-20 13:53:42 +01:00
Thibault Saunier
28a1e97aa2 ges: Factor out a GESCommandLineFormatter class
This formatter will allow any user to deserialize a timeline using
the new ges-launch command line interface
2015-03-20 13:53:42 +01:00
Mathieu Duponchelle
ed0839dd82 structured-interface: Be clever when no layer priority specified.
And add the new element to the same layer as the last clip that
was added, insted of adding to the last layer of the timeline
(and with the current code, actually adding a new layer each time)
2015-03-20 13:53:41 +01:00
Mathieu Duponchelle
7cfdc2265d ges-structured-interface: fix build 2015-03-20 13:53:41 +01:00
Thibault Saunier
dbb2368a39 ges: Automatically put clips at the end of layer if no start specified
In the 'structured' interface we should add it at the end of the layer

And make use of the new ges_timeline_get_layer API
2015-03-20 13:53:41 +01:00
Mathieu Duponchelle
761067b685 structure-interface: rename layer-priority to layer.
+ And add a short name for it in ges-launch.
2015-03-20 13:53:41 +01:00
Thibault Saunier
396196dfdf ges: Add layer up to the wanted layer priority in the structure interface
Making the thing easier to use
2015-03-20 13:53:41 +01:00
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
Thibault Saunier
efb638efe8 pipeline: Let some queuing in encodebin
It is sometimes necessary
2013-09-22 23:06:22 +02:00
Thibault Saunier
7b96c50b4e examples: Make project loading more generic
Pitivi formatter is deprecated, do not use it by default
2013-09-22 23:06:22 +02:00
Thibault Saunier
c0eae0c790 Revert "ges: Disable the Pitivi formatter"
This reverts commit e54ceff720.

Let's just keep it... it does not cost anything.
2013-09-22 23:06:22 +02:00
Thibault Saunier
ec28489b84 formatter: Keep timeline duration as a meta 2013-09-13 20:37:58 -03:00
Thibault Saunier
f661c3ea55 ges-launch: Make it possible to provid pathes to look for moved asset
For example if a project was sent from someone else thus the pates in
there are meaningless on the other computer, we need to be able
to specify a list of pathes where the files are.

+ Fix documentation
2013-09-12 19:07:58 -03:00
Kishore Arepalli
6c993d36ba ges-pipeline: Don't unref buffer obtained from a GstSample
https://bugzilla.gnome.org/show_bug.cgi?id=707914
2013-09-12 09:06:27 +02:00
Thibault Saunier
0daf523dfd pipeline: Create it through a factory
Making it possible to use it with GstValidate LD_PRELOAD feature
2013-09-09 12:51:06 -03:00
Thibault Saunier
0d0fc767ee pipeline: Finnish renaming from GESTimelinePipeline 2013-09-09 12:47:02 -03:00
Thibault Saunier
9c77d52f30 timeline: Make sure we do not move object when only trimming
We were missing a few checks so that we do not move objects when their
duration is equal to the max duration, or 0
2013-09-08 19:19:24 -03:00
Thibault Saunier
c47c115dd1 timeline: Avoid setting duration > max_duration when rippling
We should use the trimming method to set duration to make sure to avoid
going over the max duration.

Also avoid computing when setting duration to the same old value.
2013-09-07 12:59:17 -04:00
Thibault Saunier
c4c26f8748 ges: Handle trimming in groups
This was broken, clips where moving all around, make it behave properly.
2013-09-07 12:55:58 -04:00
Thibault Saunier
c74aee5fdc timeline: Make ripple start be trimming
This is a more natural behaviour as a user instead of doing nothing at
all.
2013-09-07 02:10:12 -04:00
Thibault Saunier
2f03a5df25 ges: Make GESAudioSource and GESVideoSource abstract 2013-09-03 20:57:31 -04:00
Mathieu Duponchelle
17122c44fb gstframepositionner: correctly tag metadata.
We do not use GST_VIDEO_META_TAG_STR as it would mean depending on
GstVideo which is not the case right now
2013-09-03 20:57:31 -04:00
Thibault Saunier
9ed5803323 videosource: Make sure to update z-order when layer priority changes
Conflicts:
	ges/ges-video-source.c
2013-09-03 20:57:31 -04:00
Thibault Saunier
9fa99df5a7 timeline-element: Add a set_parent vmethod
API:
        GESTimelineElment->set_parent vmethod
2013-09-03 20:57:31 -04:00
Simon Corsin
93de0baf96 videotransition: No need to hard set width and height anymore. 2013-09-03 20:57:31 -04:00
Simon Corsin
a93f7baed3 gstframepositionner: Install width and height properties.
+ And manage them properly.
2013-09-03 20:57:31 -04:00
Simon Corsin
7269c2b316 ges-track: Add the notion of resriction caps to GESTrack
This way we can let the user determine what he want to come out of the
track.

API:
  - ges_track_set_caps (The track caps are now construct only)
  + ges_track_set_restriction_caps
  + ges_track_get_restriction_caps
  + GESTrack.props.restriction_caps
2013-09-03 20:57:30 -04:00
Simon Corsin
a635e48d77 GES: Add GESVideoSource and GESAudioSource base classes
+ Update documentation.
  + Implements subclasses audio-uri-source and video-uri-source
2013-09-03 20:22:32 -04:00
Simon Corsin
7fcc6e4b08 testsource: Handle child properties as child properties
Makes $make check pass.
Standardizes property handling.
2013-09-03 20:12:33 -04:00
Simon Corsin
e50a86d0d9 source: Make a ges_source_create_topbin internal helper method 2013-09-03 20:10:37 -04:00
Simon Corsin
c0b6c968d8 ges-source: Move common elements handling to the base class
+ And port all the subclasses
2013-09-03 19:44:31 -04:00
Thibault Saunier
28770ce53b container: Do not forget to initialize the timeline before using it 2013-09-02 13:57:15 -04:00
Tim-Philipp Müller
73075e4637 ges-xml-formatter: use g_ascii_dtostr() instead of messing with setlocale()
Libraries shouldn't use setlocale().
2013-09-02 00:19:30 +01:00
Mathieu Duponchelle
6d70b553ad xml-formatter: set LC_NUMERIC locale before saving values.
Avoiding to save ',' instead of '.' for floats in certain locals
2013-08-31 21:29:59 -04:00
Mathieu Duponchelle
832616fb2c video-transition: Keep switch transition type simple
Also make sure there is a proper default value for transition type.
2013-08-31 13:53:16 -04:00
Thibault Saunier
f7ac18c138 timeline: No autotrans between elements in same toplevel container
This makes no sense, we ended up creating/removing tons of transition
while moving groups
2013-08-30 18:47:24 -04:00
Thibault Saunier
e54ceff720 ges: Disable the Pitivi formatter
It lacks to many feature and the code is too bad, desactivation until
someone comes and fix it... The code should be removed if it never
happens
2013-08-29 18:43:21 -04:00
Mathieu Duponchelle
c527067953 ges-clip: when a child, is removed, disconnect from its notifies. 2013-08-28 14:03:14 -04:00
Thibault Saunier
54b10dcbbf trackelement: Simplify the way we handle children properties
So subclass do not have to implement a new logic all the time, but
instead can use a simple method to add properties as needed.
2013-08-27 15:33:45 -04:00
Thibault Saunier
ef8c4b4b6b clip: Remove the ges_clip_fill_track method
Its was only use by the old custom source which is dead now.

API:
    Remove ges_clip_fill_track

https://bugzilla.gnome.org/show_bug.cgi?id=706855
2013-08-27 15:33:45 -04:00
Thibault Saunier
13aeda606a ges: Remove custom clip
If you want a custom clip then you have to subclass GESClip,
This class was pre historicall and only used for testing purposes, we
have GESTestClip for that.

https://bugzilla.gnome.org/show_bug.cgi?id=706855
2013-08-27 15:33:45 -04:00
Mathieu Duponchelle
cd8955c56f trackelement: split bindings correctly. 2013-08-22 18:36:40 -04:00
Mathieu Duponchelle
01f9dbcadc trackelement: update control bindings correctly.
When duration or inpoint change, we need to remove edge control points,
and set new control points with interpolated values.
Also when duration == 0, we need to remove all control points, as otherwise
the controller will raise !is_end assertions.
It's the duty of the application to set keyframes back when duration gets
!= 0 again.
2013-08-21 08:06:59 -04:00
Mathieu Duponchelle
e9e7f0a82c container: resort children after prepending an element. 2013-08-21 08:06:59 -04:00
Mathieu Duponchelle
09405c0080 timeline: when there are no objects anymore, set duration to 0. 2013-08-21 08:06:59 -04:00
Mathieu Duponchelle
dec80f3e4d ges-audio-track: Change contructor prototype.
We return an AudioTrack.
2013-08-21 08:06:59 -04:00
Mathieu Duponchelle
2e1e88fb22 pipeline: add a get_mode method. 2013-08-21 08:06:59 -04:00
Mathieu Duponchelle
2226882a5c basexmlformatter: Only set timeline auto transitions when done loading. 2013-08-21 08:05:24 -04:00
Thibault Saunier
fbe18c9ed1 formatter: Plug leaks in the can_save_to_uri method
https://bugzilla.gnome.org/show_bug.cgi?id=679941
2013-08-20 08:24:33 -04:00
Thibault Saunier
0c87104955 pipeline: Remove the dynamic lock
We actually do not need it has everywhere where we would need it we are
already locked against the timeline.dyn_lock, we need to make sure it is
always the case in the future.

The hierarchy of the mutex was wrong and could possibly lead to
deadlocks
2013-08-19 15:18:06 -04:00
Thibault Saunier
41d86292c9 formatter: Remove the unsed can_save_uri vmethod
This virtual method does not make much sense right now, we might need it
again later, but most probably with a sensibly different API so removing
it for now.
2013-08-19 15:18:06 -04:00
Paul Lange
9d30f05798 ges-formatter: Check if directory of URI is writeable
https://bugzilla.gnome.org/show_bug.cgi?id=679941
2013-08-19 15:18:06 -04:00
Thibault Saunier
0671b69d34 timeline: Add support for group-id in the stream-start event 2013-08-02 14:47:24 +02:00
Thibault Saunier
a939c553cf project: Make sure error-loading-asset is emited when needed
In case ges_project_try_updating_id would be called from outside ges-project the signal
was not emitted, change that.

+ Add some debugging
2013-07-27 19:29:07 +02:00
Thibault Saunier
5c8e2737b4 timeline: Add methods to get and set the snapping distance 2013-07-24 22:37:06 -04:00
Thibault Saunier
c1451cf48c clip: Fix the spliting method
We should make sure that the newly created trackelement are inside
a container when adding them to as this is needed for GESUriClip-s.

Also do not try to set a child property on the TrackElement itself.

https://bugzilla.gnome.org/show_bug.cgi?id=703152
2013-07-24 21:30:23 -04:00
Thibault Saunier
3e88edfebc 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
2013-07-21 21:42:42 -04:00
Lubosz Sarnecki
9f0b0c26e3 Rename GESTimelinePipeline to GESPipeline
rename ges_timeline_pipeline methods to ges_pipeline
2013-07-21 21:42:42 -04:00
Thibault Saunier
e981c171b1 tests: integration: Give some more information to user on errors 2013-07-21 21:27:16 -04:00
Mathieu Duponchelle
9e14ca1487 ges-uri-clip: Add the possibility to specify an assets directory
through the GES_TESTING_ASSETS_DIRECTORY environment variable.
2013-07-13 17:22:24 +02:00
Mathieu Duponchelle
78e19edad9 track-element: No need to log when prio == MIN_GNL_PRIO. 2013-07-12 18:17:00 -04:00
Mathieu Duponchelle
e0b89ce691 framepositionner: fix messup with propname enum. 2013-07-12 18:17:00 -04:00
Mathieu Duponchelle
cc09d03253 track: Make it possible to disable the mixing feature
API:
  ges_track_set_mixing
  ges_track_get_mixing
2013-07-12 18:17:00 -04:00
Mathieu Duponchelle
4addde8d74 timeline: create_transitions_on_layer *before* actually commiting
Everything need to be in place before commiting, otherwize it makes no
sense at all.
2013-07-12 18:17:00 -04:00
Thibault Saunier
cc9391319e group: Add an empty group constructor
As it is more intuitive for users.

API:
  ges_group_new
2013-07-12 11:56:59 -04:00
Mathieu Duponchelle
2723ef561e container/group/clip: Allow creating an empty group.
This is a legitimate use case.
2013-07-11 23:47:36 +02:00
Mathieu Duponchelle
96204ac1d2 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);
2013-07-10 23:25:12 -04:00
Mathieu Duponchelle
ff21ea7f92 group: set priv->setting_value to TRUE when moving ourselves in _child_removed 2013-07-10 23:18:41 -04:00
Thibault Saunier
1e5bb2edf6 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
2013-07-10 23:17:54 -04:00
Thibault Saunier
b0202ed22b timeline: Append missing layers when moving groups between layers
This was a missing feature of the newly added groups
2013-07-09 21:30:59 -04:00
Thibault Saunier
a933d9540d 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.
2013-07-09 16:47:00 -04:00
Thibault Saunier
d3e3871440 xml-formatter: Indent formatted files 2013-07-09 22:14:43 +02:00
Thibault Saunier
bce084f4fd timeline-element: Add a method to get the topelevel parent of an element
API:
	ges_timeline_element_get_toplevel_parent
2013-07-09 22:13:42 +02:00
Thibault Saunier
2b9606437c 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
2013-07-09 22:13:42 +02:00
Thibault Saunier
89e2a69d37 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.
2013-07-09 22:13:42 +02:00
Thibault Saunier
12eebdabda clip: Add an internal method to easily get the priority of the layer the clip is in 2013-07-09 22:13:42 +02:00
Thibault Saunier
30eb9e4474 container: Remove the get_priority_range vmethod
We now let full control to subclasses so we do not need it anymore.
2013-07-09 22:13:42 +02:00
Thibault Saunier
9e15e13983 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.
2013-07-09 22:13:42 +02:00
Thibault Saunier
ed9dcddef4 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.
2013-07-09 22:13:41 +02:00
Thibault Saunier
534bf481ed clip: Handle child priority offsets when setting priority 2013-07-09 22:13:41 +02:00
Thibault Saunier
9d13c5cbd3 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.
2013-07-09 22:13:41 +02:00
Thibault Saunier
bcfeada696 container: "Implement" the set_priority vmethod
This way we will just accept any value setted
2013-07-09 22:13:41 +02:00
Thibault Saunier
7412de6f6c ges: Avoid leaking the timeline when grouping containers 2013-07-09 22:13:41 +02:00
Thibault Saunier
8bc88a2ba8 container: Let subclasses decide when height change should be computed
API:
   - GESContainer.compute_height vmethod
   + _ges_container_set_height
2013-07-09 22:13:41 +02:00
Thibault Saunier
b5858c5b04 base-xml-formatter: s/ducation/duration/ 2013-07-09 22:13:41 +02:00
Thibault Saunier
91ebdc7efb container: ges_container_ungroup return a transfer full list 2013-07-09 22:13:41 +02:00
Thibault Saunier
663f9884ef 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
2013-07-09 22:13:41 +02:00
Thibault Saunier
87cfcca5e7 container: Update offsets in GESTimelineElement vmethod implementations
So subclasses just have to link up to resync offsets
2013-07-09 22:13:41 +02:00
Thibault Saunier
cd111fa10a docs: Misc documentation fixes 2013-07-09 22:13:41 +02:00
Thibault Saunier
fe043e0231 clip: Never try to set the start after the end of an element when trimming 2013-07-09 22:13:40 +02:00
Thibault Saunier
71f877c611 internal: Add a macro to make it easier to get the end of a TimelineElement 2013-07-09 22:13:40 +02:00
Thibault Saunier
dd7085d2ed track: Update gaps only when commiting
We were still updating them at useless moments, do it only when absolutely needed.
2013-07-09 22:13:40 +02:00
Thibault Saunier
4020ca54ff container: Fix the way we check priority of subclasses when grouping objects
The resulting list was from lower to higher, we need the contrary
2013-07-09 22:13:40 +02:00
Thibault Saunier
ab98f370c8 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
2013-07-09 22:13:40 +02:00
Thibault Saunier
f5aee5df57 container: Make initiated_move a read only protected member
It is a interesting information for subclasses.
Conflicts:
	ges/ges-container.c
2013-07-09 22:13:40 +02:00
Thibault Saunier
5a29cd0c88 internal: Fix typo in the header
ges_base_xml_formatter_add_control_bindingi was meant to be
ges_base_xml_formatter_add_control_binding
2013-07-09 10:57:51 -04:00
Mathieu Duponchelle
2cb71e730a track-element: Remove duration_changed virtual method.
We use notifies for the properties.
	+ Use notifies in audio-transition and video-transition
2013-07-08 19:32:15 -04:00
Mathieu Duponchelle
f1a3d65ef6 formatters: Save and load bindings applied to sources. 2013-07-08 19:32:09 -04:00
Tim-Philipp Müller
3b8bfc1f16 timelinepipeline: fix caps leak 2013-06-28 00:24:33 +01:00
Руслан Ижбулатов
e4b1153846 timelinepipeline: make the caps from encoding profile writable
https://bugzilla.gnome.org/show_bug.cgi?id=703121
2013-06-28 00:20:14 +01:00
Thibault Saunier
d49efabb93 urisource: Do not let user reset the URI property
This is not supported right now and would lead to unexpected behaviours
2013-06-23 18:43:00 -04:00
Mathieu Duponchelle
9e0632e353 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
2013-06-23 18:42:59 -04:00
Mathieu Duponchelle
2b4609bfe7 video-track: "implement" get_mixing_element. 2013-06-23 18:37:41 -04:00
Mathieu Duponchelle
859f4c3c05 ges-smart-mixer: first code dump, mainly copy paste from ges-smart-adder. 2013-06-23 18:37:41 -04:00
Simon Corsin
bc4186d9c8 ges-layer.c: notify priority changes. 2013-06-23 18:37:41 -04:00
Mathieu Duponchelle
fc182b8026 ges-uri-source: Refactoring work.
+ Categorize functions (Callbacks, vmethods)
	+ make more generic functions for the creation of the bin.
2013-06-23 18:37:40 -04:00
Mathieu Duponchelle
6be4f79ca0 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.
2013-06-23 18:37:40 -04:00
Mathieu Duponchelle
800325db02 uri-source: when creating the audio element, set the volume to the layr volume when necessary. 2013-06-23 18:37:40 -04:00
Mathieu Duponchelle
86b893e54c 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
2013-06-23 18:37:40 -04:00
Mathieu Duponchelle
65670509f9 smart-adder: remove volume from the bin, which quite simplifies the code.
+ Don't be too smart, adder.
2013-06-23 18:37:40 -04:00
Thibault Saunier
724a6c1bb5 smart-adder: Implement a GESSmartAdder bin element to be used as mixing element
..in audio tracks
2013-06-23 18:37:40 -04:00
Thibault Saunier
b87c800743 meta-container: Add a VOLUME default meta to layers 2013-06-23 18:28:53 -04:00
Thibault Saunier
29bfe9c0fe ges: Misc documentation fixes 2013-06-23 18:28:53 -04:00
Thibault Saunier
7e25aaeccc track: Implement infrastructure for mixing 2013-06-23 18:28:52 -04:00
Thibault Saunier
58aba118a6 track-element: Set a reference to the GESTrackElement on the GnlObjects using qdata 2013-06-23 18:28:52 -04:00
Thibault Saunier
55b7628382 ges: Make space in the GESTracks to be able to add mixing elements later
And update the tests
2013-06-23 18:28:52 -04:00
Thibault Saunier
700a56f88c layer: Fix some mix up in variable names 2013-06-23 17:39:05 -04:00
Thibault Saunier
439f9b4cc0 layer: Simplify a bit how we handle priorities 2013-06-23 17:39:05 -04:00
Thibault Saunier
b57f55121b timeline-element: Make it possible to reset the timeline property to NULL
+ Add some debug symbol
2013-06-23 17:39:05 -04:00
Thibault Saunier
9b14c001b0 ges: Implement GESAudioTrack and GESVideoTrack, subclasses of GESTrack 2013-06-23 17:38:57 -04:00
Thibault Saunier
f6038e3ad2 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
2013-06-23 16:33:33 -04:00
Lubosz Sarnecki
30f0924055 timeline: fix segfaults
don't call the timeline update, when the reference is invalid

https://bugzilla.gnome.org/show_bug.cgi?id=702605
2013-06-20 09:54:02 -04:00
Mathieu Duponchelle
1d00f45f4f ges-uri-asset.c: Fix ges_uri_asset_request_sync annotations. 2013-06-16 22:02:49 -04:00
Thibault Saunier
d702b16e25 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
2013-06-12 12:00:59 -04:00
Thibault Saunier
284648e536 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
2013-06-12 11:16:37 -04:00
Thibault Saunier
7e121ff167 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
2013-05-29 17:14:31 -04:00
Thibault Saunier
302e0ed5d7 track: Update all gaps when timeline duration changed
And add a unit test to check that a gap is created in empty tracks
2013-05-28 18:27:31 -04:00
Thibault Saunier
40bfdd508a Finish renaming filesource to urisource 2013-05-28 18:27:31 -04:00
Thibault Saunier
9ea53465d2 track: Update gaps when we set the timeline 2013-05-28 18:27:31 -04:00
Sebastian Dröge
e7c748a7f2 ges-pitivi-formatter: Remove some unneeded includes and clean up includes
Fixes the build on Windows, where there's no unistd.h... which wasn't
needed at all.

https://bugzilla.gnome.org/show_bug.cgi?id=701115
2013-05-28 08:51:08 +02:00
Nicolas Dufresne
13fb847255 GESAssetLoadingReturn cannot be internal
The enumeration is referenced in a public API.
2013-05-10 18:13:11 -04:00
Thibault Saunier
ef4efa505f clip: Avoid corruption of our list of children while ungrouping 2013-05-09 19:12:43 -04:00
Anton Belka
7d999c5ab8 timeline: add auto-transition
API:
 ges_timeline_get_auto_transition
 ges_timeline_set_auto_transition
 GESTimeline::auto-transition
2013-05-09 18:54:56 -04:00
Thibault Saunier
51403f65be basexmlformatter: Do not allow empty file loading 2013-04-30 18:26:57 +01:00
Thibault Saunier
602f49f3e1 video-test-src: Force video/x-raw
Avoiding to hit errors with video/x-bayer
2013-04-28 01:45:02 +02:00
Mathieu Duponchelle
a2f8dbd3d1 audiotransition: Add a resampler in the audio transition bin 2013-04-28 01:45:01 +02:00
Mathieu Duponchelle
e02681ca2a audiotransition: Fix porting error of the interpollator
+ update debug statements s/LOG/INFO

(acontrolsource != bcontrolsource)
2013-04-28 01:44:55 +02:00
Thibault Saunier
54bf3c05c5 test-clip: Do not set black/silent by default 2013-04-28 01:44:55 +02:00
Mathieu Duponchelle
c57e463b2d replace query_caps with get_current_caps. don't check for unused gnlobject. 2013-04-23 23:05:17 -03:00
Thibault Saunier
b2b96c743d Rename GESTimelineLayer to GESLayer 2013-04-23 20:22:31 -03:00
Thibault Saunier
b5c52a17ec layer: Remove the "rate" property of ges_timeline_layer_add_asset
API:
 - ges_timeline_layer_add_asset (layer, asset,  start,  inpoint, duration, rate, track_types);
 + ges_timeline_layer_add_asset (layer, asset,  start,  inpoint, duration, track_types);
2013-04-23 20:22:27 -03:00
Mathieu Duponchelle
5ef1a8afa9 trackelement: asynchronously add bindings if the track-element is not in a track yet.
Also fix annotations.
2013-04-23 19:31:32 -03:00
Thibault Saunier
f3372dfb0f formatter: Pass a dummy instance of formatter to virtual method
Instead of passing the class itself
2013-04-23 19:31:32 -03:00
Thibault Saunier
bf4a05d2e7 Fix compilation 2013-04-22 09:42:10 -03:00
Thibault Saunier
dcb1114806 xml-formatter: Use G_GUINT64_FORMAT where needed 2013-04-21 21:29:29 -03:00
Thibault Saunier
f5eb42c664 uri-clip-asset: Add "_class_" to a class method
API CHANGE:
	- ges_uri_clip_asset_set_timeout
	+ ges_uri_clip_asset_class_set_timeout
2013-04-21 21:13:00 -03:00
Thibault Saunier
5ab40ce5cb ges: Fix compilation with clang 2013-04-21 21:11:52 -03:00
Thibault Saunier
723fee10b6 project: Accept NULL as a valid value for @id in _create_asset 2013-04-19 19:59:26 -03:00
Thibault Saunier
10c25fef13 clip: Rework the splitting method
+ Avoid setting clip duration of our parent ourself

Now each and every TrackElement inside a clip have the same
start/inpoint/duration
2013-04-19 19:05:43 -03:00
Thibault Saunier
858a630e65 ges: Fix compilation 2013-04-18 18:59:52 -03:00
Thibault Saunier
64e188772e pipeline: Add API guards where needed 2013-04-18 18:48:19 -03:00
Thibault Saunier
70d5680748 pipeline: Add a GError argument 2013-04-18 18:48:19 -03:00