Initial code drop

This commit is contained in:
Edward Hervey 2009-08-04 17:13:11 +02:00
commit ee8bf88ebf
21 changed files with 1769 additions and 0 deletions

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "common"]
path = common
url = git://anongit.freedesktop.org/gstreamer/common

39
Makefile.am Normal file
View file

@ -0,0 +1,39 @@
DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc
SUBDIRS = \
gst-libs gst sys ext \
m4 common docs tests po
DIST_SUBDIRS = \
gst gst-libs sys ext \
m4 common docs tests po
# include before EXTRA_DIST for win32 assignment
include $(top_srcdir)/common/win32.mak
EXTRA_DIST = \
gst-plugins-bad.spec depcomp \
AUTHORS COPYING NEWS README RELEASE REQUIREMENTS \
ChangeLog gst-plugins-bad.doap autogen.sh \
$(win32)
DISTCLEANFILES = _stdint.h
ACLOCAL_AMFLAGS = -I m4 -I common/m4
include $(top_srcdir)/common/release.mak
include $(top_srcdir)/common/po.mak
check-valgrind:
cd tests/check && make check-valgrind
if HAVE_GST_CHECK
check-torture:
cd tests/check && make torture
else
check-torture:
true
endif
include $(top_srcdir)/common/coverage/lcov.mak

67
README Normal file
View file

@ -0,0 +1,67 @@
GStreamer Editing Services
--------------------------
This is a high-level library for facilitating the creation of audio/video
non-linear editors.
Dependencies:
-------------
* GStreamer core
* gst-plugins-base
* gnonlin
Classes:
--------
<Public>
TimelinePipeline : GstPipeline for Timeline playback/rendering
=> Add methods to save/load to/from files
?? Do we need undo/redo support ?
Timeline : Top-level container (is also a GstBin)
SimpleAVTimeline : Convenience A+V Timeline
TimelineObject : Base-class for objects you can put in a TimelineLayer
TimelineSource : Source objects to use in a TimelineLayer
=> _from_uri(const gchar *uri): automatically creates a TimelineSource
TimelineTransition : Transitions
(TimelineEffect)
TimelineLayer : Layer of TimelineObject
SimpleTimelineLayer : Simpler API (contiguous objects, list API)
<PRIVATE>
Track : High-level single-media Composition (is a GstBin). Represents a 'stream'.
TrackObject : Base-class for objects you can put in a Track
TrackSource
TrackOperation
Usage:
------
Create a TimelinePipeline...
pipeline = ges_timeline_pipeline_new();
... with one layer
layer1 = ges_simple_timeline_layer_new();
ges_timeline_pipeline_add_layer (layer1);
Add a video source to the end
src1 = ges_timeline_source_from_uri("/my/cool/file.avi");
ges_simple_timeline_layer_add(src1, -1);
Set video output XID and play back the timeline
ges_timeline_pipeline_set_xid(1234567);
ges_timeline_pipeline_play();
Save Timeline to a file
ges_timeline_save ("/my/project.ges");
Stop output and render to a file
ges_timeline_pipeline_stop();
ges_timeline_pipeline_render_to_file("/my/output.mov", OUTPUT_SETTINGS);

120
autogen.sh Executable file
View file

@ -0,0 +1,120 @@
#!/bin/sh
# Run this to generate all the initial makefiles, etc.
DIE=0
package=gst-editing-services
srcfile=src/ges-timeline.c
# Make sure we have common
if test ! -f common/gst-autogen.sh;
then
echo "+ Setting up common submodule"
git submodule init
fi
git submodule update
# source helper functions
if test ! -f common/gst-autogen.sh;
then
echo There is something wrong with your source tree.
echo You are missing common/gst-autogen.sh
exit 1
fi
. common/gst-autogen.sh
# install pre-commit hook for doing clean commits
if test ! \( -x .git/hooks/pre-commit -a -L .git/hooks/pre-commit \);
then
rm -f .git/hooks/pre-commit
ln -s ../../common/hooks/pre-commit.hook .git/hooks/pre-commit
fi
CONFIGURE_DEF_OPT='--enable-maintainer-mode --enable-gtk-doc'
autogen_options $@
printf "+ check for build tools"
if test ! -z "$NOCHECK"; then echo " skipped"; else echo; fi
version_check "autoconf" "$AUTOCONF autoconf autoconf-2.54 autoconf-2.53 autoconf-2.52" \
"ftp://ftp.gnu.org/pub/gnu/autoconf/" 2 52 || DIE=1
version_check "automake" "$AUTOMAKE automake automake-1.11 automake-1.10 automake-1.9 automake-1.7 automake-1.6 automake-1.5" \
"ftp://ftp.gnu.org/pub/gnu/automake/" 1 7 || DIE=1
version_check "autopoint" "autopoint" \
"ftp://ftp.gnu.org/pub/gnu/gettext/" 0 17 || DIE=1
version_check "libtoolize" "$LIBTOOLIZE libtoolize glibtoolize" \
"ftp://ftp.gnu.org/pub/gnu/libtool/" 1 5 0 || DIE=1
version_check "pkg-config" "" \
"http://www.freedesktop.org/software/pkgconfig" 0 8 0 || DIE=1
die_check $DIE
autoconf_2_52d_check || DIE=1
aclocal_check || DIE=1
autoheader_check || DIE=1
die_check $DIE
# if no arguments specified then this will be printed
if test -z "$*"; then
echo "+ checking for autogen.sh options"
echo " This autogen script will automatically run ./configure as:"
echo " ./configure $CONFIGURE_DEF_OPT"
echo " To pass any additional options, please specify them on the $0"
echo " command line."
fi
toplevel_check $srcfile
# autopoint
# older autopoint (< 0.12) has a tendency to complain about mkinstalldirs
if test -x mkinstalldirs; then rm mkinstalldirs; fi
# first remove patch if necessary, then run autopoint, then reapply
if test -f po/Makefile.in.in;
then
patch -p0 -R < common/gettext.patch
fi
tool_run "$autopoint --force"
patch -p0 < common/gettext.patch
tool_run "$libtoolize" "--copy --force"
tool_run "$aclocal" "-I m4 -I common/m4 $ACLOCAL_FLAGS"
tool_run "$autoheader"
# touch the stamp-h.in build stamp so we don't re-run autoheader in maintainer mode -- wingo
echo timestamp > stamp-h.in 2> /dev/null
tool_run "$autoconf"
tool_run "$automake" "-a -c"
# if enable exists, add an -enable option for each of the lines in that file
if test -f enable; then
for a in `cat enable`; do
CONFIGURE_FILE_OPT="--enable-$a"
done
fi
# if disable exists, add an -disable option for each of the lines in that file
if test -f disable; then
for a in `cat disable`; do
CONFIGURE_FILE_OPT="$CONFIGURE_FILE_OPT --disable-$a"
done
fi
test -n "$NOCONFIGURE" && {
echo "+ skipping configure stage for package $package, as requested."
echo "+ autogen.sh done."
exit 0
}
echo "+ running configure ... "
test ! -z "$CONFIGURE_DEF_OPT" && echo " ./configure default flags: $CONFIGURE_DEF_OPT"
test ! -z "$CONFIGURE_EXT_OPT" && echo " ./configure external flags: $CONFIGURE_EXT_OPT"
test ! -z "$CONFIGURE_FILE_OPT" && echo " ./configure enable/disable flags: $CONFIGURE_FILE_OPT"
echo
./configure $CONFIGURE_DEF_OPT $CONFIGURE_EXT_OPT $CONFIGURE_FILE_OPT || {
echo " configure failed"
exit 1
}
echo "Now type 'make' to compile $package."

254
configure.ac Normal file
View file

@ -0,0 +1,254 @@
AC_PREREQ(2.52)
dnl initialize autoconf
dnl when going to/from release please set the nano (fourth number) right !
dnl releases only do Wall, cvs and prerelease does Werror too
AC_INIT(GStreamer Editing Services, 0.10.0.0,
http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
gstreamer-editing-services)
AG_GST_INIT
dnl initialize automake
AM_INIT_AUTOMAKE([-Wno-portability])
dnl define PACKAGE_VERSION_* variables
AS_VERSION
dnl check if this is a release version
AS_NANO(GST_CVS="no", GST_CVS="yes")
dnl can autoconf find the source ?
AC_CONFIG_SRCDIR([src/ges-timeline.c])
dnl define the output header for config
AM_CONFIG_HEADER([config.h])
dnl AM_MAINTAINER_MODE only provides the option to configure to enable it
AM_MAINTAINER_MODE
dnl sets host_* variables
AC_CANONICAL_HOST
dnl our libraries and install dirs use major.minor as a version
GST_MAJORMINOR=$GST_EDITING_SERVICES_VERSION_MAJOR.$GST_EDITING_SERVICES_VERSION_MINOR
dnl we override it here if we need to for the release candidate of new series
GST_MAJORMINOR=0.10
AC_SUBST(GST_MAJORMINOR)
dnl FIXME: this macro doesn't actually work;
dnl the generated libtool script has no support for the listed tags.
dnl So this needs to be fixed first if we want to use this
dnl AS_LIBTOOL_TAGS([CXX])
AC_LIBTOOL_WIN32_DLL
AM_PROG_LIBTOOL
dnl *** required versions of GStreamer stuff ***
GST_REQ=0.10.23.1
GSTPB_REQ=0.10.23.1
dnl *** autotools stuff ****
dnl allow for different autotools
AS_AUTOTOOLS_ALTERNATE
dnl Add parameters for aclocal
AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I common/m4")
dnl set up gettext
dnl the version check needs to stay here because autopoint greps for it
AM_GNU_GETTEXT_VERSION([0.17])
AM_GNU_GETTEXT([external])
AG_GST_GETTEXT([gst-editing-services-$GST_MAJORMINOR])
dnl *** check for arguments to configure ***
AG_GST_ARG_DEBUG
AG_GST_ARG_PROFILING
AG_GST_ARG_VALGRIND
AG_GST_ARG_GCOV
AG_GST_ARG_EXAMPLES
AG_GST_ARG_WITH_PKG_CONFIG_PATH
AG_GST_ARG_WITH_PACKAGE_NAME
AG_GST_ARG_WITH_PACKAGE_ORIGIN
dnl *** checks for platform ***
dnl * hardware/architecture *
dnl common/m4/gst-arch.m4
dnl check CPU type
AG_GST_ARCH
dnl Determine endianness
AC_C_BIGENDIAN
dnl *** checks for programs ***
dnl find a compiler
AC_PROG_CC
dnl determine c++ compiler
AC_PROG_CXX
dnl determine if c++ is available on this system
AC_CHECK_PROG(HAVE_CXX, $CXX, yes, no)
AS_PROG_OBJC
dnl check if the compiler supports '-c' and '-o' options
AM_PROG_CC_C_O
dnl check if the compiler supports do while(0) macros
AG_GST_CHECK_DOWHILE_MACROS
AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")
dnl check for documentation tools
GTK_DOC_CHECK([1.3])
AS_PATH_PYTHON([2.1])
AG_GST_PLUGIN_DOCS([1.3],[2.1])
dnl *** checks for libraries ***
dnl check for libm, for sin() etc.
# AC_CHECK_LIBM
# AC_SUBST(LIBM)
dnl *** checks for header files ***
AC_CHECK_HEADERS([unistd.h], HAVE_UNISTD_H=yes)
AM_CONDITIONAL(HAVE_UNISTD_H, test "x$HAVE_UNISTD_H" = "xyes")
if test "x$HAVE_UNISTD_H" != "xyes"; then
GST_PLUGINS_SELECTED=`echo $GST_PLUGINS_SELECTED | $SED -e s/festival//`
fi
dnl *** checks for types/defines ***
dnl *** checks for structures ***
dnl *** checks for compiler characteristics ***
dnl *** checks for library functions ***
dnl *** checks for headers ***
dnl *** checks for dependency libraries ***
dnl GLib is required
AG_GST_GLIB_CHECK([2.6])
dnl checks for gstreamer
dnl uninstalled is selected preferentially -- see pkg-config(1)
AG_GST_CHECK_GST($GST_MAJORMINOR, [$GST_REQ], yes)
AG_GST_CHECK_GST_BASE($GST_MAJORMINOR, [$GST_REQ], yes)
#AG_GST_CHECK_GST_GDP($GST_MAJORMINOR, [$GST_REQ], yes)
AG_GST_CHECK_GST_CHECK($GST_MAJORMINOR, [$GST_REQ], no)
#AG_GST_CHECK_GST_CONTROLLER($GST_MAJORMINOR, [$GST_REQ], yes)
AG_GST_CHECK_GST_PLUGINS_BASE($GST_MAJORMINOR, [$GSTPB_REQ], yes)
AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
GSTPB_PLUGINS_DIR=`$PKG_CONFIG gstreamer-plugins-base-$GST_MAJORMINOR --variable pluginsdir`
AC_SUBST(GSTPB_PLUGINS_DIR)
AC_MSG_NOTICE(Using GStreamer Base Plugins in $GSTPB_PLUGINS_DIR)
dnl Check for documentation xrefs
GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
GST_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-$GST_MAJORMINOR`"
GSTPB_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-plugins-base-$GST_MAJORMINOR`"
AC_SUBST(GLIB_PREFIX)
AC_SUBST(GST_PREFIX)
AC_SUBST(GSTPB_PREFIX)
dnl set license and copyright notice
GST_LICENSE="LGPL"
AC_DEFINE_UNQUOTED(GST_LICENSE, "$GST_LICENSE", [GStreamer license])
AC_SUBST(GST_LICENSE)
dnl define LIBDIR so we can inform people where we live
AS_AC_EXPAND(LIBDIR, $libdir)
AC_DEFINE_UNQUOTED(LIBDIR, "$LIBDIR", [library dir])
dnl set location of plugin directory
AG_GST_SET_PLUGINDIR
dnl define an ERROR_CFLAGS Makefile variable
AG_GST_SET_ERROR_CFLAGS($GST_CVS)
dnl define an ERROR_CXXFLAGS Makefile variable
AG_GST_SET_ERROR_CXXFLAGS($GST_CVS)
dnl define correct level for debugging messages
AG_GST_SET_LEVEL_DEFAULT($GST_CVS)
dnl *** finalize CFLAGS, LDFLAGS, LIBS
dnl Overview:
dnl GST_OPTION_CFLAGS: common flags for profiling, debugging, errors, ...
dnl GST_*: flags shared by built objects to link against GStreamer
dnl GST_ALL_LDFLAGS: linker flags shared by all
dnl GST_LIB_LDFLAGS: additional linker flags for all libaries
dnl GST_LT_LDFLAGS: library versioning of our libraries
dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
dnl GST_OPTION_CFLAGS
if test "x$USE_DEBUG" = xyes; then
PROFILE_CFLAGS="-g"
fi
AC_SUBST(PROFILE_CFLAGS)
if test "x$PACKAGE_VERSION_NANO" = "x1"; then
dnl Define _only_ during CVS (not pre-releases or releases)
DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
else
DEPRECATED_CFLAGS=""
fi
AC_SUBST(DEPRECATED_CFLAGS)
dnl every flag in GST_OPTION_CFLAGS and GST_OPTION_CXXFLAGS can be overridden
dnl at make time with e.g. make ERROR_CFLAGS=""
GST_OPTION_CFLAGS="\$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
GST_OPTION_CXXFLAGS="\$(ERROR_CXXFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
AC_SUBST(GST_OPTION_CFLAGS)
AC_SUBST(GST_OPTION_CXXFLAGS)
dnl FIXME: do we want to rename to GST_ALL_* ?
dnl prefer internal headers to already installed ones
dnl also add builddir include for enumtypes and marshal
dnl add GST_OPTION_CFLAGS, but overridable
GST_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CFLAGS \$(GST_OPTION_CFLAGS)"
GST_CXXFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CXXFLAGS \$(GST_OPTION_CXXFLAGS)"
AC_SUBST(GST_CFLAGS)
AC_SUBST(GST_CXXFLAGS)
AC_SUBST(GST_LIBS)
dnl LDFLAGS really should only contain flags, not libs - they get added before
dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
GST_ALL_LDFLAGS="-no-undefined"
AC_SUBST(GST_ALL_LDFLAGS)
SHAVE_INIT([common],[enable])
dnl *** output files ***
dnl po/Makefile.in
AC_CONFIG_FILES(
Makefile
common/Makefile
common/shave
common/shave-libtool
common/m4/Makefile
gst-plugins-bad.spec
#po/Makefile.in
#docs/Makefile
#docs/plugins/Makefile
#docs/plugins/figures/Makefile
#docs/version.entities
m4/Makefile
)
AC_OUTPUT

View file

@ -0,0 +1,88 @@
/* GStreamer Editing Services
* Copyright (C) 2009 Edward Hervey <bilboed@bilboed.com>
*
* 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., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#include "ges-simple-timeline-layer.h"
G_DEFINE_TYPE (GESSimpleTimelineLayer, ges_simple_timeline_layer, GES_TIMELINE_LAYER)
#define GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), GES_TYPE_SIMPLE_TIMELINE_LAYER, GESSimpleTimelineLayerPrivate))
typedef struct _GESSimpleTimelineLayerPrivate GESSimpleTimelineLayerPrivate;
struct _GESSimpleTimelineLayerPrivate {
int dummy;
};
static void
ges_simple_timeline_layer_get_property (GObject *object, guint property_id,
GValue *value, GParamSpec *pspec)
{
switch (property_id) {
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
ges_simple_timeline_layer_set_property (GObject *object, guint property_id,
const GValue *value, GParamSpec *pspec)
{
switch (property_id) {
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
ges_simple_timeline_layer_dispose (GObject *object)
{
G_OBJECT_CLASS (ges_simple_timeline_layer_parent_class)->dispose (object);
}
static void
ges_simple_timeline_layer_finalize (GObject *object)
{
G_OBJECT_CLASS (ges_simple_timeline_layer_parent_class)->finalize (object);
}
static void
ges_simple_timeline_layer_class_init (GESSimpleTimelineLayerClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
g_type_class_add_private (klass, sizeof (GESSimpleTimelineLayerPrivate));
object_class->get_property = ges_simple_timeline_layer_get_property;
object_class->set_property = ges_simple_timeline_layer_set_property;
object_class->dispose = ges_simple_timeline_layer_dispose;
object_class->finalize = ges_simple_timeline_layer_finalize;
}
static void
ges_simple_timeline_layer_init (GESSimpleTimelineLayer *self)
{
}
GESSimpleTimelineLayer*
ges_simple_timeline_layer_new (void)
{
return g_object_new (GES_TYPE_SIMPLE_TIMELINE_LAYER, NULL);
}

View file

@ -0,0 +1,60 @@
/* GStreamer Editing Services
* Copyright (C) 2009 Edward Hervey <bilboed@bilboed.com>
*
* 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., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef _GES_SIMPLE_TIMELINE_LAYER
#define _GES_SIMPLE_TIMELINE_LAYER
#include <glib-object.h>
#include "ges-timeline-layer.h"
G_BEGIN_DECLS
#define GES_TYPE_SIMPLE_TIMELINE_LAYER ges_simple_timeline_layer_get_type()
#define GES_SIMPLE_TIMELINE_LAYER(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GES_TYPE_SIMPLE_TIMELINE_LAYER, GESSimpleTimelineLayer))
#define GES_SIMPLE_TIMELINE_LAYER_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), GES_TYPE_SIMPLE_TIMELINE_LAYER, GESSimpleTimelineLayerClass))
#define GES_IS_SIMPLE_TIMELINE_LAYER(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GES_TYPE_SIMPLE_TIMELINE_LAYER))
#define GES_IS_SIMPLE_TIMELINE_LAYER_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), GES_TYPE_SIMPLE_TIMELINE_LAYER))
#define GES_SIMPLE_TIMELINE_LAYER_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), GES_TYPE_SIMPLE_TIMELINE_LAYER, GESSimpleTimelineLayerClass))
typedef struct {
GESTimelineLayer parent;
} GESSimpleTimelineLayer;
typedef struct {
GESTimelineLayerClass parent_class;
} GESSimpleTimelineLayerClass;
GType ges_simple_timeline_layer_get_type (void);
GESSimpleTimelineLayer* ges_simple_timeline_layer_new (void);
G_END_DECLS
#endif /* _GES_SIMPLE_TIMELINE_LAYER */

94
src/ges-timeline-layer.c Normal file
View file

@ -0,0 +1,94 @@
/* GStreamer Editing Services
* Copyright (C) 2009 Edward Hervey <bilboed@bilboed.com>
*
* 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., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#include "ges-timeline-layer.h"
/**
* GESTimelineLayer
*
* Responsible for the ordering of the various contained TimelineObject(s)
*/
G_DEFINE_TYPE (GESTimelineLayer, ges_timeline_layer, G_TYPE_OBJECT)
#define GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), GES_TYPE_TIMELINE_LAYER, GESTimelineLayerPrivate))
typedef struct _GESTimelineLayerPrivate GESTimelineLayerPrivate;
struct _GESTimelineLayerPrivate {
int dummy;
};
static void
ges_timeline_layer_get_property (GObject *object, guint property_id,
GValue *value, GParamSpec *pspec)
{
switch (property_id) {
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
ges_timeline_layer_set_property (GObject *object, guint property_id,
const GValue *value, GParamSpec *pspec)
{
switch (property_id) {
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
ges_timeline_layer_dispose (GObject *object)
{
G_OBJECT_CLASS (ges_timeline_layer_parent_class)->dispose (object);
}
static void
ges_timeline_layer_finalize (GObject *object)
{
G_OBJECT_CLASS (ges_timeline_layer_parent_class)->finalize (object);
}
static void
ges_timeline_layer_class_init (GESTimelineLayerClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
g_type_class_add_private (klass, sizeof (GESTimelineLayerPrivate));
object_class->get_property = ges_timeline_layer_get_property;
object_class->set_property = ges_timeline_layer_set_property;
object_class->dispose = ges_timeline_layer_dispose;
object_class->finalize = ges_timeline_layer_finalize;
}
static void
ges_timeline_layer_init (GESTimelineLayer *self)
{
}
GESTimelineLayer*
ges_timeline_layer_new (void)
{
return g_object_new (GES_TYPE_TIMELINE_LAYER, NULL);
}

59
src/ges-timeline-layer.h Normal file
View file

@ -0,0 +1,59 @@
/* GStreamer Editing Services
* Copyright (C) 2009 Edward Hervey <bilboed@bilboed.com>
*
* 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., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef _GES_TIMELINE_LAYER
#define _GES_TIMELINE_LAYER
#include <glib-object.h>
G_BEGIN_DECLS
#define GES_TYPE_TIMELINE_LAYER ges_timeline_layer_get_type()
#define GES_TIMELINE_LAYER(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GES_TYPE_TIMELINE_LAYER, GESTimelineLayer))
#define GES_TIMELINE_LAYER_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), GES_TYPE_TIMELINE_LAYER, GESTimelineLayerClass))
#define GES_IS_TIMELINE_LAYER(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GES_TYPE_TIMELINE_LAYER))
#define GES_IS_TIMELINE_LAYER_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), GES_TYPE_TIMELINE_LAYER))
#define GES_TIMELINE_LAYER_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), GES_TYPE_TIMELINE_LAYER, GESTimelineLayerClass))
typedef struct {
GObject parent;
} GESTimelineLayer;
typedef struct {
GObjectClass parent_class;
} GESTimelineLayerClass;
GType ges_timeline_layer_get_type (void);
GESTimelineLayer* ges_timeline_layer_new (void);
G_END_DECLS
#endif /* _GES_TIMELINE_LAYER */

97
src/ges-timeline-object.c Normal file
View file

@ -0,0 +1,97 @@
/* GStreamer Editing Services
* Copyright (C) 2009 Edward Hervey <bilboed@bilboed.com>
*
* 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., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#include "ges-timeline-object.h"
/**
* GESTimelineObject
*
* Responsible for creating the TrackObject(s) for given TimelineTrack(s)
*
* Keeps a reference to the TrackObject(s) it created and sets/updates their properties.
*/
G_DEFINE_TYPE (GESTimelineObject, ges_timeline_object, G_TYPE_OBJECT)
#define GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), GES_TYPE_TIMELINE_OBJECT, GESTimelineObjectPrivate))
typedef struct _GESTimelineObjectPrivate GESTimelineObjectPrivate;
struct _GESTimelineObjectPrivate {
int dummy;
};
static void
ges_timeline_object_get_property (GObject *object, guint property_id,
GValue *value, GParamSpec *pspec)
{
switch (property_id) {
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
ges_timeline_object_set_property (GObject *object, guint property_id,
const GValue *value, GParamSpec *pspec)
{
switch (property_id) {
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
ges_timeline_object_dispose (GObject *object)
{
G_OBJECT_CLASS (ges_timeline_object_parent_class)->dispose (object);
}
static void
ges_timeline_object_finalize (GObject *object)
{
G_OBJECT_CLASS (ges_timeline_object_parent_class)->finalize (object);
}
static void
ges_timeline_object_class_init (GESTimelineObjectClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
g_type_class_add_private (klass, sizeof (GESTimelineObjectPrivate));
object_class->get_property = ges_timeline_object_get_property;
object_class->set_property = ges_timeline_object_set_property;
object_class->dispose = ges_timeline_object_dispose;
object_class->finalize = ges_timeline_object_finalize;
}
static void
ges_timeline_object_init (GESTimelineObject *self)
{
}
GESTimelineObject*
ges_timeline_object_new (void)
{
return g_object_new (GES_TYPE_TIMELINE_OBJECT, NULL);
}

59
src/ges-timeline-object.h Normal file
View file

@ -0,0 +1,59 @@
/* GStreamer Editing Services
* Copyright (C) 2009 Edward Hervey <bilboed@bilboed.com>
*
* 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., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef _GES_TIMELINE_OBJECT
#define _GES_TIMELINE_OBJECT
#include <glib-object.h>
G_BEGIN_DECLS
#define GES_TYPE_TIMELINE_OBJECT ges_timeline_object_get_type()
#define GES_TIMELINE_OBJECT(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GES_TYPE_TIMELINE_OBJECT, GESTimelineObject))
#define GES_TIMELINE_OBJECT_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), GES_TYPE_TIMELINE_OBJECT, GESTimelineObjectClass))
#define GES_IS_TIMELINE_OBJECT(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GES_TYPE_TIMELINE_OBJECT))
#define GES_IS_TIMELINE_OBJECT_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), GES_TYPE_TIMELINE_OBJECT))
#define GES_TIMELINE_OBJECT_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), GES_TYPE_TIMELINE_OBJECT, GESTimelineObjectClass))
typedef struct {
GObject parent;
} GESTimelineObject;
typedef struct {
GObjectClass parent_class;
} GESTimelineObjectClass;
GType ges_timeline_object_get_type (void);
GESTimelineObject* ges_timeline_object_new (void);
G_END_DECLS
#endif /* _GES_TIMELINE_OBJECT */

View file

@ -0,0 +1,92 @@
/* GStreamer Editing Services
* Copyright (C) 2009 Edward Hervey <bilboed@bilboed.com>
*
* 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., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#include "ges-timeline-pipeline.h"
/* TimelinePipeline
*
*/
G_DEFINE_TYPE (GESTimelinePipeline, ges_timeline_pipeline, GST_TYPE_PIPELINE)
#define GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), GEST_TYPE_TIMELINE_PIPELINE, GESTimelinePipelinePrivate))
typedef struct _GESTimelinePipelinePrivate GESTimelinePipelinePrivate;
struct _GESTimelinePipelinePrivate {
int dummy;
};
static void
ges_timeline_pipeline_get_property (GObject *object, guint property_id,
GValue *value, GParamSpec *pspec)
{
switch (property_id) {
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
ges_timeline_pipeline_set_property (GObject *object, guint property_id,
const GValue *value, GParamSpec *pspec)
{
switch (property_id) {
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
ges_timeline_pipeline_dispose (GObject *object)
{
G_OBJECT_CLASS (ges_timeline_pipeline_parent_class)->dispose (object);
}
static void
ges_timeline_pipeline_finalize (GObject *object)
{
G_OBJECT_CLASS (ges_timeline_pipeline_parent_class)->finalize (object);
}
static void
ges_timeline_pipeline_class_init (GESTimelinePipelineClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
g_type_class_add_private (klass, sizeof (GESTimelinePipelinePrivate));
object_class->get_property = ges_timeline_pipeline_get_property;
object_class->set_property = ges_timeline_pipeline_set_property;
object_class->dispose = ges_timeline_pipeline_dispose;
object_class->finalize = ges_timeline_pipeline_finalize;
}
static void
ges_timeline_pipeline_init (GESTimelinePipeline *self)
{
}
GESTimelinePipeline*
ges_timeline_pipeline_new (void)
{
return g_object_new (GEST_TYPE_TIMELINE_PIPELINE, NULL);
}

View file

@ -0,0 +1,59 @@
/* GStreamer Editing Services
* Copyright (C) 2009 Edward Hervey <bilboed@bilboed.com>
*
* 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., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef _GES_TIMELINE_PIPELINE
#define _GES_TIMELINE_PIPELINE
#include <glib-object.h>
G_BEGIN_DECLS
#define GEST_TYPE_TIMELINE_PIPELINE ges_timeline_pipeline_get_type()
#define GEST_TIMELINE_PIPELINE(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GEST_TYPE_TIMELINE_PIPELINE, GESTimelinePipeline))
#define GEST_TIMELINE_PIPELINE_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), GEST_TYPE_TIMELINE_PIPELINE, GESTimelinePipelineClass))
#define GEST_IS_TIMELINE_PIPELINE(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEST_TYPE_TIMELINE_PIPELINE))
#define GEST_IS_TIMELINE_PIPELINE_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), GEST_TYPE_TIMELINE_PIPELINE))
#define GEST_TIMELINE_PIPELINE_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), GEST_TYPE_TIMELINE_PIPELINE, GESTimelinePipelineClass))
typedef struct {
GstPipeline parent;
} GESTimelinePipeline;
typedef struct {
GstPipelineClass parent_class;
} GESTimelinePipelineClass;
GType ges_timeline_pipeline_get_type (void);
GESTimelinePipeline* ges_timeline_pipeline_new (void);
G_END_DECLS
#endif /* _GES_TIMELINE_PIPELINE */

88
src/ges-timeline-source.c Normal file
View file

@ -0,0 +1,88 @@
/* GStreamer Editing Services
* Copyright (C) 2009 Edward Hervey <bilboed@bilboed.com>
*
* 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., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#include "ges-timeline-source.h"
G_DEFINE_TYPE (GESTimelineSource, ges_timeline_source, GES_TIMELINE_OBJECT)
#define GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), GES_TYPE_TIMELINE_SOURCE, GESTimelineSourcePrivate))
typedef struct _GESTimelineSourcePrivate GESTimelineSourcePrivate;
struct _GESTimelineSourcePrivate {
int dummy;
};
static void
ges_timeline_source_get_property (GObject *object, guint property_id,
GValue *value, GParamSpec *pspec)
{
switch (property_id) {
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
ges_timeline_source_set_property (GObject *object, guint property_id,
const GValue *value, GParamSpec *pspec)
{
switch (property_id) {
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
ges_timeline_source_dispose (GObject *object)
{
G_OBJECT_CLASS (ges_timeline_source_parent_class)->dispose (object);
}
static void
ges_timeline_source_finalize (GObject *object)
{
G_OBJECT_CLASS (ges_timeline_source_parent_class)->finalize (object);
}
static void
ges_timeline_source_class_init (GESTimelineSourceClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
g_type_class_add_private (klass, sizeof (GESTimelineSourcePrivate));
object_class->get_property = ges_timeline_source_get_property;
object_class->set_property = ges_timeline_source_set_property;
object_class->dispose = ges_timeline_source_dispose;
object_class->finalize = ges_timeline_source_finalize;
}
static void
ges_timeline_source_init (GESTimelineSource *self)
{
}
GESTimelineSource*
ges_timeline_source_new (void)
{
return g_object_new (GES_TYPE_TIMELINE_SOURCE, NULL);
}

59
src/ges-timeline-source.h Normal file
View file

@ -0,0 +1,59 @@
/* GStreamer Editing Services
* Copyright (C) 2009 Edward Hervey <bilboed@bilboed.com>
*
* 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., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef _GES_TIMELINE_SOURCE
#define _GES_TIMELINE_SOURCE
#include <glib-object.h>
G_BEGIN_DECLS
#define GES_TYPE_TIMELINE_SOURCE ges_timeline_source_get_type()
#define GES_TIMELINE_SOURCE(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GES_TYPE_TIMELINE_SOURCE, GESTimelineSource))
#define GES_TIMELINE_SOURCE_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), GES_TYPE_TIMELINE_SOURCE, GESTimelineSourceClass))
#define GES_IS_TIMELINE_SOURCE(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GES_TYPE_TIMELINE_SOURCE))
#define GES_IS_TIMELINE_SOURCE_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), GES_TYPE_TIMELINE_SOURCE))
#define GES_TIMELINE_SOURCE_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), GES_TYPE_TIMELINE_SOURCE, GESTimelineSourceClass))
typedef struct {
GESTimelineObject parent;
} GESTimelineSource;
typedef struct {
GESTimelineObjectClass parent_class;
} GESTimelineSourceClass;
GType ges_timeline_source_get_type (void);
GESTimelineSource* ges_timeline_source_new (void);
G_END_DECLS
#endif /* _GES_TIMELINE_SOURCE */

View file

@ -0,0 +1,88 @@
/* GStreamer Editing Services
* Copyright (C) 2009 Edward Hervey <bilboed@bilboed.com>
*
* 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., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#include "ges-timeline-transition.h"
G_DEFINE_TYPE (GESTimelineTransition, ges_timeline_transition, GES_TIMELINE_OBJECT)
#define GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), GES_TYPE_TIMELINE_TRANSITION, GESTimelineTransitionPrivate))
typedef struct _GESTimelineTransitionPrivate GESTimelineTransitionPrivate;
struct _GESTimelineTransitionPrivate {
int dummy;
};
static void
ges_timeline_transition_get_property (GObject *object, guint property_id,
GValue *value, GParamSpec *pspec)
{
switch (property_id) {
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
ges_timeline_transition_set_property (GObject *object, guint property_id,
const GValue *value, GParamSpec *pspec)
{
switch (property_id) {
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
ges_timeline_transition_dispose (GObject *object)
{
G_OBJECT_CLASS (ges_timeline_transition_parent_class)->dispose (object);
}
static void
ges_timeline_transition_finalize (GObject *object)
{
G_OBJECT_CLASS (ges_timeline_transition_parent_class)->finalize (object);
}
static void
ges_timeline_transition_class_init (GESTimelineTransitionClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
g_type_class_add_private (klass, sizeof (GESTimelineTransitionPrivate));
object_class->get_property = ges_timeline_transition_get_property;
object_class->set_property = ges_timeline_transition_set_property;
object_class->dispose = ges_timeline_transition_dispose;
object_class->finalize = ges_timeline_transition_finalize;
}
static void
ges_timeline_transition_init (GESTimelineTransition *self)
{
}
GESTimelineTransition*
ges_timeline_transition_new (void)
{
return g_object_new (GES_TYPE_TIMELINE_TRANSITION, NULL);
}

View file

@ -0,0 +1,58 @@
/* GStreamer Editing Services
* Copyright (C) 2009 Edward Hervey <bilboed@bilboed.com>
*
* 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., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef _GES_TIMELINE_TRANSITION
#define _GES_TIMELINE_TRANSITION
#include <glib-object.h>
G_BEGIN_DECLS
#define GES_TYPE_TIMELINE_TRANSITION ges_timeline_transition_get_type()
#define GES_TIMELINE_TRANSITION(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GES_TYPE_TIMELINE_TRANSITION, GESTimelineTransition))
#define GES_TIMELINE_TRANSITION_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), GES_TYPE_TIMELINE_TRANSITION, GESTimelineTransitionClass))
#define GES_IS_TIMELINE_TRANSITION(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GES_TYPE_TIMELINE_TRANSITION))
#define GES_IS_TIMELINE_TRANSITION_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), GES_TYPE_TIMELINE_TRANSITION))
#define GES_TIMELINE_TRANSITION_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), GES_TYPE_TIMELINE_TRANSITION, GESTimelineTransitionClass))
typedef struct {
GESTimelineObject parent;
} GESTimelineTransition;
typedef struct {
GESTimelineObjectClass parent_class;
} GESTimelineTransitionClass;
GType ges_timeline_transition_get_type (void);
GESTimelineTransition* ges_timeline_transition_new (void);
G_END_DECLS
#endif /* _GES_TIMELINE_TRANSITION */

154
src/ges-timeline.c Normal file
View file

@ -0,0 +1,154 @@
/* GStreamer Editing Services
* Copyright (C) 2009 Edward Hervey <bilboed@bilboed.com>
*
* 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., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#include "ges-timeline.h"
/**
* GESTimelinePipeline
*
* Top-level container for pipelines
*
* Contains a list of TimelineLayer which users should use to arrange the
* various timeline objects.
*
*/
G_DEFINE_TYPE (GESTimeline, ges_timeline, GST_TYPE_BIN)
#define GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), GES_TYPE_TIMELINE, GESTimelinePrivate))
typedef struct _GESTimelinePrivate GESTimelinePrivate;
struct _GESTimelinePrivate {
GList *tracks; /* TimelineTracks */
};
static void
ges_timeline_get_property (GObject *object, guint property_id,
GValue *value, GParamSpec *pspec)
{
switch (property_id) {
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
ges_timeline_set_property (GObject *object, guint property_id,
const GValue *value, GParamSpec *pspec)
{
switch (property_id) {
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
ges_timeline_dispose (GObject *object)
{
G_OBJECT_CLASS (ges_timeline_parent_class)->dispose (object);
}
static void
ges_timeline_finalize (GObject *object)
{
G_OBJECT_CLASS (ges_timeline_parent_class)->finalize (object);
}
static void
ges_timeline_class_init (GESTimelineClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
g_type_class_add_private (klass, sizeof (GESTimelinePrivate));
object_class->get_property = ges_timeline_get_property;
object_class->set_property = ges_timeline_set_property;
object_class->dispose = ges_timeline_dispose;
object_class->finalize = ges_timeline_finalize;
}
static void
ges_timeline_init (GESTimeline *self)
{
self->layers = NULL;
self->tracks = NULL;
}
GESTimeline*
ges_timeline_new (void)
{
return g_object_new (GES_TYPE_TIMELINE, NULL);
}
GESTimeline*
ges_timeline_load_from_uri (gchar *uri)
{
/* FIXME : IMPLEMENT */
return NULL;
}
gboolean
ges_timeline_save (GESTimeline *timeline, gchar *uri)
{
/* FIXME : IMPLEMENT */
return FALSE;
}
gboolean
ges_timeline_add_layer (GESTimeline *timeline, GESTimelineLayer *layer)
{
/* FIXME : IMPLEMENT */
/* Add to the list of layers, make sure we don't already control it */
/* Assign Tracks to it */
return FALSE;
}
gboolean
ges_timeline_remove_layer (GESTimeline *timeline, GESTimelineLayer *layer)
{
/* FIXME : IMPLEMENT */
/* Unassign tracks from the given layer */
return FALSE;
}
gboolean
ges_timeline_add_track (GESTimeline *timeline, GESTrack *track)
{
/* FIXME : IMPLEMENT */
/* Add to the list of tracks, make sure we don't already control it */
return FALSE;
}
gboolean
ges_timeline_remove_track (GESTimeline *timeline, GESTrack *track)
{
/* FIXME : IMPLEMENT */
/* Signal track removal to all layers/objects */
/* */
}

74
src/ges-timeline.h Normal file
View file

@ -0,0 +1,74 @@
/* GStreamer Editing Services
* Copyright (C) 2009 Edward Hervey <bilboed@bilboed.com>
*
* 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., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef _GES_TIMELINE
#define _GES_TIMELINE
#include <glib-object.h>
#include <gst/gst.h>
G_BEGIN_DECLS
#define GES_TYPE_TIMELINE ges_timeline_get_type()
#define GES_TIMELINE(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GES_TYPE_TIMELINE, GESTimeline))
#define GES_TIMELINE_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), GES_TYPE_TIMELINE, GESTimelineClass))
#define GES_IS_TIMELINE(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GES_TYPE_TIMELINE))
#define GES_IS_TIMELINE_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), GES_TYPE_TIMELINE))
#define GES_TIMELINE_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), GES_TYPE_TIMELINE, GESTimelineClass))
typedef struct {
GstBin parent;
GList *layers; /* TimelineLayer(s) ordered by priority */
GList *tracks; /* TimelineTrack(s) */
} GESTimeline;
typedef struct {
GstBinClass parent_class;
} GESTimelineClass;
GType ges_timeline_get_type (void);
GESTimeline* ges_timeline_new (void);
GESTimeline* ges_timeline_load_from_uri (gchar *uri);
gboolean ges_timeline_save (GESTimeline *timeline, gchar *uri);
gboolean ges_timeline_add_layer (GESTimeline *timeline, GESTimelineLayer *layer);
gboolean ges_timeline_remove_layer (GESTimeline *timeline, GESTimelineLayer *layer);
gboolean ges_timeline_add_track (GESTimeline *timeline, GESTrack *track);
gboolean ges_timeline_remove_track (GESTimeline *timeline, GESTrack *track);
G_END_DECLS
#endif /* _GES_TIMELINE */

96
src/ges-track.c Normal file
View file

@ -0,0 +1,96 @@
/* GStreamer Editing Services
* Copyright (C) 2009 Edward Hervey <bilboed@bilboed.com>
*
* 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., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#include "ges-track.h"
/**
* GESTrack
*
* Corresponds to one output format (i.e. audio OR video)
*
* Contains the compatible TrackObject(s)
*/
G_DEFINE_TYPE (GESTrack, ges_track, GST_TYPE_BIN)
#define GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), GES_TYPE_TRACK, GESTrackPrivate))
typedef struct _GESTrackPrivate GESTrackPrivate;
struct _GESTrackPrivate {
int dummy;
};
static void
ges_track_get_property (GObject *object, guint property_id,
GValue *value, GParamSpec *pspec)
{
switch (property_id) {
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
ges_track_set_property (GObject *object, guint property_id,
const GValue *value, GParamSpec *pspec)
{
switch (property_id) {
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
}
static void
ges_track_dispose (GObject *object)
{
G_OBJECT_CLASS (ges_track_parent_class)->dispose (object);
}
static void
ges_track_finalize (GObject *object)
{
G_OBJECT_CLASS (ges_track_parent_class)->finalize (object);
}
static void
ges_track_class_init (GESTrackClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
g_type_class_add_private (klass, sizeof (GESTrackPrivate));
object_class->get_property = ges_track_get_property;
object_class->set_property = ges_track_set_property;
object_class->dispose = ges_track_dispose;
object_class->finalize = ges_track_finalize;
}
static void
ges_track_init (GESTrack *self)
{
}
GESTrack*
ges_track_new (void)
{
return g_object_new (GES_TYPE_TRACK, NULL);
}

61
src/ges-track.h Normal file
View file

@ -0,0 +1,61 @@
/* GStreamer Editing Services
* Copyright (C) 2009 Edward Hervey <bilboed@bilboed.com>
*
* 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., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef _GES_TRACK
#define _GES_TRACK
#include <glib-object.h>
G_BEGIN_DECLS
#define GES_TYPE_TRACK ges_track_get_type()
#define GES_TRACK(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), GES_TYPE_TRACK, GESTrack))
#define GES_TRACK_CLASS(klass) \
(G_TYPE_CHECK_CLASS_CAST ((klass), GES_TYPE_TRACK, GESTrackClass))
#define GES_IS_TRACK(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE ((obj), GES_TYPE_TRACK))
#define GES_IS_TRACK_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE ((klass), GES_TYPE_TRACK))
#define GES_TRACK_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), GES_TYPE_TRACK, GESTrackClass))
typedef struct {
GstBin parent;
} GESTrack;
typedef struct {
GstBinClass parent_class;
} GESTrackClass;
GType ges_track_get_type (void);
GESTrack* ges_track_new (void);
gboolean ges_track_add_object (GESTrack *track, GESTrackObject * object);
G_END_DECLS
#endif /* _GES_TRACK */