mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-16 13:26:36 +00:00
Initial code drop
This commit is contained in:
commit
ee8bf88ebf
21 changed files with 1769 additions and 0 deletions
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
[submodule "common"]
|
||||
path = common
|
||||
url = git://anongit.freedesktop.org/gstreamer/common
|
39
Makefile.am
Normal file
39
Makefile.am
Normal 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
67
README
Normal 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
120
autogen.sh
Executable 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
254
configure.ac
Normal 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
|
88
src/ges-simple-timeline-layer.c
Normal file
88
src/ges-simple-timeline-layer.c
Normal 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);
|
||||
}
|
||||
|
60
src/ges-simple-timeline-layer.h
Normal file
60
src/ges-simple-timeline-layer.h
Normal 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
94
src/ges-timeline-layer.c
Normal 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
59
src/ges-timeline-layer.h
Normal 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
97
src/ges-timeline-object.c
Normal 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
59
src/ges-timeline-object.h
Normal 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 */
|
||||
|
92
src/ges-timeline-pipeline.c
Normal file
92
src/ges-timeline-pipeline.c
Normal 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);
|
||||
}
|
||||
|
59
src/ges-timeline-pipeline.h
Normal file
59
src/ges-timeline-pipeline.h
Normal 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
88
src/ges-timeline-source.c
Normal 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
59
src/ges-timeline-source.h
Normal 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 */
|
||||
|
88
src/ges-timeline-transition.c
Normal file
88
src/ges-timeline-transition.c
Normal 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);
|
||||
}
|
||||
|
58
src/ges-timeline-transition.h
Normal file
58
src/ges-timeline-transition.h
Normal 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
154
src/ges-timeline.c
Normal 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
74
src/ges-timeline.h
Normal 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
96
src/ges-track.c
Normal 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
61
src/ges-track.h
Normal 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 */
|
||||
|
Loading…
Reference in a new issue