mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 03:35:21 +00:00
ges: Implement GESAudioTrack and GESVideoTrack, subclasses of GESTrack
This commit is contained in:
parent
ea95cb1ee3
commit
9b14c001b0
33 changed files with 431 additions and 131 deletions
|
@ -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"/>
|
<xi:include href="xml/ges-project.xml"/>
|
||||||
</chapter>
|
</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">
|
<chapter id="ges-hierarchy">
|
||||||
<title>Object Hierarchy</title>
|
<title>Object Hierarchy</title>
|
||||||
<xi:include href="xml/tree_index.sgml"/>
|
<xi:include href="xml/tree_index.sgml"/>
|
||||||
|
|
|
@ -69,8 +69,6 @@ ges_track_type_name
|
||||||
<TITLE>GESTrack</TITLE>
|
<TITLE>GESTrack</TITLE>
|
||||||
GESTrack
|
GESTrack
|
||||||
GESCreateElementForGapFunc
|
GESCreateElementForGapFunc
|
||||||
ges_track_audio_raw_new
|
|
||||||
ges_track_video_raw_new
|
|
||||||
ges_track_new
|
ges_track_new
|
||||||
ges_track_add_element
|
ges_track_add_element
|
||||||
ges_track_remove_element
|
ges_track_remove_element
|
||||||
|
@ -79,7 +77,6 @@ ges_track_get_caps
|
||||||
ges_track_enable_update
|
ges_track_enable_update
|
||||||
ges_track_get_elements
|
ges_track_get_elements
|
||||||
ges_track_is_updating
|
ges_track_is_updating
|
||||||
ges_track_set_create_element_for_gap_func
|
|
||||||
<SUBSECTION Standard>
|
<SUBSECTION Standard>
|
||||||
GESTrackClass
|
GESTrackClass
|
||||||
GESTrackPrivate
|
GESTrackPrivate
|
||||||
|
@ -94,6 +91,38 @@ GES_TRACK_GET_CLASS
|
||||||
GES_TYPE_TRACK
|
GES_TYPE_TRACK
|
||||||
</SECTION>
|
</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>
|
<SECTION>
|
||||||
<FILE>ges-track-element</FILE>
|
<FILE>ges-track-element</FILE>
|
||||||
<TITLE>GESTrackElement</TITLE>
|
<TITLE>GESTrackElement</TITLE>
|
||||||
|
|
|
@ -30,6 +30,8 @@ libges_@GST_API_VERSION@_la_SOURCES = \
|
||||||
ges-overlay-clip.c \
|
ges-overlay-clip.c \
|
||||||
ges-text-overlay-clip.c \
|
ges-text-overlay-clip.c \
|
||||||
ges-track.c \
|
ges-track.c \
|
||||||
|
ges-audio-track.c \
|
||||||
|
ges-video-track.c \
|
||||||
ges-track-element.c \
|
ges-track-element.c \
|
||||||
ges-source.c \
|
ges-source.c \
|
||||||
ges-operation.c \
|
ges-operation.c \
|
||||||
|
@ -89,6 +91,8 @@ libges_@GST_API_VERSION@include_HEADERS = \
|
||||||
ges-base-effect.h \
|
ges-base-effect.h \
|
||||||
ges-effect.h \
|
ges-effect.h \
|
||||||
ges-track.h \
|
ges-track.h \
|
||||||
|
ges-audio-track.h \
|
||||||
|
ges-video-track.h \
|
||||||
ges-track-element.h \
|
ges-track-element.h \
|
||||||
ges-source.h \
|
ges-source.h \
|
||||||
ges-operation.h \
|
ges-operation.h \
|
||||||
|
|
106
ges/ges-audio-track.c
Normal file
106
ges/ges-audio-track.c
Normal 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
55
ges/ges-audio-track.h
Normal 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_ */
|
|
@ -184,8 +184,8 @@ create_tracks (GESFormatter * self)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
priv->tracka = ges_track_audio_raw_new ();
|
priv->tracka = GES_TRACK (ges_audio_track_new ());
|
||||||
priv->trackv = ges_track_video_raw_new ();
|
priv->trackv = GES_TRACK (ges_video_track_new ());
|
||||||
|
|
||||||
if (!ges_timeline_add_track (self->timeline, priv->trackv)) {
|
if (!ges_timeline_add_track (self->timeline, priv->trackv)) {
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
|
@ -33,6 +33,8 @@
|
||||||
#include "ges-track.h"
|
#include "ges-track.h"
|
||||||
#include "ges-track-element.h"
|
#include "ges-track-element.h"
|
||||||
#include "ges-meta-container.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_DEFINE_TYPE_WITH_CODE (GESTrack, ges_track, GST_TYPE_BIN,
|
||||||
G_IMPLEMENT_INTERFACE (GES_TYPE_META_CONTAINER, NULL));
|
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
|
/* FIXME: Find out how to avoid doing this "hack" using the GDestroyNotify
|
||||||
* function pointer in the trackelements_by_start GSequence
|
* function pointer in the trackelements_by_start GSequence
|
||||||
*
|
*
|
||||||
|
@ -580,74 +562,38 @@ ges_track_new (GESTrackType type, GstCaps * caps)
|
||||||
GESTrack *track;
|
GESTrack *track;
|
||||||
GstCaps *tmpcaps;
|
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) {
|
if (type == GES_TRACK_TYPE_VIDEO) {
|
||||||
tmpcaps = gst_caps_new_empty_simple ("video/x-raw");
|
tmpcaps = gst_caps_new_empty_simple ("video/x-raw");
|
||||||
|
|
||||||
if (gst_caps_is_equal (caps, tmpcaps))
|
if (gst_caps_is_subset (caps, tmpcaps)) {
|
||||||
ges_track_set_create_element_for_gap_func (track,
|
track = GES_TRACK (ges_video_track_new ());
|
||||||
create_element_for_raw_video_gap);
|
ges_track_set_caps (track, caps);
|
||||||
|
|
||||||
|
gst_caps_unref (tmpcaps);
|
||||||
|
return track;
|
||||||
|
}
|
||||||
gst_caps_unref (tmpcaps);
|
gst_caps_unref (tmpcaps);
|
||||||
} else if (type == GES_TRACK_TYPE_AUDIO) {
|
} else if (type == GES_TRACK_TYPE_AUDIO) {
|
||||||
tmpcaps = gst_caps_new_empty_simple ("audio/x-raw");
|
tmpcaps = gst_caps_new_empty_simple ("audio/x-raw");
|
||||||
|
|
||||||
if (gst_caps_is_equal (caps, tmpcaps))
|
if (gst_caps_is_subset (caps, tmpcaps)) {
|
||||||
ges_track_set_create_element_for_gap_func (track,
|
track = GES_TRACK (ges_audio_track_new ());
|
||||||
create_element_for_raw_audio_gap);
|
ges_track_set_caps (track, caps);
|
||||||
|
|
||||||
|
gst_caps_unref (tmpcaps);
|
||||||
|
return track;
|
||||||
|
}
|
||||||
|
|
||||||
gst_caps_unref (tmpcaps);
|
gst_caps_unref (tmpcaps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
track = g_object_new (GES_TYPE_TRACK, "caps", caps, "track-type", type, NULL);
|
||||||
gst_caps_unref (caps);
|
gst_caps_unref (caps);
|
||||||
|
|
||||||
return track;
|
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:
|
* 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.
|
* 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
|
* 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
|
void
|
||||||
ges_track_set_create_element_for_gap_func (GESTrack * track,
|
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 */
|
/* standard methods */
|
||||||
GType ges_track_get_type (void);
|
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);
|
GESTrack* ges_track_new (GESTrackType type, GstCaps * caps);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
|
@ -164,4 +164,10 @@ typedef struct _GESProjectClass GESProjectClass;
|
||||||
typedef struct _GESExtractable GESExtractable;
|
typedef struct _GESExtractable GESExtractable;
|
||||||
typedef struct _GESExtractableInterface GESExtractableInterface;
|
typedef struct _GESExtractableInterface GESExtractableInterface;
|
||||||
|
|
||||||
|
typedef struct _GESVideoTrackClass GESVideoTrackClass;
|
||||||
|
typedef struct _GESVideoTrack GESVideoTrack;
|
||||||
|
|
||||||
|
typedef struct _GESAudioTrackClass GESAudioTrackClass;
|
||||||
|
typedef struct _GESAudioTrack GESAudioTrack;
|
||||||
|
|
||||||
#endif /* __GES_TYPES_H__ */
|
#endif /* __GES_TYPES_H__ */
|
||||||
|
|
|
@ -47,8 +47,8 @@ ges_timeline_new_audio_video (void)
|
||||||
/* This is our main GESTimeline */
|
/* This is our main GESTimeline */
|
||||||
timeline = ges_timeline_new ();
|
timeline = ges_timeline_new ();
|
||||||
|
|
||||||
tracka = ges_track_audio_raw_new ();
|
tracka = GES_TRACK (ges_audio_track_new ());
|
||||||
trackv = ges_track_video_raw_new ();
|
trackv = GES_TRACK (ges_video_track_new ());
|
||||||
|
|
||||||
if (!ges_timeline_add_track (timeline, trackv) ||
|
if (!ges_timeline_add_track (timeline, trackv) ||
|
||||||
!ges_timeline_add_track (timeline, tracka)) {
|
!ges_timeline_add_track (timeline, tracka)) {
|
||||||
|
|
94
ges/ges-video-track.c
Normal file
94
ges/ges-video-track.c
Normal 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
54
ges/ges-video-track.h
Normal 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_ */
|
|
@ -76,6 +76,8 @@
|
||||||
#include <ges/ges-utils.h>
|
#include <ges/ges-utils.h>
|
||||||
#include <ges/ges-meta-container.h>
|
#include <ges/ges-meta-container.h>
|
||||||
#include <ges/ges-gerror.h>
|
#include <ges/ges-gerror.h>
|
||||||
|
#include <ges/ges-audio-track.h>
|
||||||
|
#include <ges/ges-video-track.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
|
|
@ -133,8 +133,8 @@ GST_START_TEST (test_test_source_in_layer)
|
||||||
|
|
||||||
timeline = ges_timeline_new ();
|
timeline = ges_timeline_new ();
|
||||||
layer = (GESLayer *) ges_simple_layer_new ();
|
layer = (GESLayer *) ges_simple_layer_new ();
|
||||||
a = ges_track_audio_raw_new ();
|
a = GES_TRACK (ges_audio_track_new ());
|
||||||
v = ges_track_video_raw_new ();
|
v = GES_TRACK (ges_video_track_new ());
|
||||||
|
|
||||||
ges_timeline_add_track (timeline, a);
|
ges_timeline_add_track (timeline, a);
|
||||||
ges_timeline_add_track (timeline, v);
|
ges_timeline_add_track (timeline, v);
|
||||||
|
@ -258,7 +258,7 @@ GST_START_TEST (test_gap_filling_basic)
|
||||||
|
|
||||||
ges_init ();
|
ges_init ();
|
||||||
|
|
||||||
track = ges_track_audio_raw_new ();
|
track = GES_TRACK (ges_audio_track_new ());
|
||||||
fail_unless (track != NULL);
|
fail_unless (track != NULL);
|
||||||
|
|
||||||
composition = find_composition (track);
|
composition = find_composition (track);
|
||||||
|
@ -358,14 +358,14 @@ GST_START_TEST (test_gap_filling_empty_track)
|
||||||
|
|
||||||
ges_init ();
|
ges_init ();
|
||||||
|
|
||||||
track = ges_track_audio_raw_new ();
|
track = GES_TRACK(ges_audio_track_new ());
|
||||||
|
|
||||||
layer = ges_layer_new ();
|
layer = ges_layer_new ();
|
||||||
timeline = ges_timeline_new ();
|
timeline = ges_timeline_new ();
|
||||||
fail_unless (timeline != NULL);
|
fail_unless (timeline != NULL);
|
||||||
fail_unless (ges_timeline_add_layer (timeline, layer));
|
fail_unless (ges_timeline_add_layer (timeline, layer));
|
||||||
fail_unless (ges_timeline_add_track (timeline, track));
|
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 */
|
/* Set some properties */
|
||||||
asset = ges_asset_request (GES_TYPE_TEST_CLIP, NULL, NULL);
|
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 ();
|
timeline = ges_timeline_new ();
|
||||||
layer = ges_layer_new ();
|
layer = ges_layer_new ();
|
||||||
audio_track = ges_track_audio_raw_new ();
|
audio_track = GES_TRACK (ges_audio_track_new ());
|
||||||
video_track = ges_track_video_raw_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, audio_track));
|
||||||
fail_unless (ges_timeline_add_track (timeline, video_track));
|
fail_unless (ges_timeline_add_track (timeline, video_track));
|
||||||
|
@ -349,7 +349,7 @@ GST_START_TEST (test_clip_refcount_remove_child)
|
||||||
ges_init ();
|
ges_init ();
|
||||||
|
|
||||||
clip = GES_CLIP (ges_test_clip_new ());
|
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"));
|
effect = GES_TRACK_ELEMENT (ges_effect_new ("identity"));
|
||||||
|
|
||||||
fail_unless (ges_track_add_element (track, effect));
|
fail_unless (ges_track_add_element (track, effect));
|
||||||
|
|
|
@ -50,8 +50,8 @@ GST_START_TEST (test_add_effect_to_clip)
|
||||||
|
|
||||||
timeline = ges_timeline_new ();
|
timeline = ges_timeline_new ();
|
||||||
layer = (GESLayer *) ges_simple_layer_new ();
|
layer = (GESLayer *) ges_simple_layer_new ();
|
||||||
track_audio = ges_track_audio_raw_new ();
|
track_audio = GES_TRACK (ges_audio_track_new ());
|
||||||
track_video = ges_track_video_raw_new ();
|
track_video = GES_TRACK (ges_video_track_new ());
|
||||||
|
|
||||||
ges_timeline_add_track (timeline, track_audio);
|
ges_timeline_add_track (timeline, track_audio);
|
||||||
ges_timeline_add_track (timeline, track_video);
|
ges_timeline_add_track (timeline, track_video);
|
||||||
|
@ -97,7 +97,7 @@ GST_START_TEST (test_get_effects_from_tl)
|
||||||
|
|
||||||
timeline = ges_timeline_new ();
|
timeline = ges_timeline_new ();
|
||||||
layer = (GESLayer *) ges_simple_layer_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_track (timeline, track_video);
|
||||||
ges_timeline_add_layer (timeline, layer);
|
ges_timeline_add_layer (timeline, layer);
|
||||||
|
@ -175,8 +175,8 @@ GST_START_TEST (test_effect_clip)
|
||||||
|
|
||||||
timeline = ges_timeline_new ();
|
timeline = ges_timeline_new ();
|
||||||
layer = (GESLayer *) ges_simple_layer_new ();
|
layer = (GESLayer *) ges_simple_layer_new ();
|
||||||
track_audio = ges_track_audio_raw_new ();
|
track_audio = GES_TRACK (ges_audio_track_new ());
|
||||||
track_video = ges_track_video_raw_new ();
|
track_video = GES_TRACK (ges_video_track_new ());
|
||||||
|
|
||||||
ges_timeline_add_track (timeline, track_audio);
|
ges_timeline_add_track (timeline, track_audio);
|
||||||
ges_timeline_add_track (timeline, track_video);
|
ges_timeline_add_track (timeline, track_video);
|
||||||
|
@ -245,8 +245,8 @@ GST_START_TEST (test_priorities_clip)
|
||||||
|
|
||||||
timeline = ges_timeline_new ();
|
timeline = ges_timeline_new ();
|
||||||
layer = (GESLayer *) ges_simple_layer_new ();
|
layer = (GESLayer *) ges_simple_layer_new ();
|
||||||
track_audio = ges_track_audio_raw_new ();
|
track_audio = GES_TRACK (ges_audio_track_new ());
|
||||||
track_video = ges_track_video_raw_new ();
|
track_video = GES_TRACK (ges_video_track_new ());
|
||||||
|
|
||||||
ges_timeline_add_track (timeline, track_audio);
|
ges_timeline_add_track (timeline, track_audio);
|
||||||
ges_timeline_add_track (timeline, track_video);
|
ges_timeline_add_track (timeline, track_video);
|
||||||
|
@ -341,7 +341,7 @@ GST_START_TEST (test_effect_set_properties)
|
||||||
|
|
||||||
timeline = ges_timeline_new ();
|
timeline = ges_timeline_new ();
|
||||||
layer = (GESLayer *) ges_simple_layer_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_track (timeline, track_video);
|
||||||
ges_timeline_add_layer (timeline, layer);
|
ges_timeline_add_layer (timeline, layer);
|
||||||
|
@ -429,7 +429,7 @@ GST_START_TEST (test_clip_signals)
|
||||||
|
|
||||||
timeline = ges_timeline_new ();
|
timeline = ges_timeline_new ();
|
||||||
layer = (GESLayer *) ges_simple_layer_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_track (timeline, track_video);
|
||||||
ges_timeline_add_layer (timeline, layer);
|
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 (layer2), 1);
|
||||||
fail_unless_equals_int (ges_layer_get_priority (layer3), 2);
|
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 (track != NULL);
|
||||||
fail_unless (ges_timeline_add_track (timeline, track));
|
fail_unless (ges_timeline_add_track (timeline, track));
|
||||||
|
|
||||||
|
|
|
@ -122,8 +122,8 @@ GST_START_TEST (test_overlay_in_layer)
|
||||||
|
|
||||||
timeline = ges_timeline_new ();
|
timeline = ges_timeline_new ();
|
||||||
layer = (GESLayer *) ges_simple_layer_new ();
|
layer = (GESLayer *) ges_simple_layer_new ();
|
||||||
a = ges_track_audio_raw_new ();
|
a = GES_TRACK (ges_audio_track_new ());
|
||||||
v = ges_track_video_raw_new ();
|
v = GES_TRACK (ges_video_track_new ());
|
||||||
|
|
||||||
ges_timeline_add_track (timeline, a);
|
ges_timeline_add_track (timeline, a);
|
||||||
ges_timeline_add_track (timeline, v);
|
ges_timeline_add_track (timeline, v);
|
||||||
|
|
|
@ -35,8 +35,8 @@ GST_START_TEST (test_text_properties_in_layer)
|
||||||
|
|
||||||
timeline = ges_timeline_new ();
|
timeline = ges_timeline_new ();
|
||||||
layer = (GESLayer *) ges_simple_layer_new ();
|
layer = (GESLayer *) ges_simple_layer_new ();
|
||||||
a = ges_track_audio_raw_new ();
|
a = GES_TRACK (ges_audio_track_new ());
|
||||||
v = ges_track_video_raw_new ();
|
v = GES_TRACK (ges_video_track_new ());
|
||||||
|
|
||||||
ges_timeline_add_track (timeline, a);
|
ges_timeline_add_track (timeline, a);
|
||||||
ges_timeline_add_track (timeline, v);
|
ges_timeline_add_track (timeline, v);
|
||||||
|
|
|
@ -63,7 +63,7 @@ GST_START_TEST (test_basic_timeline_edition)
|
||||||
|
|
||||||
ges_init ();
|
ges_init ();
|
||||||
|
|
||||||
track = ges_track_audio_raw_new ();
|
track = GES_TRACK (ges_audio_track_new ());
|
||||||
fail_unless (track != NULL);
|
fail_unless (track != NULL);
|
||||||
|
|
||||||
timeline = ges_timeline_new ();
|
timeline = ges_timeline_new ();
|
||||||
|
|
|
@ -45,7 +45,7 @@ GST_START_TEST (test_title_source_properties)
|
||||||
|
|
||||||
ges_init ();
|
ges_init ();
|
||||||
|
|
||||||
track = ges_track_video_raw_new ();
|
track = GES_TRACK (ges_video_track_new ());
|
||||||
fail_unless (track != NULL);
|
fail_unless (track != NULL);
|
||||||
layer = ges_layer_new ();
|
layer = ges_layer_new ();
|
||||||
fail_unless (layer != NULL);
|
fail_unless (layer != NULL);
|
||||||
|
@ -122,8 +122,8 @@ GST_START_TEST (test_title_source_in_layer)
|
||||||
|
|
||||||
timeline = ges_timeline_new ();
|
timeline = ges_timeline_new ();
|
||||||
layer = (GESLayer *) ges_simple_layer_new ();
|
layer = (GESLayer *) ges_simple_layer_new ();
|
||||||
a = ges_track_audio_raw_new ();
|
a = GES_TRACK (ges_audio_track_new ());
|
||||||
v = ges_track_video_raw_new ();
|
v = GES_TRACK (ges_video_track_new ());
|
||||||
|
|
||||||
ges_timeline_add_track (timeline, a);
|
ges_timeline_add_track (timeline, a);
|
||||||
ges_timeline_add_track (timeline, v);
|
ges_timeline_add_track (timeline, v);
|
||||||
|
|
|
@ -35,7 +35,7 @@ GST_START_TEST (test_transition_basic)
|
||||||
|
|
||||||
ges_init ();
|
ges_init ();
|
||||||
|
|
||||||
track = ges_track_video_raw_new ();
|
track = GES_TRACK (ges_video_track_new ());
|
||||||
layer = ges_layer_new ();
|
layer = ges_layer_new ();
|
||||||
timeline = ges_timeline_new ();
|
timeline = ges_timeline_new ();
|
||||||
fail_unless (track != NULL);
|
fail_unless (track != NULL);
|
||||||
|
@ -79,7 +79,7 @@ GST_START_TEST (test_transition_properties)
|
||||||
clip = GES_CLIP (ges_transition_clip_new
|
clip = GES_CLIP (ges_transition_clip_new
|
||||||
(GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE));
|
(GES_VIDEO_STANDARD_TRANSITION_TYPE_CROSSFADE));
|
||||||
|
|
||||||
track = ges_track_video_raw_new ();
|
track = GES_TRACK (ges_video_track_new ());
|
||||||
layer = ges_layer_new ();
|
layer = ges_layer_new ();
|
||||||
timeline = ges_timeline_new ();
|
timeline = ges_timeline_new ();
|
||||||
fail_unless (track != NULL);
|
fail_unless (track != NULL);
|
||||||
|
|
|
@ -214,8 +214,8 @@ GST_START_TEST (test_filesource_images)
|
||||||
|
|
||||||
ges_init ();
|
ges_init ();
|
||||||
|
|
||||||
a = ges_track_audio_raw_new ();
|
a = GES_TRACK (ges_audio_track_new ());
|
||||||
v = ges_track_video_raw_new ();
|
v = GES_TRACK (ges_video_track_new ());
|
||||||
|
|
||||||
layer = ges_layer_new ();
|
layer = ges_layer_new ();
|
||||||
fail_unless (layer != NULL);
|
fail_unless (layer != NULL);
|
||||||
|
|
|
@ -1228,7 +1228,7 @@ app_add_audio_track (App * app)
|
||||||
if (app->audio_tracks)
|
if (app->audio_tracks)
|
||||||
return;
|
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);
|
ges_timeline_add_track (app->timeline, app->audio_track);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1248,7 +1248,7 @@ app_add_video_track (App * app)
|
||||||
if (app->video_tracks)
|
if (app->video_tracks)
|
||||||
return;
|
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);
|
ges_timeline_add_track (app->timeline, app->video_track);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1322,13 +1322,13 @@ app_new (void)
|
||||||
|
|
||||||
/* add base audio and video track */
|
/* add base audio and video track */
|
||||||
|
|
||||||
if (!(a = ges_track_audio_raw_new ()))
|
if (!(a = GES_TRACK (ges_audio_track_new ())))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
if (!(ges_timeline_add_track (ret->timeline, a)))
|
if (!(ges_timeline_add_track (ret->timeline, a)))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
if (!(v = ges_track_video_raw_new ()))
|
if (!(v = GES_TRACK (ges_video_track_new ())))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
if (!(ges_timeline_add_track (ret->timeline, v)))
|
if (!(ges_timeline_add_track (ret->timeline, v)))
|
||||||
|
|
|
@ -94,10 +94,10 @@ make_timeline (char *path, float duration, char *text, guint32 color,
|
||||||
timeline = ges_timeline_new ();
|
timeline = ges_timeline_new ();
|
||||||
ges_timeline_pipeline_add_timeline (pipeline, timeline);
|
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);
|
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);
|
ges_timeline_add_track (timeline, tracka);
|
||||||
|
|
||||||
layer1 = GES_LAYER (ges_layer_new ());
|
layer1 = GES_LAYER (ges_layer_new ());
|
||||||
|
|
|
@ -73,8 +73,8 @@ main (int argc, gchar ** argv)
|
||||||
|
|
||||||
timeline = ges_timeline_new ();
|
timeline = ges_timeline_new ();
|
||||||
|
|
||||||
tracka = ges_track_audio_raw_new ();
|
tracka = GES_TRACK (ges_audio_track_new ());
|
||||||
trackv = ges_track_video_raw_new ();
|
trackv = GES_TRACK (ges_video_track_new ());
|
||||||
|
|
||||||
layer1 = (GESLayer *) ges_simple_layer_new ();
|
layer1 = (GESLayer *) ges_simple_layer_new ();
|
||||||
layer2 = (GESLayer *) ges_simple_layer_new ();
|
layer2 = (GESLayer *) ges_simple_layer_new ();
|
||||||
|
|
|
@ -47,7 +47,7 @@ main (int argc, gchar ** argv)
|
||||||
/* This is our main GESTimeline */
|
/* This is our main GESTimeline */
|
||||||
timeline = ges_timeline_new ();
|
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 */
|
/* We are only going to be doing one layer of clips */
|
||||||
layer = ges_layer_new ();
|
layer = ges_layer_new ();
|
||||||
|
|
|
@ -46,7 +46,7 @@ main (int argc, gchar ** argv)
|
||||||
/* This is our main GESTimeline */
|
/* This is our main GESTimeline */
|
||||||
timeline = ges_timeline_new ();
|
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 */
|
/* We are only going to be doing one layer of clips */
|
||||||
layer = (GESLayer *) ges_simple_layer_new ();
|
layer = (GESLayer *) ges_simple_layer_new ();
|
||||||
|
|
|
@ -101,7 +101,7 @@ main (int argc, gchar ** argv)
|
||||||
/* This is our main GESTimeline */
|
/* This is our main GESTimeline */
|
||||||
timeline = ges_timeline_new ();
|
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 */
|
/* We are only going to be doing one layer of clips */
|
||||||
layer = (GESLayer *) ges_simple_layer_new ();
|
layer = (GESLayer *) ges_simple_layer_new ();
|
||||||
|
|
|
@ -67,10 +67,10 @@ make_timeline (char *path, float duration, char *text)
|
||||||
timeline = ges_timeline_new ();
|
timeline = ges_timeline_new ();
|
||||||
ges_timeline_pipeline_add_timeline (pipeline, timeline);
|
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);
|
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);
|
ges_timeline_add_track (timeline, tracka);
|
||||||
|
|
||||||
layer1 = GES_LAYER (ges_layer_new ());
|
layer1 = GES_LAYER (ges_layer_new ());
|
||||||
|
|
|
@ -80,8 +80,8 @@ create_timeline (void)
|
||||||
|
|
||||||
timeline = ges_timeline_new ();
|
timeline = ges_timeline_new ();
|
||||||
|
|
||||||
tracka = ges_track_audio_raw_new ();
|
tracka = GES_TRACK (ges_audio_track_new ());
|
||||||
trackv = ges_track_video_raw_new ();
|
trackv = GES_TRACK (ges_video_track_new ());
|
||||||
|
|
||||||
layer = (GESLayer *) ges_simple_layer_new ();
|
layer = (GESLayer *) ges_simple_layer_new ();
|
||||||
|
|
||||||
|
|
|
@ -102,10 +102,10 @@ make_timeline (gchar * nick, gdouble tdur, gchar * patha, gfloat adur,
|
||||||
timeline = ges_timeline_new ();
|
timeline = ges_timeline_new ();
|
||||||
ges_timeline_pipeline_add_timeline (pipeline, timeline);
|
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);
|
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);
|
ges_timeline_add_track (timeline, tracka);
|
||||||
|
|
||||||
layer1 = GES_LAYER (ges_layer_new ());
|
layer1 = GES_LAYER (ges_layer_new ());
|
||||||
|
|
|
@ -135,9 +135,9 @@ create_timeline (int nbargs, gchar ** argv, gchar * audio, gchar * video)
|
||||||
timeline = GES_TIMELINE (ges_asset_extract (GES_ASSET (project), NULL));
|
timeline = GES_TIMELINE (ges_asset_extract (GES_ASSET (project), NULL));
|
||||||
|
|
||||||
if (audio)
|
if (audio)
|
||||||
tracka = ges_track_audio_raw_new ();
|
tracka = GES_TRACK (ges_audio_track_new ());
|
||||||
if (video)
|
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 */
|
/* We are only going to be doing one layer of clips */
|
||||||
layer = (GESLayer *) ges_simple_layer_new ();
|
layer = (GESLayer *) ges_simple_layer_new ();
|
||||||
|
|
Loading…
Reference in a new issue