Commit 9b14c001 authored by Thibault Saunier's avatar Thibault Saunier

ges: Implement GESAudioTrack and GESVideoTrack, subclasses of GESTrack

parent ea95cb1e
......@@ -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"/>
......
......@@ -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>
......
......@@ -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 \
......
/* 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;
}
/* 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_ */
......@@ -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;
......
......@@ -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);
}
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");
track = g_object_new (GES_TYPE_TRACK, "caps", caps, "track-type", type, NULL);
gst_caps_unref (caps);
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,
......
......@@ -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
......
......@@ -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__ */
......@@ -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)) {
......
/* 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;
}
/* 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_ */
......@@ -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
......
......@@ -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);
......
......@@ -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));
......
......@@ -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);
......
......@@ -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));
......
......@@ -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);
......
......@@ -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 <