ges: Implement GESAudioTrack and GESVideoTrack, subclasses of GESTrack

This commit is contained in:
Thibault Saunier 2013-03-28 18:51:45 +01:00
parent ea95cb1ee3
commit 9b14c001b0
33 changed files with 431 additions and 131 deletions

View file

@ -111,6 +111,12 @@ platform as well as Windows. It is released under the GNU Library General Public
<xi:include href="xml/ges-project.xml"/>
</chapter>
<chapter>
<title>Tracks</title>
<xi:include href="xml/ges-video-track.xml"/>
<xi:include href="xml/ges-audio-track.xml"/>
</chapter>
<chapter id="ges-hierarchy">
<title>Object Hierarchy</title>
<xi:include href="xml/tree_index.sgml"/>

View file

@ -69,8 +69,6 @@ ges_track_type_name
<TITLE>GESTrack</TITLE>
GESTrack
GESCreateElementForGapFunc
ges_track_audio_raw_new
ges_track_video_raw_new
ges_track_new
ges_track_add_element
ges_track_remove_element
@ -79,7 +77,6 @@ ges_track_get_caps
ges_track_enable_update
ges_track_get_elements
ges_track_is_updating
ges_track_set_create_element_for_gap_func
<SUBSECTION Standard>
GESTrackClass
GESTrackPrivate
@ -94,6 +91,38 @@ GES_TRACK_GET_CLASS
GES_TYPE_TRACK
</SECTION>
<SECTION>
<FILE>ges-audio-track</FILE>
<TITLE>GESAudioTrack</TITLE>
GESAudioTrack
ges_audio_track_new
<SUBSECTION Standard>
GESAudioTrackClass
GESAudioTrackPrivate
GES_IS_AUDIO_TRACK
GES_IS_AUDIO_TRACK_CLASS
GES_AUDIO_TRACK
GES_AUDIO_TRACK_CLASS
GES_AUDIO_TRACK_GET_CLASS
GES_TYPE_AUDIO_TRACK
</SECTION>
<SECTION>
<FILE>ges-video-track</FILE>
<TITLE>GESVideoTrack</TITLE>
GESVideoTrack
ges_video_track_new
<SUBSECTION Standard>
GESVideoTrackClass
GESVideoTrackPrivate
GES_IS_VIDEO_TRACK
GES_IS_VIDEO_TRACK_CLASS
GES_VIDEO_TRACK
GES_VIDEO_TRACK_CLASS
GES_VIDEO_TRACK_GET_CLASS
GES_TYPE_VIDEO_TRACK
</SECTION>
<SECTION>
<FILE>ges-track-element</FILE>
<TITLE>GESTrackElement</TITLE>

View file

@ -30,6 +30,8 @@ libges_@GST_API_VERSION@_la_SOURCES = \
ges-overlay-clip.c \
ges-text-overlay-clip.c \
ges-track.c \
ges-audio-track.c \
ges-video-track.c \
ges-track-element.c \
ges-source.c \
ges-operation.c \
@ -89,6 +91,8 @@ libges_@GST_API_VERSION@include_HEADERS = \
ges-base-effect.h \
ges-effect.h \
ges-track.h \
ges-audio-track.h \
ges-video-track.h \
ges-track-element.h \
ges-source.h \
ges-operation.h \

106
ges/ges-audio-track.c Normal file
View file

@ -0,0 +1,106 @@
/* GStreamer Editing Services
* Copyright (C) <2013> Thibault Saunier <thibault.saunier@collabora.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., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
/**
* SECTION: ges-audio-track:
* @short_description: A standard GESTrack for raw audio
*/
#include "ges-audio-track.h"
#define DEFAULT_CAPS "audio/x-raw"
struct _GESAudioTrackPrivate
{
gpointer nothing;
};
G_DEFINE_TYPE (GESAudioTrack, ges_audio_track, GES_TYPE_TRACK);
/****************************************************
* Private methods and utils *
****************************************************/
static GstElement *
create_element_for_raw_audio_gap (GESTrack * track)
{
GstElement *elem;
elem = gst_element_factory_make ("audiotestsrc", NULL);
g_object_set (elem, "wave", 4, NULL);
return elem;
}
/****************************************************
* GObject vmethods implementations *
****************************************************/
static void
ges_audio_track_init (GESAudioTrack * self)
{
self->priv = G_TYPE_INSTANCE_GET_PRIVATE ((self), GES_TYPE_AUDIO_TRACK,
GESAudioTrackPrivate);
}
static void
ges_audio_track_finalize (GObject * object)
{
/* TODO: Add deinitalization code here */
G_OBJECT_CLASS (ges_audio_track_parent_class)->finalize (object);
}
static void
ges_audio_track_class_init (GESAudioTrackClass * klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
/* GESTrackClass *parent_class = GES_TRACK_CLASS (klass);
*/
g_type_class_add_private (klass, sizeof (GESAudioTrackPrivate));
object_class->finalize = ges_audio_track_finalize;
}
/****************************************************
* API implementation *
****************************************************/
/**
* ges_audio_track_new:
*
* Creates a new #GESAudioTrack of type #GES_TRACK_TYPE_AUDIO and with generic
* raw audio caps ("audio/x-raw");
*
* Returns: A new #GESTrack
*/
GESVideoTrack *
ges_audio_track_new (void)
{
GESVideoTrack *ret;
GstCaps *caps = gst_caps_from_string (DEFAULT_CAPS);
ret = g_object_new (GES_TYPE_AUDIO_TRACK, "caps", caps,
"track-type", GES_TRACK_TYPE_AUDIO, NULL);
ges_track_set_create_element_for_gap_func (GES_TRACK (ret),
create_element_for_raw_audio_gap);
return ret;
}

55
ges/ges-audio-track.h Normal file
View file

@ -0,0 +1,55 @@
/* GStreamer Editing Services
* Copyright (C) <2013> Thibault Saunier <thibault.saunier@collabora.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., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef _GES_AUDIO_TRACK_H_
#define _GES_AUDIO_TRACK_H_
#include <glib-object.h>
#include "ges-track.h"
#include "ges-types.h"
G_BEGIN_DECLS
#define GES_TYPE_AUDIO_TRACK (ges_audio_track_get_type ())
#define GES_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GES_TYPE_AUDIO_TRACK, GESAudioTrack))
#define GES_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GES_TYPE_AUDIO_TRACK, GESAudioTrackClass))
#define GES_IS_AUDIO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GES_TYPE_AUDIO_TRACK))
#define GES_IS_AUDIO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GES_TYPE_AUDIO_TRACK))
#define GES_AUDIO_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GES_TYPE_AUDIO_TRACK, GESAudioTrackClass))
typedef struct _GESAudioTrackPrivate GESAudioTrackPrivate;
struct _GESAudioTrackClass
{
GESTrackClass parent_class;
};
struct _GESAudioTrack
{
GESTrack parent_instance;
GESAudioTrackPrivate *priv;
};
GType ges_audio_track_get_type (void) G_GNUC_CONST;
GESVideoTrack* ges_audio_track_new (void);
G_END_DECLS
#endif /* _GES_AUDIO_TRACK_H_ */

View file

@ -184,8 +184,8 @@ create_tracks (GESFormatter * self)
return TRUE;
}
priv->tracka = ges_track_audio_raw_new ();
priv->trackv = ges_track_video_raw_new ();
priv->tracka = GES_TRACK (ges_audio_track_new ());
priv->trackv = GES_TRACK (ges_video_track_new ());
if (!ges_timeline_add_track (self->timeline, priv->trackv)) {
return FALSE;

View file

@ -33,6 +33,8 @@
#include "ges-track.h"
#include "ges-track-element.h"
#include "ges-meta-container.h"
#include "ges-video-track.h"
#include "ges-audio-track.h"
G_DEFINE_TYPE_WITH_CODE (GESTrack, ges_track, GST_TYPE_BIN,
G_IMPLEMENT_INTERFACE (GES_TYPE_META_CONTAINER, NULL));
@ -307,26 +309,6 @@ composition_duration_cb (GstElement * composition,
}
}
/* GESCreateElementForGapFunc Gaps filler for raw tracks */
static GstElement *
create_element_for_raw_audio_gap (GESTrack * track)
{
GstElement *elem;
elem = gst_element_factory_make ("audiotestsrc", NULL);
g_object_set (elem, "wave", 4, NULL);
return elem;
}
static GstElement *
create_element_for_raw_video_gap (GESTrack * track)
{
return gst_parse_bin_from_description
("videotestsrc pattern=2 name=src ! capsfilter caps=video/x-raw", TRUE,
NULL);
}
/* FIXME: Find out how to avoid doing this "hack" using the GDestroyNotify
* function pointer in the trackelements_by_start GSequence
*
@ -580,74 +562,38 @@ ges_track_new (GESTrackType type, GstCaps * caps)
GESTrack *track;
GstCaps *tmpcaps;
track = g_object_new (GES_TYPE_TRACK, "caps", caps, "track-type", type, NULL);
/* TODO Be smarter with well known track types */
if (type == GES_TRACK_TYPE_VIDEO) {
tmpcaps = gst_caps_new_empty_simple ("video/x-raw");
if (gst_caps_is_equal (caps, tmpcaps))
ges_track_set_create_element_for_gap_func (track,
create_element_for_raw_video_gap);
if (gst_caps_is_subset (caps, tmpcaps)) {
track = GES_TRACK (ges_video_track_new ());
ges_track_set_caps (track, caps);
gst_caps_unref (tmpcaps);
return track;
}
gst_caps_unref (tmpcaps);
} else if (type == GES_TRACK_TYPE_AUDIO) {
tmpcaps = gst_caps_new_empty_simple ("audio/x-raw");
if (gst_caps_is_equal (caps, tmpcaps))
ges_track_set_create_element_for_gap_func (track,
create_element_for_raw_audio_gap);
if (gst_caps_is_subset (caps, tmpcaps)) {
track = GES_TRACK (ges_audio_track_new ());
ges_track_set_caps (track, caps);
gst_caps_unref (tmpcaps);
return track;
}
gst_caps_unref (tmpcaps);
}
track = g_object_new (GES_TYPE_TRACK, "caps", caps, "track-type", type, NULL);
gst_caps_unref (caps);
return track;
}
/**
* ges_track_video_raw_new:
*
* Creates a new #GESTrack of type #GES_TRACK_TYPE_VIDEO and with generic
* raw video caps ("video/x-raw");
*
* Returns: A new #GESTrack.
*/
GESTrack *
ges_track_video_raw_new (void)
{
GESTrack *track;
GstCaps *caps = gst_caps_new_empty_simple ("video/x-raw");
track = ges_track_new (GES_TRACK_TYPE_VIDEO, caps);
ges_track_set_create_element_for_gap_func (track,
create_element_for_raw_video_gap);
GST_DEBUG_OBJECT (track, "New raw video track");
return track;
}
/**
* ges_track_audio_raw_new:
*
* Creates a new #GESTrack of type #GES_TRACK_TYPE_AUDIO and with generic
* raw audio caps ("audio/x-raw");
*
* Returns: A new #GESTrack.
*/
GESTrack *
ges_track_audio_raw_new (void)
{
GESTrack *track;
GstCaps *caps = gst_caps_new_empty_simple ("audio/x-raw");
track = ges_track_new (GES_TRACK_TYPE_AUDIO, caps);
ges_track_set_create_element_for_gap_func (track,
create_element_for_raw_audio_gap);
GST_DEBUG_OBJECT (track, "New raw audio track %p",
track->priv->create_element_for_gaps);
return track;
}
/**
* ges_track_set_timeline:
@ -895,7 +841,7 @@ ges_track_commit (GESTrack * track)
*
* Sets the function that should be used to create the GstElement used to fill gaps.
* To avoid to provide such a function we advice you to use the
* #ges_track_audio_raw_new and #ges_track_video_raw_new constructor when possible.
* #ges_audio_track_new and #ges_video_track_new constructor when possible.
*/
void
ges_track_set_create_element_for_gap_func (GESTrack * track,

View file

@ -91,8 +91,6 @@ void ges_track_set_create_element_for_gap_func (GESTrack *track, G
/* standard methods */
GType ges_track_get_type (void);
GESTrack* ges_track_video_raw_new (void);
GESTrack* ges_track_audio_raw_new (void);
GESTrack* ges_track_new (GESTrackType type, GstCaps * caps);
G_END_DECLS

View file

@ -164,4 +164,10 @@ typedef struct _GESProjectClass GESProjectClass;
typedef struct _GESExtractable GESExtractable;
typedef struct _GESExtractableInterface GESExtractableInterface;
typedef struct _GESVideoTrackClass GESVideoTrackClass;
typedef struct _GESVideoTrack GESVideoTrack;
typedef struct _GESAudioTrackClass GESAudioTrackClass;
typedef struct _GESAudioTrack GESAudioTrack;
#endif /* __GES_TYPES_H__ */

View file

@ -47,8 +47,8 @@ ges_timeline_new_audio_video (void)
/* This is our main GESTimeline */
timeline = ges_timeline_new ();
tracka = ges_track_audio_raw_new ();
trackv = ges_track_video_raw_new ();
tracka = GES_TRACK (ges_audio_track_new ());
trackv = GES_TRACK (ges_video_track_new ());
if (!ges_timeline_add_track (timeline, trackv) ||
!ges_timeline_add_track (timeline, tracka)) {

94
ges/ges-video-track.c Normal file
View file

@ -0,0 +1,94 @@
/* GStreamer Editing Services
* Copyright (C) <2013> Thibault Saunier <thibault.saunier@collabora.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., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
/**
* SECTION: ges-video-track:
* @short_description: A standard GESTrack for raw video
*/
#include "ges-video-track.h"
struct _GESVideoTrackPrivate
{
gpointer nothing;
};
#define GES_VIDEO_TRACK_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GES_TYPE_VIDEO_TRACK, GESVideoTrackPrivate))
G_DEFINE_TYPE (GESVideoTrack, ges_video_track, GES_TYPE_TRACK);
static GstElement *
create_element_for_raw_video_gap (GESTrack * track)
{
return gst_parse_bin_from_description
("videotestsrc pattern=2 name=src ! capsfilter caps=video/x-raw", TRUE,
NULL);
}
static void
ges_video_track_init (GESVideoTrack * ges_video_track)
{
/* GESVideoTrackPrivate *priv = GES_VIDEO_TRACK_GET_PRIVATE (ges_video_track);
*/
/* TODO: Add initialization code here */
}
static void
ges_video_track_finalize (GObject * object)
{
/* TODO: Add deinitalization code here */
G_OBJECT_CLASS (ges_video_track_parent_class)->finalize (object);
}
static void
ges_video_track_class_init (GESVideoTrackClass * klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
/* GESTrackClass *parent_class = GES_TRACK_CLASS (klass);
*/
g_type_class_add_private (klass, sizeof (GESVideoTrackPrivate));
object_class->finalize = ges_video_track_finalize;
}
/**
* ges_video_track_new:
*
* Creates a new #GESVideoTrack of type #GES_TRACK_TYPE_VIDEO and with generic
* raw video caps ("video/x-raw");
*
* Returns: A new #GESTrack.
*/
GESVideoTrack *
ges_video_track_new (void)
{
GESVideoTrack *ret;
GstCaps *caps = gst_caps_new_empty_simple ("video/x-raw");
ret = g_object_new (GES_TYPE_VIDEO_TRACK, "track-type", GES_TRACK_TYPE_VIDEO,
"caps", caps, NULL);
ges_track_set_create_element_for_gap_func (GES_TRACK (ret),
create_element_for_raw_video_gap);
return ret;
}

54
ges/ges-video-track.h Normal file
View file

@ -0,0 +1,54 @@
/* GStreamer Editing Services
* Copyright (C) <2013> Thibault Saunier <thibault.saunier@collabora.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., 51 Franklin St, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef _GES_VIDEO_TRACK_H_
#define _GES_VIDEO_TRACK_H_
#include <glib-object.h>
#include "ges-track.h"
#include "ges-types.h"
G_BEGIN_DECLS
#define GES_TYPE_VIDEO_TRACK (ges_video_track_get_type ())
#define GES_VIDEO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GES_TYPE_VIDEO_TRACK, GESVideoTrack))
#define GES_VIDEO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GES_TYPE_VIDEO_TRACK, GESVideoTrackClass))
#define GES_IS_VIDEO_TRACK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GES_TYPE_VIDEO_TRACK))
#define GES_IS_VIDEO_TRACK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GES_TYPE_VIDEO_TRACK))
#define GES_VIDEO_TRACK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GES_TYPE_VIDEO_TRACK, GESVideoTrackClass))
typedef struct _GESVideoTrackPrivate GESVideoTrackPrivate;
struct _GESVideoTrackClass
{
GESTrackClass parent_class;
};
struct _GESVideoTrack
{
GESTrack parent_instance;
GESVideoTrackPrivate *priv;
};
GType ges_video_track_get_type (void) G_GNUC_CONST;
GESVideoTrack * ges_video_track_new (void);
G_END_DECLS
#endif /* _GES_VIDEO_TRACK_H_ */

View file

@ -76,6 +76,8 @@
#include <ges/ges-utils.h>
#include <ges/ges-meta-container.h>
#include <ges/ges-gerror.h>
#include <ges/ges-audio-track.h>
#include <ges/ges-video-track.h>
G_BEGIN_DECLS

View file

@ -133,8 +133,8 @@ GST_START_TEST (test_test_source_in_layer)
timeline = ges_timeline_new ();
layer = (GESLayer *) ges_simple_layer_new ();
a = ges_track_audio_raw_new ();
v = ges_track_video_raw_new ();
a = GES_TRACK (ges_audio_track_new ());
v = GES_TRACK (ges_video_track_new ());
ges_timeline_add_track (timeline, a);
ges_timeline_add_track (timeline, v);
@ -258,7 +258,7 @@ GST_START_TEST (test_gap_filling_basic)
ges_init ();
track = ges_track_audio_raw_new ();
track = GES_TRACK (ges_audio_track_new ());
fail_unless (track != NULL);
composition = find_composition (track);
@ -358,14 +358,14 @@ GST_START_TEST (test_gap_filling_empty_track)
ges_init ();
track = ges_track_audio_raw_new ();
track = GES_TRACK(ges_audio_track_new ());
layer = ges_layer_new ();
timeline = ges_timeline_new ();
fail_unless (timeline != NULL);
fail_unless (ges_timeline_add_layer (timeline, layer));
fail_unless (ges_timeline_add_track (timeline, track));
fail_unless (ges_timeline_add_track (timeline, ges_track_video_raw_new ()));
fail_unless (ges_timeline_add_track (timeline, GES_TRACK(ges_video_track_new ())));
/* Set some properties */
asset = ges_asset_request (GES_TYPE_TEST_CLIP, NULL, NULL);

View file

@ -225,8 +225,8 @@ GST_START_TEST (test_clip_group_ungroup)
timeline = ges_timeline_new ();
layer = ges_layer_new ();
audio_track = ges_track_audio_raw_new ();
video_track = ges_track_video_raw_new ();
audio_track = GES_TRACK (ges_audio_track_new ());
video_track = GES_TRACK (ges_video_track_new ());
fail_unless (ges_timeline_add_track (timeline, audio_track));
fail_unless (ges_timeline_add_track (timeline, video_track));
@ -349,7 +349,7 @@ GST_START_TEST (test_clip_refcount_remove_child)
ges_init ();
clip = GES_CLIP (ges_test_clip_new ());
track = ges_track_audio_raw_new ();
track = GES_TRACK (ges_audio_track_new ());
effect = GES_TRACK_ELEMENT (ges_effect_new ("identity"));
fail_unless (ges_track_add_element (track, effect));

View file

@ -50,8 +50,8 @@ GST_START_TEST (test_add_effect_to_clip)
timeline = ges_timeline_new ();
layer = (GESLayer *) ges_simple_layer_new ();
track_audio = ges_track_audio_raw_new ();
track_video = ges_track_video_raw_new ();
track_audio = GES_TRACK (ges_audio_track_new ());
track_video = GES_TRACK (ges_video_track_new ());
ges_timeline_add_track (timeline, track_audio);
ges_timeline_add_track (timeline, track_video);
@ -97,7 +97,7 @@ GST_START_TEST (test_get_effects_from_tl)
timeline = ges_timeline_new ();
layer = (GESLayer *) ges_simple_layer_new ();
track_video = ges_track_video_raw_new ();
track_video = GES_TRACK (ges_video_track_new ());
ges_timeline_add_track (timeline, track_video);
ges_timeline_add_layer (timeline, layer);
@ -175,8 +175,8 @@ GST_START_TEST (test_effect_clip)
timeline = ges_timeline_new ();
layer = (GESLayer *) ges_simple_layer_new ();
track_audio = ges_track_audio_raw_new ();
track_video = ges_track_video_raw_new ();
track_audio = GES_TRACK (ges_audio_track_new ());
track_video = GES_TRACK (ges_video_track_new ());
ges_timeline_add_track (timeline, track_audio);
ges_timeline_add_track (timeline, track_video);
@ -245,8 +245,8 @@ GST_START_TEST (test_priorities_clip)
timeline = ges_timeline_new ();
layer = (GESLayer *) ges_simple_layer_new ();
track_audio = ges_track_audio_raw_new ();
track_video = ges_track_video_raw_new ();
track_audio = GES_TRACK (ges_audio_track_new ());
track_video = GES_TRACK (ges_video_track_new ());
ges_timeline_add_track (timeline, track_audio);
ges_timeline_add_track (timeline, track_video);
@ -341,7 +341,7 @@ GST_START_TEST (test_effect_set_properties)
timeline = ges_timeline_new ();
layer = (GESLayer *) ges_simple_layer_new ();
track_video = ges_track_video_raw_new ();
track_video = GES_TRACK (ges_video_track_new ());
ges_timeline_add_track (timeline, track_video);
ges_timeline_add_layer (timeline, layer);
@ -429,7 +429,7 @@ GST_START_TEST (test_clip_signals)
timeline = ges_timeline_new ();
layer = (GESLayer *) ges_simple_layer_new ();
track_video = ges_track_video_raw_new ();
track_video = GES_TRACK (ges_video_track_new ());
ges_timeline_add_track (timeline, track_video);
ges_timeline_add_layer (timeline, layer);

View file

@ -158,7 +158,7 @@ GST_START_TEST (test_layer_priorities)
fail_unless_equals_int (ges_layer_get_priority (layer2), 1);
fail_unless_equals_int (ges_layer_get_priority (layer3), 2);
track = ges_track_video_raw_new ();
track = GES_TRACK (ges_video_track_new ());
fail_unless (track != NULL);
fail_unless (ges_timeline_add_track (timeline, track));

View file

@ -122,8 +122,8 @@ GST_START_TEST (test_overlay_in_layer)
timeline = ges_timeline_new ();
layer = (GESLayer *) ges_simple_layer_new ();
a = ges_track_audio_raw_new ();
v = ges_track_video_raw_new ();
a = GES_TRACK (ges_audio_track_new ());
v = GES_TRACK (ges_video_track_new ());
ges_timeline_add_track (timeline, a);
ges_timeline_add_track (timeline, v);

View file

@ -35,8 +35,8 @@ GST_START_TEST (test_text_properties_in_layer)
timeline = ges_timeline_new ();
layer = (GESLayer *) ges_simple_layer_new ();
a = ges_track_audio_raw_new ();
v = ges_track_video_raw_new ();
a = GES_TRACK (ges_audio_track_new ());
v = GES_TRACK (ges_video_track_new ());
ges_timeline_add_track (timeline, a);
ges_timeline_add_track (timeline, v);

View file

@ -63,7 +63,7 @@ GST_START_TEST (test_basic_timeline_edition)
ges_init ();
track = ges_track_audio_raw_new ();
track = GES_TRACK (ges_audio_track_new ());
fail_unless (track != NULL);
timeline = ges_timeline_new ();

View file

@ -45,7 +45,7 @@ GST_START_TEST (test_title_source_properties)
ges_init ();
track = ges_track_video_raw_new ();
track = GES_TRACK (ges_video_track_new ());
fail_unless (track != NULL);
layer = ges_layer_new ();
fail_unless (layer != NULL);
@ -122,8 +122,8 @@ GST_START_TEST (test_title_source_in_layer)
timeline = ges_timeline_new ();
layer = (GESLayer *) ges_simple_layer_new ();
a = ges_track_audio_raw_new ();
v = ges_track_video_raw_new ();
a = GES_TRACK (ges_audio_track_new ());
v = GES_TRACK (ges_video_track_new ());
ges_timeline_add_track (timeline, a);
ges_timeline_add_track (timeline, v);

View file

@ -35,7 +35,7 @@ GST_START_TEST (test_transition_basic)
ges_init ();
track = ges_track_video_raw_new ();
track = GES_TRACK (ges_video_track_new ());
layer = ges_layer_new ();
timeline = ges_timeline_new ();
fail_unless (track != NULL);
@ -79,7 +79,7 @@ GST_START_TEST (test_transition_properties)
clip = GES_CLIP (ges_transition_clip_new
(GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE));
track = ges_track_video_raw_new ();
track = GES_TRACK (ges_video_track_new ());
layer = ges_layer_new ();
timeline = ges_timeline_new ();
fail_unless (track != NULL);

View file

@ -214,8 +214,8 @@ GST_START_TEST (test_filesource_images)
ges_init ();
a = ges_track_audio_raw_new ();
v = ges_track_video_raw_new ();
a = GES_TRACK (ges_audio_track_new ());
v = GES_TRACK (ges_video_track_new ());
layer = ges_layer_new ();
fail_unless (layer != NULL);

View file

@ -1228,7 +1228,7 @@ app_add_audio_track (App * app)
if (app->audio_tracks)
return;
app->audio_track = ges_track_audio_raw_new ();
app->audio_track = GES_TRACK (ges_audio_track_new ());
ges_timeline_add_track (app->timeline, app->audio_track);
}
@ -1248,7 +1248,7 @@ app_add_video_track (App * app)
if (app->video_tracks)
return;
app->video_track = ges_track_video_raw_new ();
app->video_track = GES_TRACK (ges_video_track_new ());
ges_timeline_add_track (app->timeline, app->video_track);
}
@ -1322,13 +1322,13 @@ app_new (void)
/* add base audio and video track */
if (!(a = ges_track_audio_raw_new ()))
if (!(a = GES_TRACK (ges_audio_track_new ())))
goto fail;
if (!(ges_timeline_add_track (ret->timeline, a)))
goto fail;
if (!(v = ges_track_video_raw_new ()))
if (!(v = GES_TRACK (ges_video_track_new ())))
goto fail;
if (!(ges_timeline_add_track (ret->timeline, v)))

View file

@ -94,10 +94,10 @@ make_timeline (char *path, float duration, char *text, guint32 color,
timeline = ges_timeline_new ();
ges_timeline_pipeline_add_timeline (pipeline, timeline);
trackv = ges_track_video_raw_new ();
trackv = GES_TRACK (ges_video_track_new ());
ges_timeline_add_track (timeline, trackv);
tracka = ges_track_audio_raw_new ();
tracka = GES_TRACK (ges_audio_track_new ());
ges_timeline_add_track (timeline, tracka);
layer1 = GES_LAYER (ges_layer_new ());

View file

@ -73,8 +73,8 @@ main (int argc, gchar ** argv)
timeline = ges_timeline_new ();
tracka = ges_track_audio_raw_new ();
trackv = ges_track_video_raw_new ();
tracka = GES_TRACK (ges_audio_track_new ());
trackv = GES_TRACK (ges_video_track_new ());
layer1 = (GESLayer *) ges_simple_layer_new ();
layer2 = (GESLayer *) ges_simple_layer_new ();

View file

@ -47,7 +47,7 @@ main (int argc, gchar ** argv)
/* This is our main GESTimeline */
timeline = ges_timeline_new ();
tracka = ges_track_audio_raw_new ();
tracka = GES_TRACK (ges_audio_track_new ());
/* We are only going to be doing one layer of clips */
layer = ges_layer_new ();

View file

@ -46,7 +46,7 @@ main (int argc, gchar ** argv)
/* This is our main GESTimeline */
timeline = ges_timeline_new ();
tracka = ges_track_audio_raw_new ();
tracka = GES_TRACK (ges_audio_track_new ());
/* We are only going to be doing one layer of clips */
layer = (GESLayer *) ges_simple_layer_new ();

View file

@ -101,7 +101,7 @@ main (int argc, gchar ** argv)
/* This is our main GESTimeline */
timeline = ges_timeline_new ();
tracka = ges_track_audio_raw_new ();
tracka = GES_TRACK (ges_audio_track_new ());
/* We are only going to be doing one layer of clips */
layer = (GESLayer *) ges_simple_layer_new ();

View file

@ -67,10 +67,10 @@ make_timeline (char *path, float duration, char *text)
timeline = ges_timeline_new ();
ges_timeline_pipeline_add_timeline (pipeline, timeline);
trackv = ges_track_video_raw_new ();
trackv = GES_TRACK (ges_video_track_new ());
ges_timeline_add_track (timeline, trackv);
tracka = ges_track_audio_raw_new ();
tracka = GES_TRACK (ges_audio_track_new ());
ges_timeline_add_track (timeline, tracka);
layer1 = GES_LAYER (ges_layer_new ());

View file

@ -80,8 +80,8 @@ create_timeline (void)
timeline = ges_timeline_new ();
tracka = ges_track_audio_raw_new ();
trackv = ges_track_video_raw_new ();
tracka = GES_TRACK (ges_audio_track_new ());
trackv = GES_TRACK (ges_video_track_new ());
layer = (GESLayer *) ges_simple_layer_new ();

View file

@ -102,10 +102,10 @@ make_timeline (gchar * nick, gdouble tdur, gchar * patha, gfloat adur,
timeline = ges_timeline_new ();
ges_timeline_pipeline_add_timeline (pipeline, timeline);
trackv = ges_track_video_raw_new ();
trackv = GES_TRACK (ges_video_track_new ());
ges_timeline_add_track (timeline, trackv);
tracka = ges_track_audio_raw_new ();
tracka = GES_TRACK (ges_audio_track_new ());
ges_timeline_add_track (timeline, tracka);
layer1 = GES_LAYER (ges_layer_new ());

View file

@ -135,9 +135,9 @@ create_timeline (int nbargs, gchar ** argv, gchar * audio, gchar * video)
timeline = GES_TIMELINE (ges_asset_extract (GES_ASSET (project), NULL));
if (audio)
tracka = ges_track_audio_raw_new ();
tracka = GES_TRACK (ges_audio_track_new ());
if (video)
trackv = ges_track_video_raw_new ();
trackv = GES_TRACK (ges_video_track_new ());
/* We are only going to be doing one layer of clips */
layer = (GESLayer *) ges_simple_layer_new ();