Commit graph

244 commits

Author SHA1 Message Date
Thibault Saunier
d45e594a31 command-line-formatter: Add a way to format timelines using the format
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/227>
2021-02-10 16:14:47 -03:00
Thibault Saunier
70e3b8ae2a ges: Use a ges: uri to define timeline from description
This way the command line formatter actually uses an URI and not
an ugly hack where were passing a random string instead of an URI.
This also allows the `gessrc` element to handle timelines described
in its URI meaning that you can now use, for example:

   gst-play-1.0 "ges:+test-clip blue d=4.0

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/227>
2021-02-10 16:14:47 -03:00
Thibault Saunier
6c5daf8c81 command-line-formatter: Add track management to timeline description
Instead of having it all handled by the tool, this way we can
set the restriction before clips are added to the timeline,
leading to better behavior in term of video images placement
in the scene.

Without that we would have the clips positioned before setting the
restriction caps which leads to weird behavior for the end users.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/227>
2021-02-09 18:11:05 -03:00
Mathieu Duponchelle
8bbd06c7c6 ges-launcher: do not set rendering details too early
It looks like the _set_rendering_details call is superfluous
in _startup(), as it will get called in run_pipeline.

The problem with calling it before timeline_set_user_options
is that we are going to fail creating a smart profile if
the user selected eg --track-types=video, as the get_smart_profile
method compares the tracks in the asset with those on the timeline.

Reproduce with a video-only clip:

ges-launch-1.0 --track-types=video +clip file://$PWD/jelly.mp4 \
inpoint=15.0 -o foo.mp4 --smart-rendering

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/228>
2021-01-29 20:42:26 +01:00
Thibault Saunier
d1aa359c2b launch: Ensure to add required ref to profiles from project
We were unreffing something we were not owning

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/224>
2021-01-05 11:52:43 -03:00
Thibault Saunier
6046a515cd launch: Add an interactive mode where we can seek etc...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/209>
2020-12-04 09:29:02 -03:00
Jan Schmidt
180c23108b init: Fix initialisation crash
Fix a case where initialisation fails without setting
the passed-in GError and the caller assumes it will be
set, and add a guard to catch the condition in case it
happens again in the future.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/217>
2020-10-31 20:51:27 +11:00
Fabrice Fontaine
8f3e2e5b84 utils.c: fix static build
Static build fails since version 1.17.1 and
1e488d4311
on:

FAILED: tools/ges-launch-1.0
/srv/storage/autobuild/run/instance-2/output-1/host/bin/arm-linux-gcc  -o tools/ges-launch-1.0 tools/ges-launch-1.0.p/ges-validate.c.o tools/ges-launch-1.0.p/ges-launch.c.o tools/ges-launch-1.0.p/ges-launcher.c.o tools/ges-launch-1.0.p/utils.c.o -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -Wl,-Bsymbolic-functions -static -Wl,--start-group ges/libges-1.0.a /srv/storage/autobuild/run/instance-2/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libgstreamer-1.0.a /srv/storage/autobuild/run/instance-2/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libgobject-2.0.a /srv/storage/autobuild/run/instance-2/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libglib-2.0.a -pthread /srv/storage/autobuild/run/instance-2/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libpcre.a /srv/storage/autobuild/run/instance-2/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libffi.a /srv/storage/autobuild/run/instance-2/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libgmodule-2.0.a /srv/storage/autobuild/run/instance-2/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libgstbase-1.0.a /srv/storage/autobuild/run/instance-2/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libgstvideo-1.0.a /srv/storage/autobuild/run/instance-2/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libgstpbutils-1.0.a /srv/storage/autobuild/run/instance-2/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libgstaudio-1.0.a /srv/storage/autobuild/run/instance-2/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libz.a /srv/storage/autobuild/run/instance-2/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libgsttag-1.0.a /srv/storage/autobuild/run/instance-2/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libgstcontroller-1.0.a /srv/storage/autobuild/run/instance-2/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libgio-2.0.a /srv/storage/autobuild/run/instance-2/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libmount.a /srv/storage/autobuild/run/instance-2/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libblkid.a -lm -Wl,--end-group
/srv/storage/autobuild/run/instance-2/output-1/host/opt/ext-toolchain/bin/../lib/gcc/arm-buildroot-linux-uclibcgnueabi/8.3.0/../../../../arm-buildroot-linux-uclibcgnueabi/bin/ld: /srv/storage/autobuild/run/instance-2/output-1/host/arm-buildroot-linux-uclibcgnueabi/sysroot/usr/lib/libc.a(err.os): in function `warn':
err.c:(.text+0x1d8): multiple definition of `warn'; tools/ges-launch-1.0.p/utils.c.o:utils.c:(.text+0x9bc): first defined here

So rename warn function to ges_warn
Also prefix ok, print and printerr function by ges_ for consistancy and
run gst-indent on tools/ges-launcher.c

Fixes:
 - http://autobuild.buildroot.org/results/2a528a1185644f5b23d26eb3f2b342e99aa1e493

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/216>
2020-10-19 21:27:17 +00:00
Thibault Saunier
981a027ecd launch: Also print the position when disabling validate
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/198>
2020-07-30 18:44:13 -04:00
Thibault Saunier
150e58af47 launch: Print more useful information to stdout
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/198>
2020-07-30 18:44:13 -04:00
Thibault Saunier
e291383237 build: Add an option to disable examples
And make it yield as in other modules

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/198>
2020-07-30 18:44:13 -04:00
Thibault Saunier
3a6530a127 launcher: Re activate smart rendering support
Trying to get the best encoding profile for smart rendering when
the user didn't specify anything.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/198>
2020-07-30 18:44:13 -04:00
Thibault Saunier
5bb0b46809 launcher: Delay setting rendering setting to right before rendering
So that user settings have been applied to the timeline taking into
account any `validatetest` arguments

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/198>
2020-07-30 18:44:13 -04:00
Tim-Philipp Müller
a1d5282ba7 meson: install bash completion helper for ges-launch-1.0
Fixes #77

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/203>
2020-07-26 09:42:49 +00:00
Thibault Saunier
7bef18169a nlecomposition: Fix seeking with stop
And add some tests

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/166>
2020-04-28 19:14:26 -04:00
Thibault Saunier
f30a127776 launch: Add support for testfiles
Making it simpler to define a test in a single files, including the
configuration etc..

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/166>
2020-04-27 17:58:40 -04:00
Thibault Saunier
130140d059 launch: Add a way to disable validate at runtime
Also avoid to add useless bin in our sinks
2020-03-25 11:26:29 -03:00
Thibault Saunier
dcb3ad620d ges: Plug some leaks 2020-03-25 11:26:29 -03:00
Henry Wilkes
e8a69f5563 utils: fix argument sanitization
_sanitize_argument is supposed to wrap arguments in '"' quote marks such
that they can be parsed and copied into a GstStructure string. This
purpose is now supported more directly, which fixes some bugs, e.g.:
  arguments                before                  fix
+title my=title          +title my="title"       +title "my=title"
+title abc n=my=name     +title abc n="my="name" +title abc n="my=name"
+title my"title          +title "my"title"       +title "my\"title"
+title my\title          +title "my\title"       +title "my\\title"
2020-03-25 11:26:29 -03:00
Thibault Saunier
f0677291d1 launch: Fix memory management issue with the rendering format 2020-03-25 11:26:29 -03:00
Thibault Saunier
329cbbcba7 launch: Make command line provided sinks override scenario defined ones 2020-03-19 18:45:51 -03:00
Thibault Saunier
ff2180b284 ges: Use #pragma once everywhere 2020-03-19 21:09:18 +00:00
Thibault Saunier
0012c6a3b0 ges: Cleanup the way we declare object types
We create our own _DECLARE_ macro because we have instance structures
2020-03-19 21:09:18 +00:00
Thibault Saunier
f55033223f ges:launch: Handle setting playback information in scenarios
This way we can avoid real sinks when implementing scenarios
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
4e4473ef8f ges: Plug leaks in new ges-launch and related 2020-02-25 17:44:51 -03:00
Thibault Saunier
1a111e95eb validate: Allow overriding ges-launch options through scenarios
In 99c45d42cf we allowed setting
track-types but in the end we could do it generically using the
following synthax in the scenario 'properties' metadata:

`ges-options={--track-types=video,--disable-mixing}`
2020-02-11 18:30:13 -03: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
Thibault Saunier
6caf9b0a50 launcher: Enhance printed output 2019-10-21 10:25:25 +00:00
Thibault Saunier
1e488d4311 launcher: Use the output URI extension to set encoding format
And print a description of the encoding profile.
2019-10-21 10:25:25 +00: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
Thibault Saunier
29f25c6c43 launch: Add an option to embed nested timelines when saving 2019-09-30 12:58:24 +00:00
Thibault Saunier
f9d7fa36e0 launch: Set user restriction caps even when loading projects 2019-07-26 14:23:55 -04:00
Thibault Saunier
6f9e6d3586 formatter: Enhance error reporting
And add a "loading-error" signal in GESProject so we can report
issue when loading async elements for the timeline.
2019-07-26 13:48:51 -04:00
Thibault Saunier
99c45d42cf validate: Allow scenarios to set track types 2019-07-05 18:30:41 -04:00
Thibault Saunier
8bf3256ddf validate: Add a way to use validate configs with scenarios
Config files should have the-scenario-name.scenario.config to be picked automatically
2019-07-05 18:30:41 -04:00
Thibault Saunier
dac2d52670 launcher: Remove duplicated track types option 2019-05-23 18:54:42 -04:00
Thibault Saunier
92fdae7cf0 tools: Initialize GStreamer before parsin options
We need it to be initialized to be able to parse our options
2019-05-23 17:16:27 -04:00
Thibault Saunier
ed9cbfed92 tools: Use a proper implementation of get_flags_from_string 2019-05-23 17:16:27 -04:00
Thibault Saunier
bc102d4d9e launch: Fix caps restriction short names 2019-05-05 11:39:09 -04:00
Thibault Saunier
f2c00f6d29 launcher: Add options to set tracks restriction caps 2019-01-29 20:00:41 +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
fe49c7f112 ges-launch: Use standard GstEncodingProfile deserialization function 2016-12-23 15:08:06 -03:00
Thibault Saunier
e41de525e4 meson: Install ges-launch 2016-12-22 08:44:07 -03:00
Antonio Ospite
7ef6762c79 ges: add a basic unix man page for ges-launch-1.0
Do not list all the possible options in the man page but only the help
options.

This is in order to avoid duplication and prevent the man page from
becoming obsolete in case the options change in the code but do not get
updated in the man page.

https://bugzilla.gnome.org/show_bug.cgi?id=776063
2016-12-15 09:34:42 -03:00
Thibault Saunier
e8d9f9226a ges-launch: Make sure GStreamer is always initialized
https://bugzilla.gnome.org/show_bug.cgi?id=776064
2016-12-13 23:26:23 -03:00
Thibault Saunier
54149e5eb5 tools: Deinit Gst before exiting 2016-11-30 09:53:21 -03:00
Thibault Saunier
244266a94e ges-launch: Be a bit more agressive sanitizing arguments
Otherwise GstStructure might fail parsing some fields
containing brackets

https://bugzilla.gnome.org/show_bug.cgi?id=771434
2016-09-14 18:29:58 -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
Justin Kim
f8f3444daf ges-launcher: don't leak project uri string
ges_project_get_uri returns a cloned string so it should
be free'd after usage.

Reviewed-by: Thibault Saunier <thibault.saunier@collabora.com>
Reviewed-by: Thibault Saunier <thibault.saunier@collabora.com>
Differential Revision: https://phabricator.freedesktop.org/D381
2016-07-29 11:00:48 -04:00