summaryrefslogtreecommitdiffstats
path: root/gst
diff options
context:
space:
mode:
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>2003-06-26 21:33:14 +0000
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>2003-06-26 21:33:14 +0000
commit082ae3664505d67b1b2a4953a91593737f7ca55f (patch)
treeb47f35adb4548f7b6a8fcf145ebeb6cc9e7c0c5e /gst
parentf40cfecbeea9e78e2b9a9f825898dc0fd17e933f (diff)
Remove some more unused cruft left over from our ancient avifile period
Original commit message from CVS: Remove some more unused cruft left over from our ancient avifile period
Diffstat (limited to 'gst')
-rw-r--r--gst/avi/Makefile.am17
-rw-r--r--gst/avi/README_win32dll3
-rw-r--r--gst/avi/audiocodecs.c189
-rw-r--r--gst/avi/gstaviaudiodecoder.c197
-rw-r--r--gst/avi/gstaviaudiodecoder.h65
-rw-r--r--gst/avi/gstaviparse.c332
6 files changed, 2 insertions, 801 deletions
diff --git a/gst/avi/Makefile.am b/gst/avi/Makefile.am
index a63d90fa..1fce33a4 100644
--- a/gst/avi/Makefile.am
+++ b/gst/avi/Makefile.am
@@ -3,18 +3,13 @@ plugindir = $(libdir)/gstreamer-@GST_MAJORMINOR@
plugin_LTLIBRARIES = \
libgstavimux.la \
libgstavidemux.la
-# libgstaviparse.la
-# libgstaviaudiodecoder.la
libgstavidemux_la_SOURCES = gstavidemux.c
libgstavimux_la_SOURCES = gstavimux.c
-#libgstaviparse_la_SOURCES = gstaviparse.c
-# libgstaviaudiodecoder_la_SOURCES = gstaviaudiodecoder.c
noinst_HEADERS = \
gstavimux.h \
- gstavidemux.h \
- gstaviaudiodecoder.h
+ gstavidemux.h
#CFLAGS += $(GST_CFLAGS) -O3 $(GST_OPT_CFLAGS) $(GST_FUNROLL_CFLAGS) -fomit-frame-pointer -DNDEBUG
@@ -26,12 +21,4 @@ libgstavimux_la_CFLAGS = -O2 $(GST_FFASTMATH_CFLAGS) $(GST_CFLAGS)
libgstavimux_la_LIBADD =
libgstavimux_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-#libgstaviparse_la_CFLAGS = -O2 $(GST_FFASTMATH_CFLAGS) $(GST_CFLAGS)
-#libgstaviparse_la_LIBADD =
-#libgstaviparse_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-
-# libgstaviaudiodecoder_la_CFLAGS = -O2 $(GST_FFASTMATH_CFLAGS) $(GST_CFLAGS)
-# libgstaviaudiodecoder_la_LIBADD =
-# libgstaviaudiodecoder_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-
-EXTRA_DIST = README_win32dll README
+EXTRA_DIST = README
diff --git a/gst/avi/README_win32dll b/gst/avi/README_win32dll
deleted file mode 100644
index ed34a3bd..00000000
--- a/gst/avi/README_win32dll
+++ /dev/null
@@ -1,3 +0,0 @@
-The current win32 dll loader don't work with all versions availble
-out there. Make sure to get the windows dll where divxc32.dll has the date
-older than 24 january 2000. The 24 january one does currently not work.
diff --git a/gst/avi/audiocodecs.c b/gst/avi/audiocodecs.c
deleted file mode 100644
index b3629328..00000000
--- a/gst/avi/audiocodecs.c
+++ /dev/null
@@ -1,189 +0,0 @@
-/* GStreamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- *
- * 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.
- */
-
-
-
-/*#define DEBUG_ENABLED */
-
-
-#include <wine/winbase.h>
-#include <wine/winerror.h>
-#include <wine/driver.h>
-#include <wine/msacm.h>
-#define WIN32
-#include <gstavidecoder.h>
-
-typedef struct _GstWinLoaderAudioData GstWinLoaderAudioData;
-
-struct _GstWinLoaderAudioData {
- guchar ext_info[64];
- WAVEFORMATEX wf;
- HACMSTREAM srcstream;
- GstPad *out;
-};
-
-
-static GstPad *gst_avi_decoder_get_audio_srcpad_MPEG(GstAviDecoder *avi_decoder, guint pad_nr, GstPadTemplate *temp);
-static GstPad *gst_avi_decoder_get_audio_srcpad_winloader(GstAviDecoder *avi_decoder, guint pad_nr, gst_riff_strf_auds *strf, GstPadTemplate *temp);
-static void gst_avi_decoder_winloader_audio_chain(GstPad *pad, GstBuffer *buf);
-
-GstPad *gst_avi_decoder_get_audio_srcpad(GstAviDecoder *avi_decoder, guint pad_nr, gst_riff_strf_auds *strf, GstPadTemplate *temp)
-{
- GstPad *newpad;
-
- switch (strf->format) {
- case GST_RIFF_WAVE_FORMAT_PCM:
- newpad = gst_pad_new("audio_00", GST_PAD_SRC);
- gst_pad_try_set_caps (newpad,
- GST_CAPS_NEW (
- "avidecoder_caps",
- "audio/raw",
- "format", GST_PROPS_STRING ("int"),
- "law", GST_PROPS_INT (0),
- "endianness", GST_PROPS_INT (G_BYTE_ORDER),
- "signed", GST_PROPS_BOOLEAN (TRUE),
- "width", GST_PROPS_INT ((gint)strf->size),
- "depth", GST_PROPS_INT ((gint)strf->size),
- "rate", GST_PROPS_INT ((gint)strf->rate),
- "channels", GST_PROPS_INT ((gint)strf->channels)
- ));
-
- avi_decoder->audio_pad[pad_nr] = newpad;
- return newpad;
- case GST_RIFF_WAVE_FORMAT_MPEGL12:
- case GST_RIFF_WAVE_FORMAT_MPEGL3:
- return gst_avi_decoder_get_audio_srcpad_MPEG(avi_decoder, pad_nr, temp);
- default:
- newpad = gst_avi_decoder_get_audio_srcpad_winloader(avi_decoder, pad_nr, strf, temp);
- if (newpad) return newpad;
- printf("audio format %04x not supported\n", strf->format);
- break;
- }
- return NULL;
-}
-
-static GstPad *gst_avi_decoder_get_audio_srcpad_MPEG(GstAviDecoder *avi_decoder, guint pad_nr, GstPadTemplate *temp)
-{
- GstElement *parse_audio, *decode;
- GstPad *srcpad, *sinkpad, *newpad;
-
- parse_audio = gst_element_factory_make("mp3parse", "parse_audio");
- g_return_val_if_fail(parse_audio != NULL, NULL);
- decode = gst_element_factory_make("mpg123", "decode_audio");
- g_return_val_if_fail(decode != NULL, NULL);
-
- gst_element_set_state(GST_ELEMENT(gst_object_get_parent(GST_OBJECT(avi_decoder))), GST_STATE_PAUSED);
-
- gst_bin_add(GST_BIN(gst_object_get_parent(GST_OBJECT(avi_decoder))), parse_audio);
- gst_bin_add(GST_BIN(gst_object_get_parent(GST_OBJECT(avi_decoder))), decode);
-
- newpad = gst_pad_new("video", GST_PAD_SRC);
- gst_pad_set_parent(newpad, GST_ELEMENT(avi_decoder));
-
- sinkpad = gst_element_get_pad(parse_audio,"sink");
- gst_pad_connect(gst_element_get_pad(parse_audio,"src"),
- gst_element_get_pad(decode,"sink"));
- gst_pad_set_chain_function (gst_element_get_pad(parse_audio,"src"),
- GST_RPAD_CHAINFUNC (gst_element_get_pad(decode,"sink")));
- srcpad = gst_element_get_pad(decode,"src");
-
- gst_pad_connect(newpad, sinkpad);
- gst_pad_set_name(srcpad, "audio_00");
- gst_pad_set_chain_function (newpad, GST_RPAD_CHAINFUNC (sinkpad));
-
- avi_decoder->audio_pad[pad_nr] = newpad;
- gst_element_set_state(GST_ELEMENT(gst_object_get_parent(GST_OBJECT(avi_decoder))), GST_STATE_PLAYING);
-
- return srcpad;
-}
-
-static GstPad *gst_avi_decoder_get_audio_srcpad_winloader(GstAviDecoder *avi_decoder, guint pad_nr, gst_riff_strf_auds *strf, GstPadTemplate *temp)
-{
- HRESULT h;
- GstWinLoaderAudioData *data;
- GstPad *sinkpad, *newpad;
-
- if (!gst_library_load("winloader")) {
- gst_info("audiocodecs: could not load support library: 'winloader'\n");
- return NULL;
- }
- gst_info("audiocodecs: winloader loaded\n");
-
- avi_decoder->extra_data = g_malloc0(sizeof(GstWinLoaderAudioData));
-
- data = (GstWinLoaderAudioData *)avi_decoder->extra_data;
-
- memcpy(data->ext_info, strf, sizeof(WAVEFORMATEX));
- memset(data->ext_info+18, 0, 32);
-
- if (strf->rate == 0)
- return NULL;
-
- data->wf.nChannels=strf->channels;
- data->wf.nSamplesPerSec=strf->rate;
- data->wf.nAvgBytesPerSec=2*data->wf.nSamplesPerSec*data->wf.nChannels;
- data->wf.wFormatTag=strf->format;
- data->wf.nBlockAlign=strf->blockalign;
- data->wf.wBitsPerSample=strf->av_bps;
- data->wf.cbSize=0;
-
- gst_info("audiocodecs: trying to open library %p\n", data);
- h = acmStreamOpen(
- &data->srcstream,
- (HACMDRIVER)NULL,
- (WAVEFORMATEX*)data->ext_info,
- (WAVEFORMATEX*)&data->wf,
- NULL,
- 0,
- 0,
- 0);
-
- if(h != S_OK)
- {
- if(h == ACMERR_NOTPOSSIBLE) {
- printf("audiocodecs:: Unappropriate audio format\n");
- }
- printf("audiocodecs:: acmStreamOpen error\n");
- return NULL;
- }
-
- newpad = gst_pad_new("audio", GST_PAD_SINK);
- gst_pad_set_parent(newpad, GST_ELEMENT(avi_decoder));
- gst_pad_set_chain_function(newpad, gst_avi_decoder_winloader_audio_chain);
-
- sinkpad = gst_pad_new("audio_00", GST_PAD_SRC);
- gst_pad_set_parent(sinkpad, GST_ELEMENT(avi_decoder));
- gst_pad_connect(newpad, sinkpad);
- gst_pad_set_chain_function (newpad, GST_RPAD_CHAINFUNC (sinkpad));
-
- /*gst_pad_connect(newpad, sinkpad); */
- avi_decoder->audio_pad[pad_nr] = newpad;
-
- data->out = sinkpad;
-
- GST_DEBUG (0,"gst_avi_decoder: pads created");
- return sinkpad;
-}
-
-static void gst_avi_decoder_winloader_audio_chain(GstPad *pad, GstBuffer *buf)
-{
-
- GST_DEBUG (0,"gst_avi_decoder: got buffer %08lx %p", *(gulong *)GST_BUFFER_DATA(buf), GST_BUFFER_DATA(buf));
- gst_buffer_unref(buf);
-}
diff --git a/gst/avi/gstaviaudiodecoder.c b/gst/avi/gstaviaudiodecoder.c
deleted file mode 100644
index ad0a6782..00000000
--- a/gst/avi/gstaviaudiodecoder.c
+++ /dev/null
@@ -1,197 +0,0 @@
-/* GStreamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- *
- * 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.
- */
-
-
-/*#define GST_DEBUG_ENABLED */
-#include <string.h>
-
-#include "gstaviaudiodecoder.h"
-
-
-
-/* elementfactory information */
-static GstElementDetails gst_avi_audio_decoder_details = {
- ".avi parser",
- "Parser/Video",
- "LGPL",
- "Parse a .avi file into audio and video",
- VERSION,
- "Erik Walthinsen <omega@cse.ogi.edu>\n"
- "Wim Taymans <wim.taymans@tvd.be>",
- "(C) 1999",
-};
-
-/* AviAudioDecoder signals and args */
-enum {
- /* FILL ME */
- LAST_SIGNAL
-};
-
-enum {
- ARG_0,
- /* FILL ME */
-};
-
-GST_PAD_TEMPLATE_FACTORY (sink_templ,
- "sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_CAPS_NEW (
- "avidecoder_sink",
- "video/avi",
- "format", GST_PROPS_STRING ("strf_auds")
- )
-)
-
-GST_PAD_TEMPLATE_FACTORY (src_audio_templ,
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_CAPS_NEW (
- "src_audio",
- "audio/raw",
- "format", GST_PROPS_STRING ("int"),
- "law", GST_PROPS_INT (0),
- "endianness", GST_PROPS_INT (G_BYTE_ORDER),
- "signed", GST_PROPS_BOOLEAN (TRUE),
- "width", GST_PROPS_INT (16),
- "depth", GST_PROPS_INT (16),
- "rate", GST_PROPS_INT_RANGE (11025, 44100),
- "channels", GST_PROPS_INT_RANGE (1, 2)
- )
-)
-
-static void gst_avi_audio_decoder_class_init (GstAviAudioDecoderClass *klass);
-static void gst_avi_audio_decoder_init (GstAviAudioDecoder *avi_audio_decoder);
-
-static void gst_avi_audio_decoder_chain (GstPad *pad, GstBuffer *buf);
-
-static void gst_avi_audio_decoder_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
-
-
-
-static GstElementClass *parent_class = NULL;
-/*static guint gst_avi_audio_decoder_signals[LAST_SIGNAL] = { 0 }; */
-
-GType
-gst_avi_audio_decoder_get_type(void)
-{
- static GType avi_audio_decoder_type = 0;
-
- if (!avi_audio_decoder_type) {
- static const GTypeInfo avi_audio_decoder_info = {
- sizeof(GstAviAudioDecoderClass),
- NULL,
- NULL,
- (GClassInitFunc)gst_avi_audio_decoder_class_init,
- NULL,
- NULL,
- sizeof(GstAviAudioDecoder),
- 0,
- (GInstanceInitFunc)gst_avi_audio_decoder_init,
- };
- avi_audio_decoder_type = g_type_register_static(GST_TYPE_ELEMENT, "GstAviAudioDecoder", &avi_audio_decoder_info, 0);
- }
- return avi_audio_decoder_type;
-}
-
-static void
-gst_avi_audio_decoder_class_init (GstAviAudioDecoderClass *klass)
-{
- GObjectClass *gobject_class;
- GstElementClass *gstelement_class;
-
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
-
- parent_class = g_type_class_ref (GST_TYPE_BIN);
-
- gobject_class->get_property = gst_avi_audio_decoder_get_property;
-}
-
-static void
-gst_avi_audio_decoder_init (GstAviAudioDecoder *avi_audio_decoder)
-{
-}
-
-static void
-gst_avi_audio_decoder_chain (GstPad *pad,
- GstBuffer *buf)
-{
- GstAviAudioDecoder *avi_audio_decoder;
- guchar *data;
- gulong size;
-
- g_return_if_fail (pad != NULL);
- g_return_if_fail (GST_IS_PAD(pad));
- g_return_if_fail (buf != NULL);
- g_return_if_fail (GST_BUFFER_DATA(buf) != NULL);
-
- avi_audio_decoder = GST_AVI_AUDIO_DECODER (gst_pad_get_parent (pad));
- GST_DEBUG (0,"gst_avi_audio_decoder_chain: got buffer in %u", GST_BUFFER_OFFSET (buf));
- g_print ("gst_avi_audio_decoder_chain: got buffer in %u\n", GST_BUFFER_OFFSET (buf));
- data = (guchar *)GST_BUFFER_DATA (buf);
- size = GST_BUFFER_SIZE (buf);
-
- gst_buffer_unref (buf);
-}
-
-static void
-gst_avi_audio_decoder_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
-{
- GstAviAudioDecoder *src;
-
- g_return_if_fail (GST_IS_AVI_AUDIO_DECODER (object));
-
- src = GST_AVI_AUDIO_DECODER (object);
-
- switch(prop_id) {
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-
-static gboolean
-plugin_init (GModule *module, GstPlugin *plugin)
-{
- GstElementFactory *factory;
-
- /* create an elementfactory for the avi_audio_decoder element */
- factory = gst_element_factory_new ("aviaudiodecoder",GST_TYPE_AVI_AUDIO_DECODER,
- &gst_avi_audio_decoder_details);
- g_return_val_if_fail (factory != NULL, FALSE);
- gst_element_factory_set_rank (factory, GST_ELEMENT_RANK_PRIMARY);
-
- gst_element_factory_add_pad_template (factory, GST_PAD_TEMPLATE_GET (sink_templ));
- gst_element_factory_add_pad_template (factory, GST_PAD_TEMPLATE_GET (src_audio_templ));
-
- gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory));
-
- return TRUE;
-}
-
-GstPluginDesc plugin_desc = {
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "aviaudiodecoder",
- plugin_init
-};
-
diff --git a/gst/avi/gstaviaudiodecoder.h b/gst/avi/gstaviaudiodecoder.h
deleted file mode 100644
index 9bbfd325..00000000
--- a/gst/avi/gstaviaudiodecoder.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* GStreamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- *
- * 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_AVI_AUDIO_DECODER_H__
-#define __GST_AVI_AUDIO_DECODER_H__
-
-
-#include <config.h>
-#include <gst/gst.h>
-#include <gst/riff/riff.h>
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#define GST_TYPE_AVI_AUDIO_DECODER \
- (gst_avi_audio_decoder_get_type())
-#define GST_AVI_AUDIO_DECODER(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AVI_AUDIO_DECODER,GstAviAudioDecoder))
-#define GST_AVI_AUDIO_DECODER_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AVI_AUDIO_DECODER,GstAviAudioDecoder))
-#define GST_IS_AVI_AUDIO_DECODER(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AVI_AUDIO_DECODER))
-#define GST_IS_AVI_AUDIO_DECODER_CLASS(obj) \
- (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AVI_AUDIO_DECODER))
-
-
-typedef struct _GstAviAudioDecoder GstAviAudioDecoder;
-typedef struct _GstAviAudioDecoderClass GstAviAudioDecoderClass;
-
-struct _GstAviAudioDecoder {
- GstBin bin;
-
-};
-
-struct _GstAviAudioDecoderClass {
- GstBinClass parent_class;
-};
-
-GType gst_avi_audio_decoder_get_type (void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* __GST_AVI_AUDIO_DECODER_H__ */
diff --git a/gst/avi/gstaviparse.c b/gst/avi/gstaviparse.c
deleted file mode 100644
index d5a2fb06..00000000
--- a/gst/avi/gstaviparse.c
+++ /dev/null
@@ -1,332 +0,0 @@
-/* GStreamer
- * Copyright (C) <1999> Erik Walthinsen <omega@temple-baptist.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-
-/* #define GST_DEBUG_ENABLED */
-#include <string.h>
-#include <config.h>
-#include <gst/gst.h>
-#include <gst/bytestream/bytestream.h>
-#include <gst/riff/riff.h>
-
-#define GST_TYPE_AVI_PARSE \
- (gst_avi_parse_get_type())
-#define GST_AVI_PARSE(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AVI_PARSE,GstAviParse))
-#define GST_AVI_PARSE_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AVI_PARSE,GstAviParse))
-#define GST_IS_AVI_PARSE(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AVI_PARSE))
-#define GST_IS_AVI_PARSE_CLASS(obj) \
- (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AVI_PARSE))
-
-typedef struct _GstAviParse GstAviParse;
-typedef struct _GstAviParseClass GstAviParseClass;
-
-struct _GstAviParse {
- GstElement element;
-
- /* pads */
- GstPad *sinkpad,
- *srcpad;
-
- GstRiffParse *rp;
-};
-
-struct _GstAviParseClass {
- GstElementClass parent_class;
-};
-
-/* elementfactory information */
-static GstElementDetails gst_avi_parse_details = {
- "Avi parseer",
- "Codec/Parseer",
- "LGPL",
- "Demultiplex an avi file into audio and video",
- VERSION,
- "Wim Taymans <wim.taymans@tvd.be>",
- "(C) 2003",
-};
-
-static GstCaps* avi_type_find (GstBuffer *buf, gpointer private);
-
-/* typefactory for 'avi' */
-static GstTypeDefinition avidefinition = {
- "aviparse_video/avi",
- "video/avi",
- ".avi",
- avi_type_find,
-};
-
-/* AviParse signals and args */
-enum {
- /* FILL ME */
- LAST_SIGNAL
-};
-
-enum {
- ARG_0,
- ARG_BITRATE,
- /* FILL ME */
-};
-
-GST_PAD_TEMPLATE_FACTORY (sink_templ,
- "sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_CAPS_NEW (
- "aviparse_sink",
- "video/avi",
- "format", GST_PROPS_STRING ("AVI")
- )
-)
-
-GST_PAD_TEMPLATE_FACTORY (src_templ,
- "src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_CAPS_NEW (
- "aviparse_sink",
- "video/avi",
- "format", GST_PROPS_STRING ("AVI")
- )
-)
-
-static void gst_avi_parse_class_init (GstAviParseClass *klass);
-static void gst_avi_parse_init (GstAviParse *avi_parse);
-
-static void gst_avi_parse_loop (GstElement *element);
-
-static GstElementStateReturn
- gst_avi_parse_change_state (GstElement *element);
-
-static void gst_avi_parse_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec);
-
-
-static GstElementClass *parent_class = NULL;
-/*static guint gst_avi_parse_signals[LAST_SIGNAL] = { 0 }; */
-
-GType
-gst_avi_parse_get_type(void)
-{
- static GType avi_parse_type = 0;
-
- if (!avi_parse_type) {
- static const GTypeInfo avi_parse_info = {
- sizeof(GstAviParseClass),
- NULL,
- NULL,
- (GClassInitFunc)gst_avi_parse_class_init,
- NULL,
- NULL,
- sizeof(GstAviParse),
- 0,
- (GInstanceInitFunc)gst_avi_parse_init,
- };
- avi_parse_type = g_type_register_static(GST_TYPE_ELEMENT, "GstAviParse", &avi_parse_info, 0);
- }
- return avi_parse_type;
-}
-
-static void
-gst_avi_parse_class_init (GstAviParseClass *klass)
-{
- GObjectClass *gobject_class;
- GstElementClass *gstelement_class;
-
- gobject_class = (GObjectClass*)klass;
- gstelement_class = (GstElementClass*)klass;
-
- g_object_class_install_property (G_OBJECT_CLASS(klass), ARG_BITRATE,
- g_param_spec_long ("bitrate","bitrate","bitrate",
- G_MINLONG, G_MAXLONG, 0, G_PARAM_READABLE)); /* CHECKME */
-
- parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
-
- gobject_class->get_property = gst_avi_parse_get_property;
-
- gstelement_class->change_state = gst_avi_parse_change_state;
-}
-
-static void
-gst_avi_parse_init (GstAviParse *avi_parse)
-{
- GST_FLAG_SET (avi_parse, GST_ELEMENT_EVENT_AWARE);
-
- avi_parse->sinkpad = gst_pad_new_from_template (
- GST_PAD_TEMPLATE_GET (sink_templ), "sink");
- gst_element_add_pad (GST_ELEMENT (avi_parse), avi_parse->sinkpad);
-
- avi_parse->srcpad = gst_pad_new_from_template (
- GST_PAD_TEMPLATE_GET (src_templ), "src");
- gst_element_add_pad (GST_ELEMENT (avi_parse), avi_parse->srcpad);
-
- gst_element_set_loop_function (GST_ELEMENT (avi_parse), gst_avi_parse_loop);
-}
-
-static GstCaps*
-avi_type_find (GstBuffer *buf,
- gpointer private)
-{
- gchar *data = GST_BUFFER_DATA (buf);
- GstCaps *new;
-
- GST_DEBUG (0,"avi_parse: typefind");
-
- if (GUINT32_FROM_LE (((guint32 *)data)[0]) != GST_RIFF_TAG_RIFF)
- return NULL;
- if (GUINT32_FROM_LE (((guint32 *)data)[2]) != GST_RIFF_RIFF_AVI)
- return NULL;
-
- new = GST_CAPS_NEW ("avi_type_find",
- "video/avi",
- "format", GST_PROPS_STRING ("AVI"));
- return new;
-}
-
-static void
-gst_avi_parse_loop (GstElement *element)
-{
- GstAviParse *avi_parse;
- GstRiffParse *rp;
- GstRiffReturn res;
- gst_riff_chunk chunk;
- guint32 data_size;
- guint64 pos;
-
- g_return_if_fail (element != NULL);
- g_return_if_fail (GST_IS_AVI_PARSE (element));
-
- avi_parse = GST_AVI_PARSE (element);
-
- rp = avi_parse->rp;
-
- pos = gst_bytestream_tell (rp->bs);
-
- res = gst_riff_parse_next_chunk (rp, &chunk);
- if (res == GST_RIFF_EOS) {
- gst_element_set_eos (element);
- return;
- }
-
- switch (chunk.id) {
- case GST_RIFF_TAG_RIFF:
- case GST_RIFF_TAG_LIST:
- g_print ("%08llx: %4.4s %08x %4.4s\n", pos, (gchar *)&chunk.id, chunk.size, (gchar *)&chunk.type);
- data_size = 0;
- break;
- default:
- g_print ("%08llx: %4.4s %08x\n", pos, (gchar *)&chunk.id, chunk.size);
- data_size = chunk.size;
- break;
- }
-
- if (GST_PAD_IS_USABLE (avi_parse->srcpad) && data_size) {
- GstBuffer *buf;
-
- gst_riff_parse_peek (rp, &buf, data_size);
- gst_pad_push (avi_parse->srcpad, buf);
- }
- data_size = (data_size + 1) & ~1;
-
- gst_riff_parse_flush (rp, data_size);
-}
-
-static GstElementStateReturn
-gst_avi_parse_change_state (GstElement *element)
-{
- GstAviParse *avi_parse = GST_AVI_PARSE (element);
-
- switch (GST_STATE_TRANSITION (element)) {
- case GST_STATE_NULL_TO_READY:
- break;
- case GST_STATE_READY_TO_PAUSED:
- avi_parse->rp = gst_riff_parse_new (avi_parse->sinkpad);
- break;
- case GST_STATE_PAUSED_TO_PLAYING:
- break;
- case GST_STATE_PLAYING_TO_PAUSED:
- break;
- case GST_STATE_PAUSED_TO_READY:
- gst_riff_parse_free (avi_parse->rp);
- break;
- case GST_STATE_READY_TO_NULL:
- break;
- default:
- break;
- }
-
- parent_class->change_state (element);
-
- return GST_STATE_SUCCESS;
-}
-
-static void
-gst_avi_parse_get_property (GObject *object, guint prop_id, GValue *value,
- GParamSpec *pspec)
-{
- GstAviParse *src;
-
- g_return_if_fail (GST_IS_AVI_PARSE (object));
-
- src = GST_AVI_PARSE (object);
-
- switch (prop_id) {
- case ARG_BITRATE:
- break;
- default:
- break;
- }
-}
-
-static gboolean
-plugin_init (GModule *module, GstPlugin *plugin)
-{
- GstElementFactory *factory;
- GstTypeFactory *type;
-
- /* this filter needs the riff parser */
- if (!gst_library_load ("gstbytestream"))
- return FALSE;
-
- /* create an elementfactory for the avi_parse element */
- factory = gst_element_factory_new ("aviparse", GST_TYPE_AVI_PARSE,
- &gst_avi_parse_details);
- g_return_val_if_fail (factory != NULL, FALSE);
- gst_element_factory_set_rank (factory, GST_ELEMENT_RANK_PRIMARY);
-
- gst_element_factory_add_pad_template (factory, GST_PAD_TEMPLATE_GET (src_templ));
- gst_element_factory_add_pad_template (factory, GST_PAD_TEMPLATE_GET (sink_templ));
-
- type = gst_type_factory_new (&avidefinition);
- gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (type));
-
- gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory));
-
- return TRUE;
-}
-
-GstPluginDesc plugin_desc = {
- GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- "aviparse",
- plugin_init
-};
-