Commit graph

1719 commits

Author SHA1 Message Date
suhas2go 6dc0cd0dec layer: Add ability to get clips in a given interval
Reviewed-by: Alex Băluț <<alexandru.balut@gmail.com>>
Reviewed-by: Thibault Saunier <thibault.saunier@collabora.com>
Differential Revision: https://phabricator.freedesktop.org/D1689
2017-03-28 11:29:37 -03:00
Thibault Saunier dd8dacdfde docs: Fix generation using markdown for titles around tables 2017-03-13 09:30:39 -03:00
Thibault Saunier 909f0b7412 Revert "Fhotdoc"
This reverts commit 220618ecc7.

This was not meant to be pushed.
2017-03-10 19:46:24 -03:00
Thibault Saunier a125b8d73b ges: Minor GESTimeline documentation fix 2017-03-10 19:34:21 -03:00
Thibault Saunier 107ad1d3e1 extractable: Typedef only in its own .h 2017-03-09 13:11:37 -03:00
Thibault Saunier 220618ecc7 Fhotdoc 2017-03-09 13:10:46 -03:00
Thibault Saunier 35256b47ff docs: Port all docstring to gtk-doc markdown 2017-03-08 18:13:48 -03:00
Thibault Saunier e570d1e080 timeline: Return FALSE when commiting an empty timeline
Meaning that ASYNC_DONE/COMMITED is always emited when TRUE is returned
2017-03-06 12:19:16 -03:00
Sebastian Dröge 50c98bae24 framepositioner: Prevent division by zero
CID 1369046
CID 1369047
2017-02-28 15:40:08 +02:00
Sebastian Dröge 58e8277a78 ges-timeline: Document intentional case-fall-through
CID 1364754
2017-02-28 15:36:46 +02:00
Sebastian Dröge 1c6893c57d ges-project: Check for set/unset error correctly by dereferencing
... or simply calling g_clear_error() on it which does that for us.

CID 1257630
2017-02-28 12:59:35 +02:00
Thibault Saunier fe2efd161d ges: Keep internal symbols internal
The following implementation details where exposed as public symbols:
  - _ges_container_get_priority_offset
  - _ges_container_set_height
  - _ges_container_set_priority_offset
  - _ges_uri_asset_cleanup

but it was not correct and that should never have been used outside
GES.

Moving those declarations to the internal header and marking as
internal.
2017-02-24 16:05:34 -03:00
Thibault Saunier b27078d8de Minor documentation fix 2017-02-15 12:53:22 -03:00
Thibault Saunier c5f59a319b ges-meta: Minor documenation fix 2017-02-06 10:05:49 -03:00
Guillaume Desmottes 53c5bc069c introduce ges_deinit()
GstDiscoverer objects were leaked by tests making the leaks detector
unusable.
Introduce ges_deinit(), similiar to gst_deinit(), doing some cleanup
before exiting the process.

https://bugzilla.gnome.org/show_bug.cgi?id=776805
2017-02-06 09:49:20 -03:00
namanyadav12 7ba2c22ccb uri-clip-asset: Add file-size metadata
Add file-size metadata to GESUriClipAsset.

Reviewed-by: Thibault Saunier <thibault.saunier@osg.samsung.com>
Reviewed-by: Thibault Saunier <thibault.saunier@collabora.com>
Differential Revision: https://phabricator.freedesktop.org/D1645
2017-02-04 18:52:59 -03:00
Thibault Saunier a563578b0a timeline: Cleanup the moved_clip list before rolling back
Otherwise we might end up using an already freed pointer

Differential Revision: https://phabricator.freedesktop.org/D1640
2017-02-04 18:52:57 -03:00
Thibault Saunier ab7865d41c clip: Make sure that clip start change is notified before children changes
Fixes https://phabricator.freedesktop.org/T7577

Differential Revision: https://phabricator.freedesktop.org/D1600
2017-01-09 19:49:19 -03:00
Alexandru Băluț 872d15eb9d asset: Fix set_proxy to abort when an error happens
Differential Revision: https://phabricator.freedesktop.org/D1574
2017-01-09 11:43:13 -03:00
Alexandru Băluț 6b9faec7dc asset: Reuse local variable
Differential Revision: https://phabricator.freedesktop.org/D1573
2017-01-09 11:43:11 -03:00
Thibault Saunier 8aa407ff27 video-mixer: Fix the way we release mixer pads
We were using the actual mixer pad to release the smart mixer
pad, which seemed to be on purpose, but was not properly handle,
moreover, it is now forbiden to pass a pad not inside a GstElement
when releasing it.

Also properly remove ghost pads from Smart mixer, we were planly
failling at it.
2016-12-22 09:50:39 -03:00
Antonio Ospite 1d32be0c08 ges: fix the description of the --help-GES command line option
Use "Show GES Options" which is more appropriate and avoids duplication
with --help-gst which already says "Show GStreamer Options".

https://bugzilla.gnome.org/show_bug.cgi?id=776063
2016-12-14 09:13:41 -03:00
Thibault Saunier ad27229dac element: Rework set_child_property_by_pspec
It was making no sense to loose the information about the pspec itself
to retrieve the child associated to it and was failling when we were
forcing the AssociateType::prop synthax
2016-12-01 17:08:43 -03:00
Sebastian Dröge f536db2b71 ges-timeline: Properly calculate absolute diff of two unsigned integers
CID 1394491.
2016-11-23 18:42:27 +02:00
Sebastian Dröge d9ab6f14e8 ges: Add NULL check before dereferencing
CID 1394494.
2016-11-23 18:28:35 +02:00
Philippe Renon be48b040ea ges-uri-asset: fix compile error 'timeout' may be used uninitialized
https://bugzilla.gnome.org/show_bug.cgi?id=774751
2016-11-21 09:29:59 +02:00
Scott D Phillips 9feee792c5 Enable building with MSVC
https://bugzilla.gnome.org/show_bug.cgi?id=774641
2016-11-18 09:13:53 -03:00
Scott D Phillips 3319ed17d8 Cast away const from GstMetaInfo in *_get_meta_info() functions
MSVC warns about the const in the implicit argument conversion in the
calls to g_once_init_{enter,leave}. It's OK so explicitly cast it.

https://bugzilla.gnome.org/show_bug.cgi?id=774641
2016-11-18 09:13:53 -03:00
Scott D Phillips f203c01af2 Pass gint/guint pointers instead of enum pointers
The underlying integer type for enums are implementation defined and may
not be the same size as gint/guint. So implicitly casting from pointers-
to-enum-types to pointers-to-int-types is unsafe. MSVC warns on these.

https://bugzilla.gnome.org/show_bug.cgi?id=774641
2016-11-18 09:13:53 -03:00
Scott D Phillips f1dd6f4226 parse: Don't #include <unistd.h>
It isn't needed and isn't present in non-posix environments like windows
with MSVC or mingw.

https://bugzilla.gnome.org/show_bug.cgi?id=774641
2016-11-18 09:13:53 -03:00
Thibault Saunier 9bc06c755a ges: Check if GstDiscoverer could be created at init time
And fail initialization if it is not the case, we make the assumption
it worked all around the codebase so we should really concider it fatal.
2016-11-15 15:19:42 -03:00
Alexandru Băluț 3ed09c370a ges: Fix documentation and debug comments
Reviewed-by: Thibault Saunier <thibault.saunier@collabora.com>
Differential Revision: https://phabricator.freedesktop.org/D1393
2016-11-09 18:35:15 -03:00
Mathieu Duponchelle 73cf36fa25 timeline: reimplement snap_to_position a bit more appropriately.
It could yet be made be simpler, but it would require
touching the rest of the timeline editing code.

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

Reviewed-by: Thibault Saunier <thibault.saunier@collabora.com>
Differential Revision: https://phabricator.freedesktop.org/D657
2016-11-09 18:35:12 -03:00
Sebastian Dröge 748d466ac9 ges-timeline: Fix typo in debug messages 2016-11-09 11:48:09 +02:00
Thibault Saunier 1b5c3cb865 timeline: Avoid creating extra transition when rippling clips
In some cases when rippling clip we could get the algo lost because
a transition existed between two clips (for example at the end of c1
and at the begining of c2) but while rippling it would have required
a transition at the end of c2 and beginning of c1, and we were properly
not destroying the old one (as the two clips were in the moving context)
but we were still creating the other transition in the end...

Reviewed-by: Alex Băluț <alexandru.balut@gmail.com>
Differential Revision: https://phabricator.freedesktop.org/D1362
2016-11-04 15:56:36 -03:00
Thibault Saunier a2ae8762af timeline: Make sure transitions between rippled clips are never deleted
Reviewed-by: Alex Băluț <alexandru.balut@gmail.com>
Differential Revision: https://phabricator.freedesktop.org/D1361
2016-11-04 15:56:34 -03:00
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
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