first bunch of conversions to new plugin_init. Includes libs/gst, gst/id3, sys/oss, ext/gnomevfs, gst/typefind and ex...

Original commit message from CVS:
first bunch of conversions to new plugin_init. Includes libs/gst, gst/id3, sys/oss, ext/gnomevfs, gst/typefind and ext/mad.
You guessed it, everything Rhythmbox needs ;)
fixed BMP typefind and made gnomevfs one plugin instead of two while doing this
This commit is contained in:
Benjamin Otte 2003-10-31 20:03:29 +00:00
parent e206183335
commit 92ba809c91
16 changed files with 326 additions and 207 deletions

View file

@ -1149,6 +1149,36 @@ if test "x$HAVE_FFMPEG" = xyes; then
AC_CONFIG_SUBDIRS(gst-libs/ext/ffmpeg/ffmpeg)
fi
dnl ############################
dnl # Set up some more defines #
dnl ############################
dnl set license and copyright notice
AC_DEFINE(GST_LICENSE, "LGPL", [GStreamer license])
AC_DEFINE(GST_COPYRIGHT, "(c) 1999-2003 The GStreamer Team", [copyright message in plugins])
dnl package name in plugins
AC_ARG_WITH(package-name,
AC_HELP_STRING([--with-package-name],[specify package name to use in plugins]),
[case "${withval}" in
yes) AC_MSG_ERROR(bad value ${withval} for --with-package-name) ;;
no) AC_MSG_ERROR(bad value ${withval} for --with-package-name) ;;
*) GST_PACKAGE="${withval}" ;;
esac],
[GST_PACKAGE="Gstreamer"]) dnl Default value
AC_MSG_NOTICE(Using $GST_PACKAGE as package name)
AC_DEFINE_UNQUOTED(GST_PACKAGE, "$GST_PACKAGE", [package name in plugins])
dnl package origin URL
AC_ARG_WITH(package-origin,
AC_HELP_STRING([--with-package-origin],[specify package origin URL to use in plugins]),
[case "${withval}" in
yes) AC_MSG_ERROR(bad value ${withval} for --with-package-origin) ;;
no) AC_MSG_ERROR(bad value ${withval} for --with-package-origin) ;;
*) GST_ORIGIN="${withval}" ;;
esac],
[GST_ORIGIN="http://gstreamer.net"]) dnl Default value
AC_MSG_NOTICE(Using $GST_ORIGIN as package origin)
AC_DEFINE_UNQUOTED(GST_ORIGIN, "$GST_ORIGIN", [package origin])
dnl #########################
dnl # Make the output files #
dnl #########################

View file

@ -1,12 +1,10 @@
plugin_LTLIBRARIES = libgstgnomevfssrc.la libgstgnomevfssink.la
plugin_LTLIBRARIES = libgstgnomevfs.la
libgstgnomevfssrc_la_SOURCES = gstgnomevfssrc.c
libgstgnomevfssrc_la_CFLAGS = $(GST_CFLAGS) $(GNOME_VFS_CFLAGS)
libgstgnomevfssrc_la_LIBADD = $(GNOME_VFS_LIBS)
libgstgnomevfssrc_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstgnomevfs_la_SOURCES = gstgnomevfs.c gstgnomevfssrc.c gstgnomevfssink.c
libgstgnomevfs_la_CFLAGS = $(GST_CFLAGS) $(GNOME_VFS_CFLAGS)
libgstgnomevfs_la_LIBADD = $(GNOME_VFS_LIBS)
libgstgnomevfs_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
noinst_HEADERS = gstgnomevfs.h
libgstgnomevfssink_la_SOURCES = gstgnomevfssink.c
libgstgnomevfssink_la_CFLAGS = $(GST_CFLAGS) $(GNOME_VFS_CFLAGS)
libgstgnomevfssink_la_LIBADD = $(GNOME_VFS_LIBS)
libgstgnomevfssink_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)

View file

@ -0,0 +1,54 @@
/* GStreamer
* Copyright (C) 2003 Benjamin Otte <in7y118@public.uni-hamburg.de>
*
* gnomevfs.c: register gnomevfs elements
*
* 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.
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include "gstgnomevfs.h"
#include <gst/gst.h>
static gboolean
plugin_init(GstPlugin *plugin)
{
if (!gst_element_register (plugin, "gnomevfssrc",
GST_RANK_SECONDARY, gst_gnomevfssrc_get_type()) ||
!gst_element_register (plugin, "gnomevfssink",
GST_RANK_SECONDARY, gst_gnomevfssink_get_type())) {
return FALSE;
}
return TRUE;
}
GST_PLUGIN_DEFINE (
GST_VERSION_MAJOR,
GST_VERSION_MINOR,
"gnomevfs",
"elements to access the Gnome vfs",
plugin_init,
VERSION,
GST_LICENSE,
GST_COPYRIGHT,
GST_PACKAGE,
GST_ORIGIN
)

View file

@ -0,0 +1,35 @@
/* GStreamer
* Copyright (C) 2003 Benjamin Otte <in7y118@public.uni-hamburg.de>
*
* 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_GNOME_VFS_H__
#define __GST_GNOME_VFS_H__
#include <glib-object.h>
G_BEGIN_DECLS
GType gst_gnomevfssink_get_type (void);
GType gst_gnomevfssrc_get_type (void);
G_END_DECLS
#endif /* __GST_GNOME_VFS_H__ */

View file

@ -25,13 +25,14 @@
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "gstgnomevfs.h"
#include <gst/gst.h>
#include <libgnomevfs/gnome-vfs.h>
#include <string.h>
#include <errno.h>
GstElementDetails gst_gnomevfssink_details;
#define GST_TYPE_GNOMEVFSSINK \
(gst_gnomevfssink_get_type())
@ -74,18 +75,13 @@ struct _GstGnomeVFSSinkClass {
void (*erase_ask) (GstElement *element,GstPad *pad);
};
GType gst_gnomevfssink_get_type(void);
/* elementfactory information */
GstElementDetails gst_gnomevfssink_details = {
static GstElementDetails gst_gnomevfssink_details = GST_ELEMENT_DETAILS (
"GnomeVFS Sink",
"Sink/File",
"LGPL",
"Write stream to a GnomeVFS URI",
VERSION,
"Bastien Nocera <hadess@hadess.net>",
"(C) 2001"
};
"Bastien Nocera <hadess@hadess.net>"
);
/* GnomeVFSSink signals and args */
@ -103,6 +99,7 @@ enum {
};
static void gst_gnomevfssink_base_init (gpointer g_class);
static void gst_gnomevfssink_class_init (GstGnomeVFSSinkClass *klass);
static void gst_gnomevfssink_init (GstGnomeVFSSink *gnomevfssink);
@ -126,7 +123,8 @@ gst_gnomevfssink_get_type (void)
if (!gnomevfssink_type) {
static const GTypeInfo gnomevfssink_info = {
sizeof(GstGnomeVFSSinkClass), NULL,
sizeof(GstGnomeVFSSinkClass),
gst_gnomevfssink_base_init,
NULL,
(GClassInitFunc)gst_gnomevfssink_class_init,
NULL,
@ -140,6 +138,14 @@ gst_gnomevfssink_get_type (void)
return gnomevfssink_type;
}
static void
gst_gnomevfssink_base_init (gpointer g_class)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
gst_element_class_set_details (element_class, &gst_gnomevfssink_details);
}
static void
gst_gnomevfssink_class_init (GstGnomeVFSSinkClass *klass)
{
@ -356,24 +362,3 @@ gst_gnomevfssink_change_state (GstElement *element)
return GST_STATE_SUCCESS;
}
static gboolean
plugin_init (GModule *module, GstPlugin *plugin)
{
GstElementFactory *factory;
/* create an elementfactory for the aasink element */
factory = gst_element_factory_new("gnomevfssink", GST_TYPE_GNOMEVFSSINK,
&gst_gnomevfssink_details);
g_return_val_if_fail(factory != NULL, FALSE);
gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory));
return TRUE;
}
GstPluginDesc plugin_desc = {
GST_VERSION_MAJOR,
GST_VERSION_MINOR,
"gnomevfssink",
plugin_init
};

View file

@ -30,6 +30,8 @@
#include "config.h"
#endif
#include "gstgnomevfs.h"
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/time.h>
@ -48,7 +50,6 @@
/* gnome-vfs.h doesn't include the following header, which we need: */
#include <libgnomevfs/gnome-vfs-standard-callbacks.h>
GstElementDetails gst_gnomevfssrc_details;
#define GST_TYPE_GNOMEVFSSRC \
(gst_gnomevfssrc_get_type())
@ -123,16 +124,12 @@ struct _GstGnomeVFSSrcClass {
GstElementClass parent_class;
};
/* elementfactory information */
GstElementDetails gst_gnomevfssrc_details = {
static GstElementDetails gst_gnomevfssrc_details = GST_ELEMENT_DETAILS (
"GnomeVFS Source",
"Source/File",
"LGPL",
"Read from any GnomeVFS file",
VERSION,
"Bastien Nocera <hadess@hadess.net>",
"(C) 2001",
};
"Bastien Nocera <hadess@hadess.net>"
);
GST_PAD_FORMATS_FUNCTION (gst_gnomevfssrc_get_formats,
GST_FORMAT_BYTES
@ -169,8 +166,7 @@ enum {
ARG_SEEKABLE,
};
GType gst_gnomevfssrc_get_type(void);
static void gst_gnomevfssrc_base_init (gpointer g_class);
static void gst_gnomevfssrc_class_init (GstGnomeVFSSrcClass *klass);
static void gst_gnomevfssrc_init (GstGnomeVFSSrc *gnomevfssrc);
static void gst_gnomevfssrc_dispose (GObject *object);
@ -205,7 +201,8 @@ GType gst_gnomevfssrc_get_type(void)
if (!gnomevfssrc_type) {
static const GTypeInfo gnomevfssrc_info = {
sizeof(GstGnomeVFSSrcClass), NULL,
sizeof(GstGnomeVFSSrcClass),
gst_gnomevfssrc_base_init,
NULL,
(GClassInitFunc) gst_gnomevfssrc_class_init,
NULL,
@ -223,6 +220,14 @@ GType gst_gnomevfssrc_get_type(void)
return gnomevfssrc_type;
}
static void
gst_gnomevfssrc_base_init (gpointer g_class)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
gst_element_class_set_details (element_class, &gst_gnomevfssrc_details);
}
static void gst_gnomevfssrc_class_init(GstGnomeVFSSrcClass *klass)
{
GObjectClass *gobject_class;
@ -1150,22 +1155,6 @@ static GstElementStateReturn gst_gnomevfssrc_change_state(GstElement *element)
return GST_STATE_SUCCESS;
}
static gboolean plugin_init(GModule *module, GstPlugin *plugin)
{
GstElementFactory *factory;
/* create an elementfactory for the aasink element */
factory =
gst_element_factory_new("gnomevfssrc", GST_TYPE_GNOMEVFSSRC,
&gst_gnomevfssrc_details);
g_return_val_if_fail(factory != NULL, FALSE);
gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory));
return TRUE;
}
static gboolean
gst_gnomevfssrc_srcpad_query (GstPad *pad, GstQueryType type,
GstFormat *format, gint64 *value)
@ -1258,16 +1247,3 @@ gst_gnomevfssrc_srcpad_event (GstPad *pad, GstEvent *event)
return TRUE;
}
GstPluginDesc plugin_desc = {
GST_VERSION_MAJOR,
GST_VERSION_MINOR,
"gnomevfssrc",
plugin_init
};
/*
Local Variables:
c-file-style: "linux"
End:
*/

View file

@ -17,6 +17,10 @@
* Boston, MA 02111-1307, USA.
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include "audio.h"
int
@ -175,15 +179,20 @@ gst_audio_is_buffer_framed (GstPad* pad, GstBuffer* buf)
}
static gboolean
plugin_init (GModule *module, GstPlugin *plugin)
plugin_init (GstPlugin *plugin)
{
gst_plugin_set_longname (plugin, "Support services for audio plugins");
return TRUE;
}
GstPluginDesc plugin_desc = {
GST_PLUGIN_DEFINE (
GST_VERSION_MAJOR,
GST_VERSION_MINOR,
"gstaudio",
plugin_init
};
"Support services for audio plugins",
plugin_init,
VERSION,
GST_LICENSE,
GST_COPYRIGHT,
GST_PACKAGE,
GST_ORIGIN
);

View file

@ -315,17 +315,3 @@ gst_gconf_get_default_visualization_element (void)
return ret;
}
static gboolean
plugin_init (GModule *module, GstPlugin *plugin)
{
gst_plugin_set_longname (plugin,
"Convenience routines for GConf interaction");
return TRUE;
}
GstPluginDesc plugin_desc = {
GST_VERSION_MAJOR,
GST_VERSION_MINOR,
"gstgconf",
plugin_init
};

View file

@ -17,8 +17,9 @@
* Boston, MA 02111-1307, USA.
*/
#include <config.h>
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <gst/gst.h>
#include <gst/idct/idct.h>
@ -127,15 +128,20 @@ void gst_idct_destroy(GstIDCT *idct)
}
static gboolean
plugin_init (GModule *module, GstPlugin *plugin)
plugin_init (GstPlugin *plugin)
{
gst_plugin_set_longname (plugin, "Accelerated IDCT routines");
return TRUE;
}
GstPluginDesc plugin_desc = {
GST_PLUGIN_DEFINE (
GST_VERSION_MAJOR,
GST_VERSION_MINOR,
"gstidct",
plugin_init
};
"Accelerated IDCT routines",
plugin_init,
VERSION,
GST_LICENSE,
GST_COPYRIGHT,
GST_PACKAGE,
GST_ORIGIN
)

View file

@ -182,9 +182,8 @@ gmi_seek_to_track (GstMediaInfo *info, long track)
res = gst_pad_send_event (info->priv->decoder_pad, event);
if (!res)
{
g_warning ("seek to logical track on pad %s:%s failed of element %s",
GST_DEBUG_PAD_NAME(info->priv->decoder_pad),
gst_element_get_factory((gst_pad_get_parent(info->priv->decoder_pad)))->details->longname);
g_warning ("seek to logical track on pad %s:%s failed",
GST_DEBUG_PAD_NAME(info->priv->decoder_pad));
return FALSE;
}
/* clear structs because of the seek */

View file

@ -870,16 +870,21 @@ void resample_sinc_ft_float(resample_t * r)
}
static gboolean
plugin_init (GModule *module, GstPlugin *plugin)
plugin_init (GstPlugin *plugin)
{
gst_plugin_set_longname (plugin, "Resampling routines for use in audio plugins");
return TRUE;
}
GstPluginDesc plugin_desc = {
GST_PLUGIN_DEFINE (
GST_VERSION_MAJOR,
GST_VERSION_MINOR,
"gstresample",
plugin_init
};
"Resampling routines for use in audio plugins",
plugin_init,
VERSION,
GST_LICENSE,
GST_COPYRIGHT,
GST_PACKAGE,
GST_ORIGIN
);

View file

@ -17,19 +17,27 @@
* Boston, MA 02111-1307, USA.
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include <riff.h>
static gboolean
plugin_init (GModule *module, GstPlugin *plugin)
plugin_init (GstPlugin *plugin)
{
gst_plugin_set_longname (plugin, "RIFF convenience routines");
return TRUE;
}
GstPluginDesc plugin_desc = {
GST_PLUGIN_DEFINE (
GST_VERSION_MAJOR,
GST_VERSION_MINOR,
"gstriff",
plugin_init
};
"RIFF convenience routines",
plugin_init,
VERSION,
GST_LICENSE,
GST_COPYRIGHT,
GST_PACKAGE,
GST_ORIGIN
)

View file

@ -18,6 +18,10 @@
* Boston, MA 02111-1307, USA.
*/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include "video.h"
/* This is simply a convenience function, nothing more or less */
@ -97,15 +101,20 @@ gst_video_get_size (GstPad *pad,
}
static gboolean
plugin_init (GModule *module, GstPlugin *plugin)
plugin_init (GstPlugin *plugin)
{
gst_plugin_set_longname (plugin, "Convenience routines for video plugins");
return TRUE;
}
GstPluginDesc plugin_desc = {
GST_PLUGIN_DEFINE (
GST_VERSION_MAJOR,
GST_VERSION_MINOR,
"gstvideo",
plugin_init
};
"Convenience routines for video plugins",
plugin_init,
VERSION,
GST_LICENSE,
GST_COPYRIGHT,
GST_PACKAGE,
GST_ORIGIN
)

View file

@ -637,17 +637,20 @@ gst_xwin_stop (GstXWindowListener *xwin)
*/
static gboolean
plugin_init (GModule *module,
GstPlugin *plugin)
plugin_init (GstPlugin *plugin)
{
gst_plugin_set_longname (plugin,
"X11-based XWindow event/motion listener");
return TRUE;
}
GstPluginDesc plugin_desc = {
GST_PLUGIN_DEFINE (
GST_VERSION_MAJOR,
GST_VERSION_MINOR,
"xwindowlistener",
plugin_init
};
"X11-based XWindow event/motion listener",
plugin_init,
VERSION,
GST_LICENSE,
GST_COPYRIGHT,
GST_PACKAGE,
GST_ORIGIN
)

View file

@ -559,7 +559,7 @@ mpeg1_parse_header (GstTypeFind *tf, guint64 offset)
* 1-(1-1/2^(65*GST_MPEG_TYPEFIND_TRY_HEADERS))^GST_MPEG_TYPEFIND_TRY_SYNC
* for current values:
* 1-(1-1/2^(65*2)^50000
* and that value is way smaller than 0,1%
* = 3.6734..*10^-35
*/
#define GST_MPEG_TYPEFIND_TRY_HEADERS 2
#define GST_MPEG_TYPEFIND_TRY_SYNC (GST_TYPE_FIND_MAXIMUM * 500) /* 50kB */
@ -937,12 +937,15 @@ jng_type_find (GstTypeFind *tf, gpointer unused)
static void
bmp_type_find (GstTypeFind *tf, gpointer unused)
{
guint8 *data = gst_type_find_peek (tf, 0, 14);
guint8 *data = gst_type_find_peek (tf, 0, 18);
if (data && memcmp (data, "BM", 2) == 0) {
if (data[14] == GUINT16_TO_LE (12) ||
data[14] == GUINT16_TO_LE (64) ||
data[14] == GUINT16_TO_LE (40)) {
if ((data[14] == 0x0C ||
data[14] == 0x28 ||
data[14] == 0xF0) &&
data[15] == 0 &&
data[16] == 0 &&
data[17] == 0) {
gst_type_find_suggest (tf, GST_TYPE_FIND_MAXIMUM, BMP_CAPS);
}
}
@ -951,7 +954,8 @@ bmp_type_find (GstTypeFind *tf, gpointer unused)
/*** image/tiff ********************/
#define TIFF_CAPS(endian) (endian == 0 ? \
GST_CAPS_NEW ("tiff_type_find", "image/tiff", \
"endianness", GST_PROPS_INT_RANGE (G_LITTLE_ENDIAN, G_BIG_ENDIAN)) : \
"endianness", GST_PROPS_LIST (GST_PROPS_INT ( \
G_LITTLE_ENDIAN), GST_PROPS_INT (G_BIG_ENDIAN))) : \
GST_CAPS_NEW ("tiff_type_find", "image/tiff", \
"endianness", GST_PROPS_INT (endian)))
static void
@ -1066,8 +1070,12 @@ sid_type_find (GstTypeFind *tf, gpointer private)
/*** plugin initialization ****************************************************/
#define TYPE_FIND_REGISTER(plugin,name,rank,func,ext,caps,priv) G_BEGIN_DECLS{\
if (!gst_type_find_register (plugin, name, rank, func, ext, caps, priv))\
return FALSE; \
}G_END_DECLS
static gboolean
plugin_init (GModule *module, GstPlugin *plugin)
plugin_init (GstPlugin *plugin)
{
/* can't initialize this via a struct as caps can't be statically initialized */
@ -1109,79 +1117,85 @@ plugin_init (GModule *module, GstPlugin *plugin)
GST_DEBUG_CATEGORY_INIT (type_find_debug, "typefindfunctions", GST_DEBUG_FG_GREEN | GST_DEBUG_BG_RED, "generic type find functions");
gst_type_find_factory_register (plugin, "video/x-ms-asf", GST_ELEMENT_RANK_SECONDARY,
TYPE_FIND_REGISTER (plugin, "video/x-ms-asf", GST_RANK_SECONDARY,
asf_type_find, asf_exts, ASF_CAPS, NULL);
gst_type_find_factory_register (plugin, "audio/x-au", GST_ELEMENT_RANK_MARGINAL,
TYPE_FIND_REGISTER (plugin, "audio/x-au", GST_RANK_MARGINAL,
au_type_find, au_exts, AU_CAPS, NULL);
gst_type_find_factory_register (plugin, "video/avi", GST_ELEMENT_RANK_PRIMARY,
TYPE_FIND_REGISTER (plugin, "video/avi", GST_RANK_PRIMARY,
avi_type_find, avi_exts, AVI_CAPS, NULL);
gst_type_find_factory_register (plugin, "video/x-cdxa", GST_ELEMENT_RANK_SECONDARY,
TYPE_FIND_REGISTER (plugin, "video/x-cdxa", GST_RANK_SECONDARY,
cdxa_type_find, cdxa_exts, CDXA_CAPS, NULL);
gst_type_find_factory_register (plugin, "audio/x-flac", GST_ELEMENT_RANK_PRIMARY,
TYPE_FIND_REGISTER (plugin, "audio/x-flac", GST_RANK_PRIMARY,
flac_type_find, flac_exts, FLAC_CAPS, NULL);
gst_type_find_factory_register (plugin, "video/x-fli", GST_ELEMENT_RANK_MARGINAL,
TYPE_FIND_REGISTER (plugin, "video/x-fli", GST_RANK_MARGINAL,
flx_type_find, flx_exts, FLX_CAPS, NULL);
gst_type_find_factory_register (plugin, "application/x-id3", GST_ELEMENT_RANK_PRIMARY,
TYPE_FIND_REGISTER (plugin, "application/x-id3", GST_RANK_PRIMARY,
id3_type_find, id3_exts, ID3_CAPS, NULL);
gst_type_find_factory_register (plugin, "audio/x-mod", GST_ELEMENT_RANK_SECONDARY,
TYPE_FIND_REGISTER (plugin, "audio/x-mod", GST_RANK_SECONDARY,
mod_type_find, mod_exts, MOD_CAPS, NULL);
gst_type_find_factory_register (plugin, "audio/mpeg", GST_ELEMENT_RANK_PRIMARY,
TYPE_FIND_REGISTER (plugin, "audio/mpeg", GST_RANK_PRIMARY,
mp3_type_find, mp3_exts, MP3_CAPS (0), NULL);
gst_type_find_factory_register (plugin, "video/mpeg1", GST_ELEMENT_RANK_PRIMARY,
TYPE_FIND_REGISTER (plugin, "video/mpeg1", GST_RANK_PRIMARY,
mpeg1_sys_type_find, mpeg_sys_exts, MPEG_SYS_CAPS (1), NULL);
gst_type_find_factory_register (plugin, "video/mpeg2", GST_ELEMENT_RANK_SECONDARY,
TYPE_FIND_REGISTER (plugin, "video/mpeg2", GST_RANK_SECONDARY,
mpeg2_sys_type_find, mpeg_sys_exts, MPEG_SYS_CAPS (2), NULL);
gst_type_find_factory_register (plugin, "application/ogg", GST_ELEMENT_RANK_PRIMARY,
TYPE_FIND_REGISTER (plugin, "application/ogg", GST_RANK_PRIMARY,
ogg_type_find, ogg_exts, OGG_CAPS, NULL);
gst_type_find_factory_register (plugin, "video/quicktime", GST_ELEMENT_RANK_SECONDARY,
TYPE_FIND_REGISTER (plugin, "video/quicktime", GST_RANK_SECONDARY,
qt_type_find, qt_exts, QT_CAPS, NULL);
gst_type_find_factory_register (plugin, "application/vnd.rn-realmedia", GST_ELEMENT_RANK_SECONDARY,
TYPE_FIND_REGISTER (plugin, "application/vnd.rn-realmedia", GST_RANK_SECONDARY,
rm_type_find, rm_exts, RM_CAPS, NULL);
gst_type_find_factory_register (plugin, "application/x-shockwave-flash", GST_ELEMENT_RANK_SECONDARY,
TYPE_FIND_REGISTER (plugin, "application/x-shockwave-flash", GST_RANK_SECONDARY,
swf_type_find, swf_exts, SWF_CAPS, NULL);
gst_type_find_factory_register (plugin, "text/plain", GST_ELEMENT_RANK_MARGINAL,
TYPE_FIND_REGISTER (plugin, "text/plain", GST_RANK_MARGINAL,
utf8_type_find, utf8_exts, UTF8_CAPS, NULL);
gst_type_find_factory_register (plugin, "text/uri-list", GST_ELEMENT_RANK_MARGINAL,
TYPE_FIND_REGISTER (plugin, "text/uri-list", GST_RANK_MARGINAL,
uri_type_find, uri_exts, URI_CAPS, NULL);
gst_type_find_factory_register (plugin, "audio/x-wav", GST_ELEMENT_RANK_PRIMARY,
TYPE_FIND_REGISTER (plugin, "audio/x-wav", GST_RANK_PRIMARY,
wav_type_find, wav_exts, WAV_CAPS, NULL);
gst_type_find_factory_register (plugin, "audio/x-aiff", GST_ELEMENT_RANK_PRIMARY,
TYPE_FIND_REGISTER (plugin, "audio/x-aiff", GST_RANK_SECONDARY,
aiff_type_find, aiff_exts, AIFF_CAPS, NULL);
gst_type_find_factory_register (plugin, "audio/x-shorten", GST_ELEMENT_RANK_PRIMARY,
TYPE_FIND_REGISTER (plugin, "audio/x-shorten", GST_RANK_SECONDARY,
shn_type_find, shn_exts, SHN_CAPS, NULL);
gst_type_find_factory_register (plugin, "image/jpeg", GST_ELEMENT_RANK_PRIMARY,
TYPE_FIND_REGISTER (plugin, "image/jpeg", GST_RANK_PRIMARY,
jpeg_type_find, jpeg_exts, JPEG_CAPS, NULL);
gst_type_find_factory_register (plugin, "image/gif", GST_ELEMENT_RANK_PRIMARY,
gif_type_find, gif_exts, GIF_CAPS, NULL);
gst_type_find_factory_register (plugin, "image/png", GST_ELEMENT_RANK_PRIMARY,
png_type_find, png_exts, PNG_CAPS, NULL);
gst_type_find_factory_register (plugin, "image/bmp", GST_ELEMENT_RANK_PRIMARY,
bmp_type_find, bmp_exts, BMP_CAPS, NULL);
gst_type_find_factory_register (plugin, "image/tiff", GST_ELEMENT_RANK_PRIMARY,
tiff_type_find, tiff_exts, TIFF_CAPS(0), NULL);
gst_type_find_factory_register (plugin, "video/x-matroska", GST_ELEMENT_RANK_SECONDARY,
TYPE_FIND_REGISTER (plugin, "image/gif", GST_RANK_PRIMARY,
gif_type_find, gif_exts, GIF_CAPS, NULL);
TYPE_FIND_REGISTER (plugin, "image/png", GST_RANK_PRIMARY,
png_type_find, png_exts, PNG_CAPS, NULL);
TYPE_FIND_REGISTER (plugin, "image/bmp", GST_RANK_PRIMARY,
bmp_type_find, bmp_exts, BMP_CAPS, NULL);
TYPE_FIND_REGISTER (plugin, "image/tiff", GST_RANK_PRIMARY,
tiff_type_find, tiff_exts, TIFF_CAPS(0), NULL);
TYPE_FIND_REGISTER (plugin, "video/x-matroska", GST_RANK_SECONDARY,
matroska_type_find, matroska_exts, MATROSKA_CAPS, NULL);
gst_type_find_factory_register (plugin, "video/x-dv", GST_ELEMENT_RANK_SECONDARY,
TYPE_FIND_REGISTER (plugin, "video/x-dv", GST_RANK_SECONDARY,
dv_type_find, dv_exts, DV_CAPS, NULL);
gst_type_find_factory_register (plugin, "video/x-sid", GST_ELEMENT_RANK_MARGINAL,
TYPE_FIND_REGISTER (plugin, "video/x-sid", GST_RANK_MARGINAL,
sid_type_find, sid_exts, SID_CAPS, NULL);
gst_type_find_factory_register (plugin, "image/x-xcf", GST_ELEMENT_RANK_SECONDARY,
xcf_type_find, xcf_exts, XCF_CAPS, NULL);
gst_type_find_factory_register (plugin, "video/x-mng", GST_ELEMENT_RANK_SECONDARY,
mng_type_find, mng_exts, MNG_CAPS, NULL);
gst_type_find_factory_register (plugin, "image/x-jng", GST_ELEMENT_RANK_SECONDARY,
jng_type_find, jng_exts, JNG_CAPS, NULL);
gst_type_find_factory_register (plugin, "image/x-xpixmap", GST_ELEMENT_RANK_SECONDARY,
xpm_type_find, xpm_exts, XPM_CAPS, NULL);
gst_type_find_factory_register (plugin, "image/x-sun-raster", GST_ELEMENT_RANK_SECONDARY,
ras_type_find, ras_exts, RAS_CAPS, NULL);
TYPE_FIND_REGISTER (plugin, "image/x-xcf", GST_RANK_SECONDARY,
xcf_type_find, xcf_exts, XCF_CAPS, NULL);
TYPE_FIND_REGISTER (plugin, "video/x-mng", GST_RANK_SECONDARY,
mng_type_find, mng_exts, MNG_CAPS, NULL);
TYPE_FIND_REGISTER (plugin, "image/x-jng", GST_RANK_SECONDARY,
jng_type_find, jng_exts, JNG_CAPS, NULL);
TYPE_FIND_REGISTER (plugin, "image/x-xpixmap", GST_RANK_SECONDARY,
xpm_type_find, xpm_exts, XPM_CAPS, NULL);
TYPE_FIND_REGISTER (plugin, "image/x-sun-raster", GST_RANK_SECONDARY,
ras_type_find, ras_exts, RAS_CAPS, NULL);
return TRUE;
}
GstPluginDesc plugin_desc = {
GST_PLUGIN_DEFINE (
GST_VERSION_MAJOR,
GST_VERSION_MINOR,
"typefindfunctions",
plugin_init
};
"default typefind functions",
plugin_init,
VERSION,
GST_LICENSE,
GST_COPYRIGHT,
GST_PACKAGE,
GST_ORIGIN
)

View file

@ -32,11 +32,8 @@
static GstElementDetails volume_details = {
"Volume",
"Filter/Audio/Effect",
"LGPL",
"Set volume on audio/raw streams",
VERSION,
"Andy Wingo <apwingo@eos.ncsu.edu>",
"(C) 2001"
};
@ -95,7 +92,8 @@ GST_PAD_TEMPLATE_FACTORY (volume_src_factory,
)
);
static void volume_class_init (GstVolumeClass *klass);
static void volume_base_init (gpointer g_class);
static void volume_class_init (GstVolumeClass *klass);
static void volume_init (GstVolume *filter);
static void volume_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
@ -178,7 +176,8 @@ gst_volume_get_type(void) {
if (!volume_type) {
static const GTypeInfo volume_info = {
sizeof(GstVolumeClass), NULL,
sizeof(GstVolumeClass),
volume_base_init,
NULL,
(GClassInitFunc)volume_class_init,
NULL,
@ -191,7 +190,15 @@ gst_volume_get_type(void) {
}
return volume_type;
}
static void
volume_base_init (gpointer g_class)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
gst_element_class_add_pad_template (element_class, volume_src_factory ());
gst_element_class_add_pad_template (element_class, volume_sink_factory ());
gst_element_class_set_details (element_class, &volume_details);
}
static void
volume_class_init (GstVolumeClass *klass)
{
@ -415,27 +422,22 @@ volume_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *
}
static gboolean
plugin_init (GModule *module, GstPlugin *plugin)
plugin_init (GstPlugin *plugin)
{
GstElementFactory *factory;
factory = gst_element_factory_new("volume",GST_TYPE_VOLUME,
&volume_details);
g_return_val_if_fail(factory != NULL, FALSE);
gst_element_factory_add_pad_template (factory, volume_src_factory ());
gst_element_factory_add_pad_template (factory, volume_sink_factory ());
gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory));
/* initialize dparam support library */
gst_control_init(NULL,NULL);
return TRUE;
return gst_element_register (plugin, "volume", GST_RANK_PRIMARY, GST_TYPE_VOLUME);
}
GstPluginDesc plugin_desc = {
GST_PLUGIN_DEFINE (
GST_VERSION_MAJOR,
GST_VERSION_MINOR,
"volume",
plugin_init
};
"element for controlling audio volume",
plugin_init,
VERSION,
GST_LICENSE,
GST_COPYRIGHT,
GST_PACKAGE,
GST_ORIGIN
)