Commit graph

37 commits

Author SHA1 Message Date
Thibault Saunier 5e448921d8 ges: Move TimeOverlayClip out of GESTestClip
This was complexifying the implementation for very little gain.
Each source type should ideally have its own API.

In that patch we make it so we do not have to subclass anything
but instead use GESAsset to pass information about how the pipeline
should look like.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/175>
2020-05-19 13:27:13 +00:00
Thibault Saunier 5bb5f60043 ges: Fix interlaced stream playback
Negotiation was failling as `videoflip` was not allowing not
progressive interlacing.

Also avoid adding a deinterlace element when it is useless.
2020-04-17 13:24:45 -04:00
Thibault Saunier 4a9e2c8984 ges: Update documentation
And start generating TrackElement children property with a stupid
simple script
2020-04-09 10:10:09 -04:00
Nirbheek Chauhan 917eba54f7 ges: Fix build with GCC 10
gcc-10 defaults to -fno-common, which exposes a symbol conflict, so
use `static` correctly. Also we don't use `parent_extractable_iface`
in `ges-uri-clip.c`.
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85678
2020-04-06 23:06:29 +05:30
Thibault Saunier ddaf67fed3 ges: Deprecate GESImageSource and GESMultiFileSource
Refactoring GESVideoSource so that #GESUriVideoSource can handle
still image in a simple way

MultiFileSource has been replaced with the new `imagesequencesrc`
element, this was totally broken anyway as `multifilesrc` can not seek
properly.
2020-03-30 06:54:22 -03:00
Thibault Saunier f99034a522 track-element: Create nleobject on GESExtractable::set_asset
This means that we have all the information about the asset
when constructing the underlying GstElements.

This also allows to cleanup some code all around
2020-03-27 17:17:23 -03:00
Thibault Saunier ffc11daa40 ges: Use assets to instantiate track elements/group
And deprecate all GESTrackElement constructors, but the GESEffect one.
Those should **never** be created by users and should become internal
in the future.

Stop having docstring for the constructors that were internal.
2020-03-27 17:17:23 -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 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 fcfa18ac76 More porting to markdown 2019-05-13 10:30:35 -04:00
Jakub Adam 0ce4b5cb85 videosource: Expose video-direction child property 2019-03-20 09:17:38 +01:00
Jakub Adam 77dac21488 videosource: auto-flip the image according to image-orientation tag
If there's image-orientation tag, make sure the image is correctly
oriented before we scale it.
2019-03-19 10:01:40 +01:00
Tim-Philipp Müller a7347ca8f7 WIP: ges: fix API export/import and 'inconsistent linkage' on MSVC
Export GES library API in headers when we're building the
library itself, otherwise import the API from the headers.

This fixes linker warnings on Windows when building with MSVC.

Fix up some missing config.h includes when building the lib which
is needed to get the export api define from config.h

Fixes https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/42
2018-12-15 00:14:51 +00:00
Thibault Saunier 13b8c8554d Update for g_type_class_add_private() deprecation in recent GLib 2018-09-05 22:57:27 -03:00
Thibault Saunier 4cff10fb91 doc: Remove documentation about GESVideoSource::zorder as it doesn't exist
The zorder is controled through the GESLayer priority API, not directly
on the sources.
2018-03-19 08:59:56 -03:00
Thibault Saunier dd8dacdfde docs: Fix generation using markdown for titles around tables 2017-03-13 09:30:39 -03:00
Thibault Saunier 35256b47ff docs: Port all docstring to gtk-doc markdown 2017-03-08 18:13:48 -03: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 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
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 abfe2c5949 ges: Fix typo by renaming positionner to positioner
It's fortunately private API
2016-04-13 12:31:05 +03: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 f046bb5a03 video-source: Use the priority being set to compute zorder 2015-09-04 12:01: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
Mathieu Duponchelle fb34c5056e *source: new lines in xml break my parser.
+ So I removed them cause I'm clever

https://bugzilla.gnome.org/show_bug.cgi?id=740727
2014-12-05 22:12:12 +01:00
Thibault Saunier ac906a9143 Document known and usable child properties for GESTrackElements subclasses 2014-11-10 16:22:41 +01:00
Thibault Saunier 11f9c6e108 Cleanup import of GNL and rename gnl to nle for Non Linear Engine
Conflicts:
	ges/ges-track-element.c
	gnl/Makefile.am
	gnl/common

Conflicts:
	ges/ges-internal.h
	ges/ges-track.c
	ges/ges-utils.c
	ges/nle/.gitignore
	ges/nle/gnlmarshal.list
	ges/nle/nle.h
	ges/nle/nlecomposition.c
	ges/nle/nlecomposition.h
	ges/nle/nleghostpad.c
	ges/nle/nleghostpad.h
	ges/nle/nleobject.c
	ges/nle/nleoperation.c
	ges/nle/nleoperation.h
	ges/nle/nlesource.c
	ges/nle/nlesource.h
	ges/nle/nletypes.h
	ges/nle/nleurisource.c
	ges/nle/nleurisource.h
	gnl/Makefile.am
	gnl/gnl.c
	gnl/gnl.h
	gnl/gnl/gnl.h
	gnl/gnl/gnlcomposition.c
	gnl/gnl/gnlcomposition.h
	gnl/gnl/gnlghostpad.c
	gnl/gnl/gnlghostpad.h
	gnl/gnl/gnlmarshal.list
	gnl/gnl/gnlobject.c
	gnl/gnl/gnloperation.c
	gnl/gnl/gnloperation.h
	gnl/gnl/gnlsource.c
	gnl/gnl/gnlsource.h
	gnl/gnl/gnltypes.h
	gnl/gnl/gnlurisource.c
	gnl/gnl/gnlurisource.h
	gnl/gnlcomposition.c
	gnl/gnlcomposition.h
	gnl/gnlghostpad.c
	gnl/gnlghostpad.h
	gnl/gnlmarshal.list
	gnl/gnlobject.c
	gnl/gnlobject.h
	gnl/gnloperation.c
	gnl/gnloperation.h
	gnl/gnlsource.c
	gnl/gnlsource.h
	gnl/gnltypes.h
	gnl/gnlurisource.c
	gnl/gnlurisource.h
	gnl/tests/check/gnl/common.c
	gnl/tests/check/gnl/common.h
	gnl/tests/check/gnl/complex.c
	gnl/tests/check/gnl/gnlcomposition.c
	gnl/tests/check/gnl/gnloperation.c
	gnl/tests/check/gnl/gnlsource.c
	gnl/tests/check/gnl/seek.c
	gnl/tests/check/gnl/simple.c
	tests/check/gnl/common.c
	tests/check/gnl/common.h
	tests/check/gnl/complex.c
	tests/check/gnl/gnlcomposition.c
	tests/check/gnl/gnloperation.c
	tests/check/gnl/gnlsource.c
	tests/check/gnl/seek.c
	tests/check/gnl/simple.c
	tests/check/nle/common.c
	tests/check/nle/common.h
	tests/check/nle/complex.c
	tests/check/nle/nlecomposition.c
	tests/check/nle/nleoperation.c
	tests/check/nle/nlesource.c
	tests/check/nle/seek.c
	tests/check/nle/simple.c
2014-10-31 11:58:12 +01:00
Thibault Saunier 10c3e97f42 ges: Add a queue after the decoder in video test src 2014-05-15 20:07:58 +02:00
Christoph Reiter a66e674649 Include class related section documentation in the gir file.
g-ir-scanner includes section docs as class/interface docs if the section name is equal to the lowercase type name.
Since all the documentation is in section blocks, rename them to match the type names.

https://bugzilla.gnome.org/show_bug.cgi?id=727776
2014-04-07 22:13:25 +02:00
Thibault Saunier f4ce6dcab7 videosource: Always add a deinterlace at the beining of videosrcbin
It might be needed in some cases (for example when decoding prores files) and
it is the way it is done with playbin now. Also deinterlace now properly supports
passtrough mode.
2014-02-04 13:53:34 +01:00
Simon Corsin 3970e2fac7 video-source: Add a videorate in video-source.
And control it in framepositionner.

Conflicts:
	ges/ges-video-source.c
2013-09-25 23:54:49 +02:00
Thibault Saunier 2f03a5df25 ges: Make GESAudioSource and GESVideoSource abstract 2013-09-03 20:57:31 -04:00
Thibault Saunier 9ed5803323 videosource: Make sure to update z-order when layer priority changes
Conflicts:
	ges/ges-video-source.c
2013-09-03 20:57:31 -04:00
Simon Corsin a93f7baed3 gstframepositionner: Install width and height properties.
+ And manage them properly.
2013-09-03 20:57:31 -04:00
Simon Corsin a635e48d77 GES: Add GESVideoSource and GESAudioSource base classes
+ Update documentation.
  + Implements subclasses audio-uri-source and video-uri-source
2013-09-03 20:22:32 -04:00