Commit graph

1487 commits

Author SHA1 Message Date
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