examples: Move all examples to the root dir and create foldersdir per language

+ Add some markdown files to link between languages
+ Add a simple 'play timeline with one clip" example in C and python
This commit is contained in:
Thibault Saunier 2015-03-12 13:57:28 +01:00
parent a71cd000fd
commit e1fcd42a19
24 changed files with 158 additions and 15 deletions

View file

@ -1,6 +1,12 @@
DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc --with-bash-completion-dir=no
SUBDIRS = ges tests tools common m4 pkgconfig docs bindings plugins
if BUILD_EXAMPLES
EXAMPLES_SUBDIRS= examples
else
EXAMPLES_SUBDIRS=
endif
SUBDIRS = ges tests tools common m4 pkgconfig docs bindings plugins $(EXAMPLES_SUBDIRS)
DIST_SUBDIRS = $(SUBDIRS)

View file

@ -1,5 +1 @@
SUBDIRS = gi
if BUILD_EXAMPLES
SUBDIRS += examples
endif

View file

@ -460,7 +460,8 @@ ges/Makefile
tests/Makefile
tests/check/Makefile
tests/benchmarks/Makefile
tests/examples/Makefile
examples/Makefile
examples/c/Makefile
tests/validate/Makefile
tests/validate/scenarios/Makefile
tools/Makefile
@ -476,6 +477,5 @@ bindings/Makefile
bindings/python/Makefile
bindings/python/gi/Makefile
bindings/python/gi/overrides/Makefile
bindings/python/examples/Makefile
)
AC_OUTPUT

5
examples/Makefile.am Normal file
View file

@ -0,0 +1,5 @@
SUBDIRS = c
AM_CFLAGS = -I$(top_srcdir) $(GST_PBUTILS_CFLAGS) $(GST_CFLAGS) $(GTK_CFLAGS)
AM_LDFLAGS = -export-dynamic
LDADD = $(top_builddir)/ges/libges-@GST_API_VERSION@.la $(GST_PBUTILS_LIBS) $(GST_LIBS) $(GTK_LIBS)

View file

@ -17,8 +17,10 @@ noinst_PROGRAMS = \
text_properties \
assets \
multifilesrc \
play_timeline_with_one_clip \
$(graphical)
AM_CFLAGS = -I$(top_srcdir) $(GST_PBUTILS_CFLAGS) $(GST_CFLAGS) $(GTK_CFLAGS)
AM_LDFLAGS = -export-dynamic
LDADD = $(top_builddir)/ges/libges-@GST_API_VERSION@.la $(GST_PBUTILS_LIBS) $(GST_LIBS) $(GTK_LIBS)

View file

@ -0,0 +1,62 @@
/* This example can be found in the GStreamer Editing Services git repository in:
* examples/c/play_timeline_with_one_clip.c
*/
#include <ges/ges.h>
int
main (int argc, char **argv)
{
GESLayer *layer;
GESTimeline *timeline;
if (argc == 1) {
g_printerr ("Usage: play_timeline_with_one_clip file:///clip/uri\n");
return 1;
}
gst_init (NULL, NULL);
ges_init ();
timeline = ges_timeline_new_audio_video ();
layer = ges_timeline_append_layer (timeline);
{
/* Add a clip with a duration of 5 seconds */
GESClip *clip = GES_CLIP (ges_uri_clip_new (argv[1]));
if (clip == NULL) {
g_printerr ("%s can not be used, make sure it is a supported media file",
argv[1]);
return 1;
}
g_object_set (clip, "duration", 5 * GST_SECOND, "start", 0, NULL);
ges_layer_add_clip (layer, clip);
}
/* Commiting the timeline is always necessary for changes
* inside it to be taken into account by the Non Linear Engine */
ges_timeline_commit (timeline);
{
/* Play the timeline */
GESPipeline *pipeline = ges_pipeline_new ();
GstBus *bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
ges_pipeline_set_timeline (pipeline, timeline);
gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_PLAYING);
/* Simple way to just play the pipeline until EOS or an error pops on the bus */
gst_bus_timed_pop_filtered (bus, 10 * GST_SECOND,
GST_MESSAGE_EOS | GST_MESSAGE_ERROR);
gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_NULL);
gst_object_unref (bus);
gst_object_unref (pipeline);
}
return 0;
}

78
examples/python/simple.py Executable file
View file

@ -0,0 +1,78 @@
#!/usr/bin/env python3
#
# GStreamer
#
# Copyright (C) 2013 Thibault Saunier <tsaunier@gnome.org
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 51 Franklin Street, Suite 500,
# Boston, MA 02110-1335, USA.
import os
import gi
gi.require_version('Gst', '1.0')
gi.require_version('GES', '1.0')
from gi.repository import Gst, GES, GLib # noqa
class Simple:
def __init__(self, uri):
timeline = GES.Timeline.new_audio_video()
self.project = timeline.get_asset()
self.project.connect("asset-added", self._asset_added_cb)
self.project.connect("error-loading-asset", self._error_loading_asset_cb)
self.project.create_asset(uri, GES.UriClip)
self.layer = timeline.append_layer()
self._create_pipeline(timeline)
self.loop = GLib.MainLoop()
def _create_pipeline(self, timeline):
self.pipeline = GES.Pipeline()
self.pipeline.set_timeline(timeline)
bus = self.pipeline.get_bus()
bus.add_signal_watch()
bus.connect("message", self.bus_message_cb)
def bus_message_cb(self, unused_bus, message):
if message.type == Gst.MessageType.EOS:
print("eos")
self.loop.quit()
elif message.type == Gst.MessageType.ERROR:
error = message.parse_error()
print("error %s" % error[1])
self.loop.quit()
def start(self):
self.loop.run()
def _asset_added_cb(self, project, asset):
self.layer.add_asset(asset, 0, 0, Gst.SECOND * 5, GES.TrackType.UNKNOWN)
self.pipeline.set_state(Gst.State.PLAYING)
def _error_loading_asset_cb(self, project, error, asset_id, type):
print("Could not load asset %s: %s" % (asset_id, error))
self.loop.quit()
if __name__ == "__main__":
if len(os.sys.argv) != 2:
print("You must specify a file URI")
exit(-1)
Gst.init(None)
GES.init()
simple = Simple(os.sys.argv[1])
simple.start()

View file

@ -4,12 +4,6 @@ else
CHECK_SUBDIRS=
endif
if BUILD_EXAMPLES
EXAMPLES_SUBDIRS= examples
else
EXAMPLES_SUBDIRS=
endif
if BUILD_BENCHMARKS
BENCHMARKS_SUBDIR=benchmarks
else
@ -22,7 +16,7 @@ else
VALIDATE_SUBDIRS=
endif
SUBDIRS= $(CHECK_SUBDIRS) $(EXAMPLES_SUBDIRS) $(BENCHMARKS_SUBDIR) $(VALIDATE_SUBDIRS)
SUBDIRS= $(CHECK_SUBDIRS) $(BENCHMARKS_SUBDIR) $(VALIDATE_SUBDIRS)
DIST_SUBDIRS = check examples benchmarks validate
DIST_SUBDIRS = check benchmarks validate