Includes all the fixes necessary to make stuff compile again.
AG_GST_SET_PLUGINDIR
dnl define an ERROR_CFLAGS Makefile variable
-AG_GST_SET_ERROR_CFLAGS($GST_GIT)
+AG_GST_SET_ERROR_CFLAGS($GST_GIT, [-Wmissing-declarations -Wmissing-prototypes])
dnl define an ERROR_CXXFLAGS Makefile variable
-AG_GST_SET_ERROR_CXXFLAGS($GST_GIT)
+AG_GST_SET_ERROR_CXXFLAGS($GST_GIT, [-Wmissing-declarations -Wmissing-prototypes])
dnl define correct level for debugging messages
AG_GST_SET_LEVEL_DEFAULT($GST_GIT)
gstoggstream.h \
dirac_parse.c \
dirac_parse.h \
- vorbis_parse.c
+ vorbis_parse.c \
+ vorbis_parse.h
noinst_HEADERS = \
gstoggdemux.h gstoggmux.h
#include <gst/gst.h>
-extern gboolean gst_ogg_demux_plugin_init (GstPlugin * plugin);
-extern gboolean gst_ogg_mux_plugin_init (GstPlugin * plugin);
-extern gboolean gst_ogm_parse_plugin_init (GstPlugin * plugin);
-extern gboolean gst_ogg_parse_plugin_init (GstPlugin * plugin);
-extern gboolean gst_ogg_avi_parse_plugin_init (GstPlugin * plugin);
+#include "gstogg.h"
+#include "gstoggdemux.h"
+#include "gstoggmux.h"
static gboolean
plugin_init (GstPlugin * plugin)
--- /dev/null
+/* GStreamer
+ * Copyright (C) 2004 Wim Taymans <wim@fluendo.com>
+ *
+ * gstoggdemux.c: ogg stream demuxer
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __GST_OGG_H__
+#define __GST_OGG_H__
+
+#include <gst/gst.h>
+
+gboolean gst_ogm_parse_plugin_init (GstPlugin * plugin);
+gboolean gst_ogg_parse_plugin_init (GstPlugin * plugin);
+gboolean gst_ogg_avi_parse_plugin_init (GstPlugin * plugin);
+
+#endif /* __GST_OGG_H__ */
#include <ogg/ogg.h>
#include <string.h>
+#include "gstogg.h"
+
static const GstElementDetails gst_ogg_avi_parse_details =
GST_ELEMENT_DETAILS ("Ogg AVI parser",
"Codec/Parser",
GstOggPad * pad, GstFlowReturn ret);
static void gst_ogg_demux_sync_streams (GstOggDemux * ogg);
+GType gst_ogg_pad_get_type (void);
G_DEFINE_TYPE (GstOggPad, gst_ogg_pad, GST_TYPE_PAD);
static void
GstElementClass parent_class;
};
+gboolean gst_ogg_demux_plugin_init (GstPlugin * plugin);
G_END_DECLS
static void
gst_ogg_mux_ogg_pad_destroy_notify (GstCollectData * data)
{
- GstOggPad *oggpad = (GstOggPad *) data;
+ GstOggPadData *oggpad = (GstOggPadData *) data;
GstBuffer *buf;
ogg_stream_clear (&oggpad->stream);
gst_ogg_mux_sink_event (GstPad * pad, GstEvent * event)
{
GstOggMux *ogg_mux = GST_OGG_MUX (gst_pad_get_parent (pad));
- GstOggPad *ogg_pad = (GstOggPad *) gst_pad_get_element_private (pad);
+ GstOggPadData *ogg_pad = (GstOggPadData *) gst_pad_get_element_private (pad);
gboolean ret;
GST_DEBUG ("Got %s event on pad %s:%s", GST_EVENT_TYPE_NAME (event),
/* construct our own wrapper data structure for the pad to
* keep track of its status */
{
- GstOggPad *oggpad;
+ GstOggPadData *oggpad;
- oggpad = (GstOggPad *)
+ oggpad = (GstOggPadData *)
gst_collect_pads_add_pad_full (ogg_mux->collect, newpad,
- sizeof (GstOggPad), gst_ogg_mux_ogg_pad_destroy_notify);
+ sizeof (GstOggPadData), gst_ogg_mux_ogg_pad_destroy_notify);
ogg_mux->active_pads++;
oggpad->serial = serial;
gst_ogg_mux_dequeue_page (GstOggMux * mux, GstFlowReturn * flowret)
{
GSList *walk;
- GstOggPad *opad = NULL; /* "oldest" pad */
+ GstOggPadData *opad = NULL; /* "oldest" pad */
GstClockTime oldest = GST_CLOCK_TIME_NONE;
GstBuffer *buf = NULL;
gboolean ret = FALSE;
walk = mux->collect->data;
while (walk) {
- GstOggPad *pad = (GstOggPad *) walk->data;
+ GstOggPadData *pad = (GstOggPadData *) walk->data;
/* We need each queue to either be at EOS, or have one or more pages
* available with a set granulepos (i.e. not -1), otherwise we don't have
walk = mux->collect->data;
while (walk) {
- GstOggPad *pad = (GstOggPad *) walk->data;
+ GstOggPadData *pad = (GstOggPadData *) walk->data;
/* any page with a granulepos of -1 can be pushed immediately.
* TODO: it CAN be, but it seems silly to do so? */
* counting.
*/
static GstFlowReturn
-gst_ogg_mux_pad_queue_page (GstOggMux * mux, GstOggPad * pad, ogg_page * page,
- gboolean delta)
+gst_ogg_mux_pad_queue_page (GstOggMux * mux, GstOggPadData * pad,
+ ogg_page * page, gboolean delta)
{
GstFlowReturn ret;
GstBuffer *buffer = gst_ogg_mux_buffer_from_page (mux, page, delta);
* of muxed pages
*/
static gint
-gst_ogg_mux_compare_pads (GstOggMux * ogg_mux, GstOggPad * first,
- GstOggPad * second)
+gst_ogg_mux_compare_pads (GstOggMux * ogg_mux, GstOggPadData * first,
+ GstOggPadData * second)
{
guint64 firsttime, secondtime;
* NULL when no pad was usable. "best" means the buffer marked
* with the lowest timestamp. If best->buffer == NULL then nothing
* should be done until more data arrives */
-static GstOggPad *
+static GstOggPadData *
gst_ogg_mux_queue_pads (GstOggMux * ogg_mux)
{
- GstOggPad *bestpad = NULL, *still_hungry = NULL;
+ GstOggPadData *bestpad = NULL, *still_hungry = NULL;
GSList *walk;
/* try to make sure we have a buffer from each usable pad first */
walk = ogg_mux->collect->data;
while (walk) {
- GstOggPad *pad;
+ GstOggPadData *pad;
GstCollectData *data;
data = (GstCollectData *) walk->data;
- pad = (GstOggPad *) data;
+ pad = (GstOggPadData *) data;
walk = g_slist_next (walk);
}
static GList *
-gst_ogg_mux_get_headers (GstOggPad * pad)
+gst_ogg_mux_get_headers (GstOggPadData * pad)
{
GList *res = NULL;
GstStructure *structure;
walk = mux->collect->data;
while (walk) {
- GstOggPad *pad;
+ GstOggPadData *pad;
GstPad *thepad;
- pad = (GstOggPad *) walk->data;
+ pad = (GstOggPadData *) walk->data;
thepad = pad->collect.pad;
walk = g_slist_next (walk);
GST_LOG_OBJECT (mux, "creating BOS pages");
walk = mux->collect->data;
while (walk) {
- GstOggPad *pad;
+ GstOggPadData *pad;
GstBuffer *buf;
ogg_packet packet;
ogg_page page;
GstStructure *structure;
GstBuffer *hbuf;
- pad = (GstOggPad *) walk->data;
+ pad = (GstOggPadData *) walk->data;
thepad = pad->collect.pad;
caps = gst_pad_get_negotiated_caps (thepad);
structure = gst_caps_get_structure (caps, 0);
GST_LOG_OBJECT (mux, "creating next headers");
walk = mux->collect->data;
while (walk) {
- GstOggPad *pad;
+ GstOggPadData *pad;
GstPad *thepad;
- pad = (GstOggPad *) walk->data;
+ pad = (GstOggPadData *) walk->data;
thepad = pad->collect.pad;
walk = walk->next;
* pads are at EOS)
*/
static GstFlowReturn
-gst_ogg_mux_process_best_pad (GstOggMux * ogg_mux, GstOggPad * best)
+gst_ogg_mux_process_best_pad (GstOggMux * ogg_mux, GstOggPadData * best)
{
GstFlowReturn ret = GST_FLOW_OK;
gboolean delta_unit;
* for the pad we were pulling from before */
if (ogg_mux->pulling && best &&
ogg_mux->pulling != best && ogg_mux->pulling->buffer) {
- GstOggPad *pad = ogg_mux->pulling;
+ GstOggPadData *pad = ogg_mux->pulling;
GstClockTime last_ts = GST_BUFFER_END_TIME (pad->buffer);
ogg_packet packet;
ogg_page page;
GstBuffer *buf, *tmpbuf;
- GstOggPad *pad = ogg_mux->pulling;
+ GstOggPadData *pad = ogg_mux->pulling;
gint64 duration;
gboolean force_flush;
static GstFlowReturn
gst_ogg_mux_collected (GstCollectPads * pads, GstOggMux * ogg_mux)
{
- GstOggPad *best;
+ GstOggPadData *best;
GstFlowReturn ret;
gint activebefore;
walk = collect->data;
while (walk) {
- GstOggPad *oggpad = (GstOggPad *) walk->data;
+ GstOggPadData *oggpad = (GstOggPadData *) walk->data;
ogg_stream_init (&oggpad->stream, oggpad->serial);
oggpad->packetno = 0;
GSList *walk;
for (walk = collect->data; walk; walk = g_slist_next (walk)) {
- GstOggPad *oggpad = (GstOggPad *) walk->data;
+ GstOggPadData *oggpad = (GstOggPadData *) walk->data;
GstBuffer *buf;
ogg_stream_clear (&oggpad->stream);
#include <ogg/ogg.h>
#include <gst/gst.h>
+#include <gst/base/gstcollectpads.h>
G_BEGIN_DECLS
gboolean always_flush_page;
}
-GstOggPad;
+GstOggPadData;
/**
* GstOggMux:
gint active_pads;
/* the pad we are currently using to fill a page */
- GstOggPad *pulling;
+ GstOggPadData *pulling;
/* next timestamp for the page */
GstClockTime next_ts;
guint64 max_delay;
guint64 max_page_delay;
- GstOggPad *delta_pad; /* when a delta frame is detected on a stream, we mark
+ GstOggPadData *delta_pad; /* when a delta frame is detected on a stream, we mark
pages as delta frames up to the page that has the
keyframe */
GType gst_ogg_mux_get_type (void);
+gboolean gst_ogg_mux_plugin_init (GstPlugin * plugin);
+
G_END_DECLS
#endif /* __GST_OGG_MUX_H__ */
#include <ogg/ogg.h>
#include <string.h>
+#include "gstogg.h"
#include "gstoggstream.h"
static const GstElementDetails gst_ogg_parse_details =
#include "gstoggstream.h"
#include "dirac_parse.h"
+#include "vorbis_parse.h"
#include <gst/riff/riff-media.h>
+#include <stdlib.h>
#include <string.h>
GST_DEBUG_CATEGORY_EXTERN (gst_ogg_demux_debug);
keyframe_granule);
}
+#if 0
gboolean
gst_ogg_stream_packet_granulepos_is_key_frame (GstOggStream * pad,
gint64 granulepos)
return mappers[pad->map].is_key_frame_func (pad, granulepos);
}
+#endif
gboolean
gst_ogg_stream_packet_is_header (GstOggStream * pad, ogg_packet * packet)
/* vorbis */
-void parse_vorbis_header_packet (GstOggStream * pad, ogg_packet * op);
-void parse_vorbis_setup_packet (GstOggStream * pad, ogg_packet * op);
-
-
static gboolean
setup_vorbis_mapper (GstOggStream * pad, ogg_packet * packet)
{
return TRUE;
}
-gboolean
-gst_ogg_map_add_fisbone (GstOggStream * pad,
- const guint8 * data, guint size, GstClockTime * p_start_time,
- guint32 * p_preroll)
-{
- GstClockTime start_time;
- gint64 start_granule;
- guint32 preroll;
-
- if (size < SKELETON_FISBONE_MIN_SIZE || memcmp (data, "fisbone\0", 8) != 0) {
- GST_WARNING ("invalid fisbone packet, ignoring");
- return FALSE;
- }
-
- if (pad->have_fisbone) {
- GST_DEBUG ("already have fisbone, ignoring second one");
- return FALSE;
- }
-
- /* skip "fisbone\0" + headers offset + serialno + num headers */
- data += 8 + 4 + 4 + 4;
-
- pad->have_fisbone = TRUE;
-
- /* we just overwrite whatever was set before by the format-specific setup */
- pad->granulerate_n = GST_READ_UINT64_LE (data);
- pad->granulerate_d = GST_READ_UINT64_LE (data + 8);
-
- start_granule = GST_READ_UINT64_LE (data + 16);
- preroll = GST_READ_UINT32_LE (data + 24);
- pad->granuleshift = GST_READ_UINT8 (data + 28);
-
- start_time = granulepos_to_granule_default (pad, start_granule);
-
- if (p_start_time)
- *p_start_time = start_time;
-
- if (p_preroll)
- *p_preroll = preroll;
-
- return TRUE;
-}
-
/* Do we need these for something?
* ogm->hdr.size = GST_READ_UINT32_LE (&data[13]);
* ogm->hdr.time_unit = GST_READ_UINT64_LE (&data[17]);
#include <gst/riff/riff-media.h>
#include <gst/riff/riff-read.h>
+#include "gstogg.h"
+
GST_DEBUG_CATEGORY_STATIC (gst_ogm_parse_debug);
#define GST_CAT_DEFAULT gst_ogm_parse_debug
#include <string.h>
#include "gstoggstream.h"
+#include "vorbis_parse.h"
/*
* Vorbis packets can be short or long, and each packet overlaps the previous
--- /dev/null
+/* GStreamer
+ * Copyright (C) 2004 Wim Taymans <wim@fluendo.com>
+ *
+ * gstoggdemux.c: ogg stream demuxer
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __GST_VORBIS_PARSE_H__
+#define __GST_VORBIS_PARSE_H__
+
+#include <gst/gst.h>
+
+void parse_vorbis_header_packet (GstOggStream * pad, ogg_packet * packet);
+void parse_vorbis_setup_packet (GstOggStream * pad, ogg_packet * op);
+
+#endif /* __GST_VORBIS_PARSE_H__ */
GstElementClass parent_class;
};
+GType gst_theora_dec_get_type (void);
+
G_END_DECLS
#endif /* __GST_THEORADEC_H__ */
GstElementClass parent_class;
};
+GType gst_theora_enc_get_type (void);
+
G_END_DECLS
#endif /* __GST_THEORAENC_H__ */
GST_AUDIO_FIELD_DEPTH = (1 << 4),
GST_AUDIO_FIELD_SIGNED = (1 << 5),
} GstAudioFieldFlag;
+void
+gst_audio_structure_set_int (GstStructure * structure, GstAudioFieldFlag flag);
#endif /* GST_DISABLE_DEPRECATED */
void
#include <gst/gst.h>
+#include "riff-read.h"
+
GST_DEBUG_CATEGORY (riff_debug);
/**
*/
/* This isn't efficient, but it doesn't need to be */
#ifndef GST_REMOVE_DEPRECATED
+#ifdef GST_DISABLE_DEPRECATED
+gchar *gst_rtsp_base64_encode (const gchar * data, gsize len);
+#endif
gchar *
gst_rtsp_base64_encode (const gchar * data, gsize len)
{
* Since: 0.10.24
*/
#ifndef GST_REMOVE_DEPRECATED
+#ifdef GST_DISABLE_DEPRECATED
+guint
+gst_rtsp_watch_queue_data (GstRTSPWatch * watch, const guint8 * data,
+ guint size);
+#endif
guint
gst_rtsp_watch_queue_data (GstRTSPWatch * watch, const guint8 * data,
guint size)
* Since: 0.10.23
*/
#ifndef GST_REMOVE_DEPRECATED
+#ifdef GST_DISABLE_DEPRECATED
+guint
+gst_rtsp_watch_queue_message (GstRTSPWatch * watch, GstRTSPMessage * message);
+#endif
guint
gst_rtsp_watch_queue_message (GstRTSPWatch * watch, GstRTSPMessage * message)
{
#include <gst/gst-i18n-plugin.h>
#include <gst/gst.h>
+
#include <string.h>
#include <stdlib.h>
+#include "tag.h"
#include "lang-tables.dat"
/* FIXME: remove once we depend on GLib >= 2.22 */
plugin_LTLIBRARIES = libgstffmpegcolorspace.la
libgstffmpegcolorspace_la_SOURCES = \
- gstffmpeg.c \
gstffmpegcolorspace.c \
gstffmpegcodecmap.c \
dsputil.c \
}
}
-gboolean
-gst_ffmpegcolorspace_register (GstPlugin * plugin)
+static gboolean
+plugin_init (GstPlugin * plugin)
{
GstCaps *caps;
"FFMPEG-based colorspace converter");
GST_DEBUG_CATEGORY_GET (ffmpegcolorspace_performance, "GST_PERFORMANCE");
+ avcodec_init ();
+
/* template caps */
caps = gst_ffmpegcsp_codectype_to_caps (CODEC_TYPE_VIDEO, NULL);
return gst_element_register (plugin, "ffmpegcolorspace",
GST_RANK_NONE, GST_TYPE_FFMPEGCSP);
}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "ffmpegcolorspace",
+ "colorspace conversion copied from FFMpeg " FFMPEG_VERSION,
+ plugin_init, VERSION, "LGPL", "FFMpeg", "http://ffmpeg.sourceforge.net/")
gboolean gst_gdp_depay_plugin_init (GstPlugin * plugin);
+GType gst_gdp_depay_get_type (void);
+
G_END_DECLS
#endif /* __GST_GDP_DEPAY_H__ */
gboolean gst_gdp_pay_plugin_init (GstPlugin * plugin);
+GType gst_gdp_pay_get_type (void);
+
G_END_DECLS
#endif /* __GST_GDP_PAY_H__ */
#include "gstplay-marshal.h"
#include "gstplay-enum.h"
+#include "gstplayback.h"
#include "gstfactorylists.h"
#include "gstrawcaps.h"
gboolean drained; /* an EOS has been seen on the pad */
};
+GType gst_decode_pad_get_type (void);
G_DEFINE_TYPE (GstDecodePad, gst_decode_pad, GST_TYPE_GHOST_PAD);
#define GST_TYPE_DECODE_PAD (gst_decode_pad_get_type ())
#define GST_DECODE_PAD(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DECODE_PAD,GstDecodePad))
#include <gst/gst-i18n-plugin.h>
#include <gst/pbutils/pbutils.h>
+#include "gstplayback.h"
+#include "gstplaysink.h"
#include "gststreamselector.h"
#include "gststreaminfo.h"
-#include "gstplaysink.h"
#include "gstsubtitleoverlay.h"
-gboolean gst_play_bin_plugin_init (GstPlugin * plugin);
-gboolean gst_play_bin2_plugin_init (GstPlugin * plugin);
-
static gboolean
plugin_init (GstPlugin * plugin)
{
/* GStreamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ * Copyright (C) <2007> Wim Taymans <wim.taymans@gmail.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* Boston, MA 02111-1307, USA.
*/
-/* First, include the header file for the plugin, to bring in the
- * object definition and other useful things.
- */
+#ifndef __GST_PLAY_BACK_H__
+#define __GST_PLAY_BACK_H__
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
#include <gst/gst.h>
-#include "avcodec.h"
-
-extern gboolean gst_ffmpegcolorspace_register (GstPlugin * plugin);
-
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
- avcodec_init ();
- gst_ffmpegcolorspace_register (plugin);
+gboolean gst_decode_bin_plugin_init (GstPlugin * plugin);
+gboolean gst_play_bin_plugin_init (GstPlugin * plugin);
+gboolean gst_play_bin2_plugin_init (GstPlugin * plugin);
- /* Now we can return the pointer to the newly created Plugin object. */
- return TRUE;
-}
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "ffmpegcolorspace",
- "colorspace conversion copied from FFMpeg " FFMPEG_VERSION,
- plugin_init, VERSION, "LGPL", "FFMpeg", "http://ffmpeg.sourceforge.net/")
+#endif /* __GST_PLAY_SINK_H__ */
#include <gst/pbutils/pbutils.h>
#include "gstplaybasebin.h"
+#include "gstplayback.h"
GST_DEBUG_CATEGORY_STATIC (gst_play_bin_debug);
#define GST_CAT_DEFAULT gst_play_bin_debug
#include "gstplay-enum.h"
#include "gstplay-marshal.h"
+#include "gstplayback.h"
#include "gstplaysink.h"
#include "gstfactorylists.h"
#include "gstinputselector.h"
static guint gst_uri_decode_bin_signals[LAST_SIGNAL] = { 0 };
+GType gst_uri_decode_bin_get_type (void);
GST_BOILERPLATE (GstURIDecodeBin, gst_uri_decode_bin, GstBin, GST_TYPE_BIN);
static void remove_decoders (GstURIDecodeBin * bin, gboolean force);
GstElementClass parent_class;
};
+GType gst_video_rate_get_type (void);
+
G_END_DECLS
#endif /* __GST_VIDEO_RATE_H__ */
* The exact operation performed doesn't matter. Currently it multiplies with
* two, but it could do anything. The idea is to use the function to verify
* that the code calling it gets run. */
-gint
+static gint
operate_on_data (gint indata)
{
return indata * 2;
}
-void
-notify_test_function (gpointer userdata)
-{
- global_testdata = operate_on_data (GPOINTER_TO_INT (userdata));
-}
-
static GstFlowReturn
callback_function (GstAppSink * appsink, gpointer callback_data)
{
return GST_FLOW_OK;
}
-void
+static void
notify_function (gpointer callback_data)
{
global_testdata = operate_on_data (*((gint *) callback_data));
typedef GstElement TestInjector;
typedef GstElementClass TestInjectorClass;
+GType test_injector_get_type (void);
GST_BOILERPLATE (TestInjector, test_injector, GstElement, GST_TYPE_ELEMENT);
#define INJECTOR_CAPS \
guint64 in_buffer_count, out_buffer_count;
} TimestampDriftCtx;
-void
+static void
fakesink_handoff_cb (GstElement * object, GstBuffer * buffer, GstPad * pad,
gpointer user_data)
{
ctx->next_out_off = GST_BUFFER_OFFSET_END (buffer);
}
-void
+static void
identity_handoff_cb (GstElement * object, GstBuffer * buffer,
gpointer user_data)
{
GstCddaBaseSrcClass parent_class;
};
+GType gst_cd_foo_src_get_type (void);
GST_BOILERPLATE (GstCdFooSrc, gst_cd_foo_src, GstCddaBaseSrc,
GST_TYPE_CDDA_BASE_SRC);
GstElementClass parent_class;
};
+GType test_element_get_type (void);
+
static void init_interface (GType type);
static void gst_implements_interface_init (GstImplementsInterfaceClass * klass);
GstElementClass parent_class;
};
+GType test_element_get_type (void);
+
static void init_interface (GType type);
static void gst_implements_interface_init (GstImplementsInterfaceClass * klass);
static void nav_send_event (GstNavigation * navigation,
}
}
-gboolean
+static gboolean
message_handler (GstBus * bus, GstMessage * message, gpointer user_data)
{