Commit graph

1883 commits

Author SHA1 Message Date
Henry Wilkes
f1d29e10e6 clip: allow for neither track nor type in search
Previously, either the track or track_type arguments had to be specified
in order to find **any** track elements. Now, you can specify neither,
which will match any track element, of the specified type.
2020-03-05 17:04:51 -03:00
Henry Wilkes
9a459d0cb5 extractable: check extractable-type of set asset
When setting the asset of a GESExtractable object, first make sure that
the asset's extractable-type matches the type of the object.
2020-03-05 17:04:51 -03:00
Henry Wilkes
1332ed674a layer: fix ownership when failing to add clip
If a clip is already part of a layer, then adding it to another layer
should fail. Previously, in this case, `ges_layer_add_clip` was adding a
reference to the clip instead, without subsequently giving up ownership.
This meant that the clip would be left with an unowned reference.
This has now been corrected by also calling `unref` after the
`ref_sink`.

Note that, since `clip` is already part of `current_layer`, it should
already be non-floating, so the `ref_sink`-`unref` should do nothing
overall. But we keep both to make the ownership (transfer floating/none)
explicit.
2020-03-05 17:04:51 -03:00
Henry Wilkes
a03afa5476 docs: update GESAudioTrack and GESVideoTrack 2020-03-05 17:04:51 -03:00
Henry Wilkes
2f2d57ff2b docs: update GESPipeline 2020-03-05 17:04:51 -03:00
Henry Wilkes
3324fe7d95 docs: update GESMetaContainer 2020-03-05 17:04:51 -03:00
Henry Wilkes
e55c87c5e5 docs: update GESExtractable 2020-03-05 17:04:51 -03:00
Henry Wilkes
dfe3b805f3 docs: update GESAsset 2020-03-05 17:04:51 -03:00
Henry Wilkes
b3d44f66b7 docs: update GESTrackElement 2020-03-05 16:59:37 -03:00
Henry Wilkes
cb35f5ec50 docs: update GESTrack 2020-03-05 16:59:37 -03:00
Henry Wilkes
ac2da96144 docs: update GESClip 2020-03-05 16:59:37 -03:00
Henry Wilkes
427d541f58 docs: update GESGroup 2020-03-05 16:59:37 -03:00
Henry Wilkes
1c6bdf3fcd docs: update GESContainer 2020-03-05 16:59:37 -03:00
Henry Wilkes
4b3fe5f622 docs: update GESTimelineElement 2020-03-05 16:59:37 -03:00
Henry Wilkes
94db57b9bd validate: unref copied and pasted 2020-03-05 16:59:37 -03:00
Henry Wilkes
615bf9e47a timeline: fix paste ownership
The method steals ownership of `copied_from`, so should be responsible
for unreffing it. Also make sure we fail when `layer != -1`, since this
functionality is not supported.
2020-03-05 16:59:37 -03:00
Henry Wilkes
8ad9952cdb docs: update GESTimeline and GESLayer 2020-03-05 16:59:37 -03:00
Thibault Saunier
9cf986c71c framepositioner: Reposition source when the user positioned them
Keeping the same proportion in the size and position and only if
the aspect ratio is conserved.
2020-02-26 13:39:29 -03:00
Thibault Saunier
32dae5e3da validate: Handle absolute control binding support when setting keyframes
And minor fix in set-control-source
2020-02-26 13:36:30 -03:00
Thibault Saunier
53637ad749 ges: Properly position video sources in the scene by default
We try to do our best to have the video frames scaled the best way
to fill most space on the final frames, keeping aspect ratio. The user
can later on rescale or move the sources as usual but it makes the
default behaviour a better and more natural especially now that we
set default restriction caps to the video tracks.

And fix the unit test to take that change into account
2020-02-26 13:36:30 -03:00
Thibault Saunier
7b3ac927dc ges: Add a method to retrieve the 'natural' size of VideoSource
This way the user can easily know how the clip would look like
if no scaling was applied to the clip, this is useful to be able
to properly position the clips with the framepositionner element.
2020-02-26 13:36:30 -03:00
Thibault Saunier
c802a40a96 ges: Call the right ->set_child_property vmethod
We used to always call the `->set_child_property` virtual method
of the object that `ges_timeline_element_set_child_property` was called
from, but that means that, in the case of referencing GESContainer
children properties from its children, the children wouldn't know
what child property have been set, and the children override wouldn't
be takent into account, in turns, it means that the behaviour could be
different in the setter depending on parent the method was called,
which is totally unexpected.

We now make sure that the vmethod from the element that introduced the
child property is called whatever parent method is called, making the
behaviour more uniform.

Fix the python override to make sure that new behaviour is respected.
2020-02-26 13:36:30 -03:00
Thibault Saunier
c454969524 ges: Deprecate the GESTimeline::track field
It is not MT safe to access it, and user should use the proper getter
2020-02-26 13:36:30 -03:00
Thibault Saunier
221353e75c ges: Set default caps for GESVideoTrack
By default, video track output full HD@30fps, this makes the behaviour
of clip position much more understandable and guarantess that we
always have a framerate.

The user can modify the values whenever he wants
2020-02-26 13:36:30 -03:00
Thibault Saunier
df6058c802 framepositioner: Stop lying about the source size
Basically we were advertising that the source size would be the
size of the track if it hadn't been defined by end user, but since
we started to let scaling happen in the compositor, this is not true
as the source size is now the natural size of the underlying video
stream.

Remove the unit test and reimplemented using a validate scenario which
make the test much simpler to read :=)
2020-02-26 13:36:30 -03:00
Thibault Saunier
99074a01a3 validate: Add action types to set/check various child properties at once
And add a way to take into account control bindings.
2020-02-26 13:36:30 -03:00
Thibault Saunier
38dbfc1c24 ges: Allow setting children property using the set_object_arg format
This make it much simpler for the user to set enum values and should not cause any issue
2020-02-25 17:44:51 -03:00
Thibault Saunier
4e4473ef8f ges: Plug leaks in new ges-launch and related 2020-02-25 17:44:51 -03:00
Thibault Saunier
056ac5eeb0 validate: Port to the new REPORT_ACTION API 2020-02-25 17:44:51 -03:00
Thibault Saunier
0be8bc9d98 ges: Avoid adding unnecessary converters for nested timelines
Basically we know that if we are using mixing, compositor will be
able to do video conversion and scaling for us, so avoid adding those
usless elements.

This optimizes a lot caps negotiation for deeply nested timelines.
2020-02-12 17:50:37 -03:00
Thibault Saunier
82159882d7 ges: Ignore deprecation of GParameter
GParameter is part of our API, and for GLib < 2.54 we do not even have
a way around avoiding it (namely `g_object_new_with_properties`).

We should stop using GParameter once we depend on GLib 2.54.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/86
2020-02-07 11:58:37 -03:00
Thibault Saunier
000edd268e ges: Use G_DEPRECATE to mark deprecated methods
Cleanup a few things on the way.

And move ges-track-element deprecations to a dedicated header file
2019-12-18 15:48:23 -03:00
Henry Wilkes
7b5f655c9a ges-source-clip: fixed return of duration setter
In general, brought the behaviour of the `start`, `duration` and
`inpoint` setters in line with each other. In particular:
1. fixed return value the GESSourceClip `duration` setter
2. changed the GESClip `start` setter
3. fixed the inpoint callback for GESContainer
4. changed the type of `res` in GESTimelineElement to be gint to
   emphasise that the GES library is using the hack that a return of -1
   from klass->set_duration means no notify signal should be sent out.

Also added a new test for clips to ensure that the setters work for
clips within and outside of timelines, and that the `start`, `inpoint`
and `duration` of a clip will match its children.
2019-12-14 18:12:51 +00:00
Thibault Saunier
eabcaa1a56 pipeline: Ensure that encodebin enforces a single segment sent to encoders 2019-12-05 14:23:04 -03:00
Edward Hervey
0219631f5a xml-formatter: Free structure after usage
CID: 1416901
CID: 1439518
CID: 1439527
2019-11-20 07:52:56 +01:00
Edward Hervey
9e6be472a4 formatter: Free path object after usage
As it's done everywhere else

CID: 1455511
2019-11-20 07:46:47 +01:00
Niels De Graef
35d140ad92 Don't pass default GLib marshallers for signals
By passing NULL to `g_signal_new` instead of a marshaller, GLib will
actually internally optimize the signal (if the marshaller is available
in GLib itself) by also setting the valist marshaller. This makes the
signal emission a bit more performant than the regular marshalling,
which still needs to box into `GValue` and call libffi in case of a
generic marshaller.

Note that for custom marshallers, one would use
`g_signal_set_va_marshaller()` with the valist marshaller instead.
2019-10-24 15:19:09 +02:00
Henry Wilkes
44420b2e56 marker: add color meta
Support optionally coloring markers by reserving GES_META_MARKER_COLOR
for an ARGB guint.
2019-10-24 09:45:19 +00:00
Henry Wilkes
e53b3fadf1 meta-container: add register_static_meta
Allows us to register a static meta without having to set a value.
2019-10-24 09:45:19 +00:00
Henry Wilkes
a70d0198df meta-container: move comment
The comment that was above _register_meta is actually meant for
_set_value.
2019-10-24 09:45:19 +00:00
Thibault Saunier
c5a2947afa ges-launch: Document timeline description format under --help
Making it simpler for user to get the documentation
2019-10-23 17:51:27 +02:00
Rico Tzschichholz
d760910448 marker-list: Use proper parameters names even in the docs
Otherwise there will be parameters with hyphen in their name in the GIR.
2019-10-22 22:51:41 +02:00
Thibault Saunier
8e145e7f32 ges: Handle empty marker lists 2019-10-22 19:55:01 +02:00
Thibault Saunier
fe96405692 validate: Tear down pipeline when openning a new project
Avoiding potential deadlock when we remove tracks on a playing pipeline
2019-10-22 19:25:09 +02:00
Thibault Saunier
64bb85e6a1 ges: Fix setting GError when adding children to containers
We were misusing assertion and not properly setting the GError value
2019-10-22 19:25:09 +02:00
Thibault Saunier
d58d992674 smart-video-mixer: Handle segment updates
We were basically ignoring any segment update which could potentially
lead to setting a wrong stream time leading to wrong alpha value
being used.
2019-10-22 19:25:09 +02:00
Thibault Saunier
5234885c8a pipeline: Be smarter about how we match encoding profiles and tracks 2019-10-21 10:25:25 +00:00
Henry Wilkes
cab4a52dde marker-list: add prev position to ::marker-moved
Additionally give the previous marker position in the
GESMarkerList::marker-moved signal, since a user may want to know
where a move was from.

Also, fixed the documentation for GESMarkerList::marker-added

https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/78
2019-10-16 17:58:15 +01:00
Tim-Philipp Müller
0c96b9dd10 Remove autotools build system
Todo:
 - hook up data/completions/ges-launch-1.0 in Meson (#77)
2019-10-13 13:54:19 +01:00
Sebastian Dröge
1d12f0b1a1 ges: Hide internal debug category behind a GOnce
Otherwise it might be used (e.g. by the plugin loader via the GES
plugin!) before ges_init() is called.
2019-10-02 08:52:57 +03:00