Commit graph

1633 commits

Author SHA1 Message Date
Thibault Saunier
e31b8627ef timeline: Destroy transition if a neighbor is not being moved to a layer
And make sure that we move the transition to the right layer, not trying
to figure it out.

Differential Revision: https://phabricator.freedesktop.org/D1360
2016-11-04 15:56:31 -03:00
Thibault Saunier
4432efcfad track-element: Avoid dereferencing NULL pointer
We set TrackElement track type very early when creating effects
so it now uses that information to find TrackElement in clips
by track type.

Reviewed-by: Alex Băluț <alexandru.balut@gmail.com>
Differential Revision: https://phabricator.freedesktop.org/D1370
2016-10-11 19:25:51 +02:00
Thibault Saunier
b51fd6184a meson: Fix gtkdoc using new meson features 2016-09-28 20:41:32 -03:00
Thibault Saunier
08397318f6 meson: Fix installing configured files 2016-09-28 20:41:32 -03:00
Thibault Saunier
e065fde526 uriclip: Remove some filesource leftovers
Differential Revision: https://phabricator.freedesktop.org/D1329
2016-09-26 13:33:26 -03:00
Thibault Saunier
cd76231f64 timeline: Properly compute the end of groups when checking snapping
Computation was not taking into account the fact that the start of
the element being moved could be at the middle of a group and not
necessarily at the start!

Fixes T7544

Reviewed-by: Alex Băluț <alexandru.balut@gmail.com>
Differential Revision: https://phabricator.freedesktop.org/D1282
2016-09-26 13:33:19 -03:00
Thibault Saunier
1757ae2e5e ges: Handle moving groups with effects inside
We were only concidering that we should let the group handle moving
transitions when changing transitions but in fact as soon as a
transition is happenning between two clips that are in a same group
the group properly handles moving the transition, so let the
group do its job.

Fixes T7543

Differential Revision: https://phabricator.freedesktop.org/D1281
2016-09-26 13:33:00 -03:00
Thibault Saunier
3409719de5 ges: Deprecate GESTimelineElement::priority writability
GESLayer is now responsible for setting clips priorites. Also
GESClip top effects priorities are now set by the
ges_clip_set_top_effect_index method, the user should never call
ges_timeline_element_set_priority as it will anyway be overriden
by GES itself.

Differential Revision: https://phabricator.freedesktop.org/D1280
2016-09-26 13:32:58 -03:00
Thibault Saunier
f79c73789f layer: Handle operation priorities
All operations should have higher priorites and sources should be
on top of those. We now first set the operations priorities in
a first pass and then stack sources on top of those.

Differential Revision: https://phabricator.freedesktop.org/D1279
2016-09-26 13:32:57 -03:00
Thibault Saunier
eb48faf342 ges: transition: Make crossfade fade out at the same time as it fade in
Until now fade out was just fading in the new clip, but this is not
correct and crossfade should at the same time fade out while fading
in.

Fixes https://phabricator.freedesktop.org/T3451

Differential Revision: https://phabricator.freedesktop.org/D1278
2016-09-26 13:32:56 -03:00
Thibault Saunier
564bd8d473 layer: Make sure to resync priorities on commit
In case effects have been added priorites might become wrong,
but until the timeline is not commited, it does not matter.

Make sure all priorities are correct before commiting compositions

Differential Revision: https://phabricator.freedesktop.org/D1277
2016-09-26 13:32:55 -03:00
Thibault Saunier
3daf8bd788 Finally move clip priority handling to GESLayer.
Fix all tests as we now have 1 priority inside the layer
dedicated to transitions (basically no source clip will
ever have a priority of 0 inside a layer).

Differential Revision: https://phabricator.freedesktop.org/D1276
2016-09-26 13:32:53 -03:00
Thibault Saunier
2854c91ebc clip: Make top effect priority inside the clip priority range
And simplify the way we start computing children priority
making min_priority already relative to the clip itself.

Differential Revision: https://phabricator.freedesktop.org/D1275
2016-09-26 13:32:52 -03:00
Alexandru Băluț
a63c754222 timeline: Make get_groups public
Had to separate timeline_emit_group_added from timeline_add_group
to avoid emitting group-added when the project is being loaded.

Reviewed-by: Thibault Saunier <thibault.saunier@collabora.com>
Differential Revision: https://phabricator.freedesktop.org/D1302
2016-09-13 16:47:24 -03:00
Alexandru Băluț
760909bc9e timeline: Fix documentation
Reviewed-by: Thibault Saunier <thibault.saunier@collabora.com>
Differential Revision: https://phabricator.freedesktop.org/D1300
2016-09-13 16:45:27 -03:00
Thibault Saunier
8b4983daf1 test:validate: Handle new expected_failures Test argument 2016-09-09 10:27:24 -03:00
Thibault Saunier
c7ade2bf84 meson: Handle building the gir file when used as subproject
Add support for building GIR when used as subproject
Add an option to disable GIR generation
And bump version to 1.9.2
2016-09-05 12:46:52 -03:00
Sebastian Dröge
d4af1b6c9a ges: Rename parse_lex.h to ges-parse-lex.h
Fixes the build and makes it consistent with the meson build system.
2016-08-25 10:06:51 +03:00
Thibault Saunier
383c5d1f6d Add support for Meson as alternative/parallel build system
https://github.com/mesonbuild/meson
2016-08-24 16:44:32 -03:00
Philippe Renon
3cf28775f3 ges-track-element: fix typos in control_binding_removed signal declaration
https://bugzilla.gnome.org/show_bug.cgi?id=770101
2016-08-18 10:21:57 -07:00
Edward Hervey
53fb174443 ges-timeline: Demote some debugging statements
locking should be in a lower level to avoid too many messages
2016-08-14 17:44:36 +02:00
Edward Hervey
be5b9270ac timeline-element: Reset pointer after freeing
dispose can be called multiple times, make sure we don't call functions
on free'd pointers.
2016-08-13 11:08:34 +02:00
Thibault Saunier
855488f58e ges: Do not rescale videos if the track aspect ratio changes
Differential Revision: https://phabricator.freedesktop.org/D1242
2016-08-05 21:40:57 -04:00
Thibault Saunier
1cef62ab79 ges: Let the compositor do the scaling if mixing is enabled
Differential Revision: https://phabricator.freedesktop.org/D1241
2016-08-05 21:40:56 -04:00
Thibault Saunier
e1f6b9fefb validate: Start also testing jpeg encoding 2016-07-29 15:57:05 -04:00
Thibault Saunier
8162811bce timeline: Keep transitions when moving the moving context between layers
Differential Revision: https://phabricator.freedesktop.org/D1225
2016-07-29 15:57:05 -04:00
Thibault Saunier
fff6a73735 timeline: Ripple from start of clips and not the end.
Fixes https://phabricator.freedesktop.org/T7503
2016-07-28 19:37:25 -04:00
Thibault Saunier
aa38d80797 enums: Fix absolute text overlay alignment value
It needs to be in sync with GstBaseTextOverlayHAlign order.
2016-07-28 17:23:43 -04:00
Thibault Saunier
6dea2b9779 title-source: Properly implement GESTimelineElement->lookup_child
GESTrackElement->lookup_child is deprecated and should be avoided
as much as possible.
2016-07-28 17:13:39 -04:00
Thibault Saunier
be75994cb9 clip: Reimplement look_child and iterate over children if needed
Otherwise in the case where children reimplement lookup_child to
handle some property renaming lookup fails.
2016-07-28 17:13:31 -04:00
Thibault Saunier
be66877d95 tools: Fix printing commands help 2016-07-28 17:10:10 -04:00
Thibault Saunier
577938c9be uri-sources: Make sure to set decodebin 'caps' property
Fixes a regression where we decode streams twice,
this was introduced when we started creating NLE
object at GESTrackElement construct time.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=769193
2016-07-26 12:07:37 -04:00
Thibault Saunier
6762b05c19 timeline: Emit snap-ended on commit if needed
Commiting the timeline means that the current operations on the clips are over,
so we should concider snapping as done at that point

Fixes T7499
2016-07-24 08:42:30 -04:00
Mohan R
91ecce1d05 fixed ges-version.h not found issue during out of tree build 2016-07-24 08:42:30 -04:00
Thibault Saunier
3c4907900e image-source: Do not concider inpoints
We have no restriction on inpoint for Images

Differential Revision: https://phabricator.freedesktop.org/D1202
2016-07-22 07:35:19 -04:00
Justin Kim
ee2697be46 project_: improve get_uri doc
The return value of ges_project_get_uri should be freed
after usage.
Differential Revision: https://phabricator.freedesktop.org/D1142
2016-06-29 09:02:07 -04:00
Thibault Saunier
346f887553 ges: Don't remove track elements from clips when removing from layer
And reuse the same previously created element when adding the clip
back to a layer, avoiding losing all setting done on clip children
in that situation

This is a behaviour change but previous behaviour was actually totally
unexpected and people working around that weird behaviour will moste
probably not care about that change

Differential Revision: https://phabricator.freedesktop.org/D1094
2016-06-20 14:49:17 -04:00
Thibault Saunier
c9c4a60de2 title_: Do not forget to link up child_added/removed vmethod
Otherwise effect handling is broken

Differential Revision: https://phabricator.freedesktop.org/D1099
2016-06-20 14:21:12 -04:00
Thibault Saunier
716c0dbe8d auto-transitions: Do not remove auto transitions when moving neighboor from the same group
Differential Revision: https://phabricator.freedesktop.org/D1097
2016-06-20 14:19:53 -04:00
Aurélien Zanelli
96a8c6db0c ges: fix various leaks with usage of ges_timeline_element_lookup_child
Some callers forgot to unref out child, pspec or both leading to leaks.

https://bugzilla.gnome.org/show_bug.cgi?id=766449
2016-06-20 13:16:29 +01:00
Aurélien Zanelli
7529e25b49 video-track: don't leak restriction caps in _sync_capsfilter_with_track()
https://bugzilla.gnome.org/show_bug.cgi?id=766450
2016-06-20 12:34:29 +01:00
Sebastian Dröge
90b5735f7a ges-uri-asset: GstDiscoverer can return a valid info but a non-OK result, consider this an error
The asynchronous case in ges_uri_clip_asset_request_async() already considered
it an error, do the same in ges_uri_clip_asset_request_sync().

https://bugzilla.gnome.org/show_bug.cgi?id=767293
2016-06-06 17:45:40 +03:00
Thibault Saunier
2aac7356c8 ges: Emit GESMetontainer::notify-meta even if value is unset 2016-05-31 09:30:40 -04:00
Thibault Saunier
9d65519411 ges: Allow passing NULL as a value to ges_meta_container_set_meta
Fixes T7430
2016-05-30 11:01:51 -04:00
Tim-Philipp Müller
1b44d177fb g-i: pass compiler env to g-ir-scanner
It's what introspection.mak does as well. Should
fix spurious build failures on gnome-continuous
(caused by g-ir-scanner getting compiler details
via python which is broken in some environments
so passing the compiler details bypasses that).
2016-05-25 10:32:46 +01:00
Aurélien Zanelli
dc16ee6c56 uri-clip: make uri parameter of ges_uri_clip_new () const
To avoid compiler warning when using const string to create a new
GESUriClip as string is not modified and only passed to functions which
take a const string.

https://bugzilla.gnome.org/show_bug.cgi?id=766523
2016-05-16 14:47:25 -04:00
Aurélien Zanelli
df9921f470 framepositionner: add a weak ref on track element to know when it is finalized
Otherwise if frame positionner is disposed after track element has been
finalized, it will raise a critical message because we will try to
disconnect a signal handler on a freed track element object.

https://bugzilla.gnome.org/show_bug.cgi?id=766525
2016-05-16 14:37:25 -04:00
Aurélien Zanelli
991870fa28 audio-source: unref private capsfilter reference on dispose
Otherwise a capsfilter reference will be leaked since it has been got
using gst_bin_get_by_name.

https://bugzilla.gnome.org/show_bug.cgi?id=766524
2016-05-16 13:21:12 -04:00
Aurélien Zanelli
4f8459b487 audio-source: fix indentation
https://bugzilla.gnome.org/show_bug.cgi?id=766524
2016-05-16 13:21:12 -04:00
Aurélien Zanelli
813c4b4fb7 ges: add some g-i annotations according to documentation
Mainly (transfer xxx) and (nullable). Also fix some typo.

https://bugzilla.gnome.org/show_bug.cgi?id=766459
2016-05-14 20:36:07 -03:00
Aurélien Zanelli
dc95299080 asset: fix ges_asset_set_proxy() return value documentation
https://bugzilla.gnome.org/show_bug.cgi?id=766459
2016-05-14 20:36:07 -03:00
Thibault Saunier
79e2bbac5d element: Also accept GParamSpec.owner_type name as a child property prefix
Makes it simpler for python users to be able to retrieve children
properties iterating over them.
2016-05-06 22:30:23 -03:00
Thibault Saunier
66d65ed32f track-element: gi: skip now deprecated children property getter/setter
Those are implemented with the exact same API at the GESTimelineElement
level now, and user of those APIs with high level languages will get the
exact same API.
2016-05-06 18:28:01 -03:00
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