ported mad and effectv plugins
authorChristian Schaller <uraeus@gnome.org>
Fri, 6 May 2005 11:04:30 +0000 (11:04 +0000)
committerChristian Schaller <uraeus@gnome.org>
Fri, 6 May 2005 11:04:30 +0000 (11:04 +0000)
Original commit message from CVS:
ported mad and effectv plugins

ChangeLog
Makefile.am
PORTED_09
configure.ac
ext/Makefile.am
gst/effectv/gstaging.c
gst/effectv/gstdice.c
gst/effectv/gstquark.c
gst/effectv/gstrev.c
gst/effectv/gstvertigo.c
gst/effectv/gstwarp.c

index 787bfa1..d72598f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-05-06  Christian Schaller <uraeus@gnome.org>
+
+       * ext/mad: ported plugin from threaded branch
+       * gst/effectv: ported plugins from threaded branch
+
 2005-05-06  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
 
        * configure.ac:
index 1475e53..866b95a 100644 (file)
@@ -13,14 +13,14 @@ endif
 # endif
 
 SUBDIRS =                      \
-       gst sys                 \
+       gst sys ext             \
        $(GCONF_DIR)            \
        m4                      
 # disabled
 #      $(SUBDIRS_DOCS)
 
 DIST_SUBDIRS =                         \
-       gst sys                 \
+       gst sys ext             \
        m4 
 
 # disabled
index 78a5c6a..55bfc54 100644 (file)
--- a/PORTED_09
+++ b/PORTED_09
@@ -1,6 +1,7 @@
 List of ported plugins (update when you commit a ported plugin):
-osssink (wim)
+osssink (wim) - partially done in threaded
 effectv (wim)
+mad    (wim)
 
 - Remember that some plugins are already ported and now in the gst-plugins-base module.
 
index 6e48fc2..60420bd 100644 (file)
@@ -345,9 +345,25 @@ dnl    ])
 dnl  ])
 dnl ])
 
-
-
-
+dnl *** mad ***
+dnl FIXME: we could use header checks here as well IMO
+translit(dnm, m, l) AM_CONDITIONAL(USE_MAD, true)
+GST_CHECK_FEATURE(MAD, [mad mp3 decoder], mad, [
+  dnl check with pkg-config first
+  PKG_CHECK_MODULES(MAD, mad >= 0.15 id3tag >= 0.15, HAVE_MAD="yes", HAVE_MAD="no")
+  if test "x$HAVE_MAD" = "xno"; then
+    dnl fall back to oldskool detection
+    AC_CHECK_LIB(mad, mad_decoder_finish, HAVE_MAD="yes" MAD_LIBS="-lmad")
+    if test "x$HAVE_MAD" = "xyes"; then
+      HAVE_MAD="no"
+      save_LIBS=$LIBS
+      LIBS="-lz"
+      AC_CHECK_LIB(id3tag, id3_tag_options, HAVE_MAD="yes" MAD_LIBS="-lmad -lid3tag -lz")
+      LIBS=$save_LIBS
+    fi
+  fi    
+])
+AC_SUBST(MAD_LIBS)
 
 
 AC_SUBST(GST_LIBS)
@@ -408,6 +424,8 @@ gst-plugins.spec
 gst/Makefile
 gst/effectv/Makefile
 sys/Makefile
+ext/Makefile
+ext/mad/Makefile
 common/Makefile
 common/m4/Makefile
 m4/Makefile
index 19c8c3d..055ae52 100644 (file)
-if USE_A52DEC
-A52DEC_DIR=a52dec
-else
-A52DEC_DIR=
-endif
-
-if USE_AALIB
-AALIB_DIR=aalib
-else
-AALIB_DIR=
-endif
-
-if USE_ALSA
-ALSA_DIR=alsa
-else
-ALSA_DIR=
-endif
-
-if USE_AMRNB
-AMRNB_DIR=amrnb
-else
-AMRNB=
-endif
-
-if USE_ARTS
-ARTS_DIR=arts
-else
-ARTS_DIR=
-endif
-
-if USE_ARTSC
-ARTSC_DIR=artsd
-else
-ARTSC_DIR=
-endif
-
-if USE_AUDIOFILE
-AUDIOFILE_DIR=audiofile
-else
-AUDIOFILE_DIR=
-endif
-
-if USE_AUDIORESAMPLE
-AUDIORESAMPLE_DIR=audioresample
-else
-AUDIORESAMPLE_DIR=
-endif
-
-if USE_CAIRO
-CAIRO_DIR=cairo
-else
-CAIRO_DIR=
-endif
-
-if USE_CDAUDIO
-CDAUDIO_DIR=cdaudio
-else
-CDAUDIO_DIR=
-endif
-
-if USE_CDPARANOIA
-CDPARANOIA_DIR=cdparanoia
-else
-CDPARANOIA_DIR=
-endif
-
-if USE_DIRAC
-DIRAC_DIR=dirac
-else
-DIRAC_DIR=
-endif
-
-if USE_DIRECTFB
-DIRECTFB_DIR=directfb
-else
-DIRECTFB_DIR=
-endif
-
-if USE_DIVX
-DIVX_DIR=divx
-else
-DIVX_DIR=
-endif
-
-if USE_DTS
-DTS_DIR=dts
-else
-DTS_DIR=
-endif
-
-if USE_DVDREAD
-DVDREAD_DIR=dvdread
-else
-DVDREAD_DIR=
-endif
-
-if USE_DVDNAV
-DVDNAV_DIR=dvdnav
-else
-DVDNAV_DIR=
-endif
-
-if USE_ESD
-ESD_DIR=esd
-else
-ESD_DIR=
-endif
-
-if USE_FAAC
-FAAC_DIR=faac
-else
-FAAC_DIR=
-endif
-
-if USE_FAAD
-FAAD_DIR=faad
-else
-FAAD_DIR=
-endif
+# if USE_A52DEC
+# A52DEC_DIR=a52dec
+# else
+# A52DEC_DIR=
+# endif
+
+# if USE_AALIB
+# AALIB_DIR=aalib
+# else
+# AALIB_DIR=
+# endif
+
+# if USE_AMRNB
+# AMRNB_DIR=amrnb
+# else
+# AMRNB=
+# endif
+
+# if USE_ARTS
+# ARTS_DIR=arts
+# else
+# ARTS_DIR=
+# endif
+
+# if USE_ARTSC
+# ARTSC_DIR=artsd
+# else
+# ARTSC_DIR=
+# endif
+
+# if USE_AUDIOFILE
+# AUDIOFILE_DIR=audiofile
+# else
+# AUDIOFILE_DIR=
+# endif
+
+# if USE_AUDIORESAMPLE
+# AUDIORESAMPLE_DIR=audioresample
+# else
+# AUDIORESAMPLE_DIR=
+# endif
+
+# if USE_CAIRO
+# CAIRO_DIR=cairo
+# else
+# CAIRO_DIR=
+# endif
+
+# if USE_CDAUDIO
+# CDAUDIO_DIR=cdaudio
+# else
+# CDAUDIO_DIR=
+# endif
+
+# if USE_CDPARANOIA
+# CDPARANOIA_DIR=cdparanoia
+# else
+# CDPARANOIA_DIR=
+# endif
+
+# if USE_DIRAC
+# DIRAC_DIR=dirac
+# else
+# DIRAC_DIR=
+# endif
+
+# if USE_DIRECTFB
+# DIRECTFB_DIR=directfb
+# else
+# DIRECTFB_DIR=
+# endif
+
+# if USE_DIVX
+# DIVX_DIR=divx
+# else
+# DIVX_DIR=
+# endif
+
+# if USE_DTS
+# DTS_DIR=dts
+# else
+# DTS_DIR=
+# endif
+
+# if USE_DVDREAD
+# DVDREAD_DIR=dvdread
+# else
+# DVDREAD_DIR=
+# endif
+
+# if USE_DVDNAV
+# DVDNAV_DIR=dvdnav
+# else
+# DVDNAV_DIR=
+# endif
+
+# if USE_ESD
+# ESD_DIR=esd
+# else
+# ESD_DIR=
+# endif
+
+# if USE_FAAC
+# FAAC_DIR=faac
+# else
+# FAAC_DIR=
+# endif
+
+# if USE_FAAD
+# FAAD_DIR=faad
+# else
+# FAAD_DIR=
+# endif
 
 ## if USE_FESTIVAL
 ## FESTIVAL_DIR=festival
@@ -124,113 +118,113 @@ endif
 ## FESTIVAL_DIR=
 ## endif
 
-if USE_FLAC
-FLAC_DIR=flac
-else
-FLAC_DIR=
-endif
-
-if USE_GDK_PIXBUF
-GDK_PIXBUF_DIR=gdk_pixbuf
-else
-GDK_PIXBUF_DIR=
-endif
-
-if USE_GNOME_VFS
-GNOMEVFS_DIR=gnomevfs
-else
-GNOMEVFS_DIR=
-endif
-
-if USE_GSM
-GSM_DIR=gsm
-else
-GSM_DIR=
-endif
-
-if USE_HERMES
-HERMES_DIR=hermes
-else
-HERMES_DIR=
-endif
-
-if USE_JACK
-JACK_DIR=jack
-else
-JACK_DIR=
-endif
-
-if USE_JPEG
-JPEG_DIR=jpeg
-else
-JPEG_DIR=
-endif
-
-if USE_LADSPA
-LADSPA_DIR=ladspa
-else
-LADPSA_DIR=
-endif
-
-if USE_LAME
-LAME_DIR=lame
-else
-LAME_DIR=
-endif
-
-if USE_LCS
-LCS_DIR=lcs
-else
-LCS_DIR=
-endif
-
-if USE_LIBCACA
-LIBCACA_DIR=libcaca
-else
-LIBCACA_DIR=
-endif
-
-if USE_LIBDV
-LIBDV_DIR=dv
-else
-LIBDV_DIR=
-endif
-
-if USE_LIBFAME
-LIBFAME_DIR=libfame
-else
-LIBFAME_DIR=
-endif
-
-if USE_LIBMNG
-LIBMNG_DIR=libmng
-else
-LIBMNG_DIR=
-endif
-
-if USE_LIBPNG
-LIBPNG_DIR=libpng
-else
-LIBPNG_DIR=
-endif
-
-if USE_POLYP
-POLYP_DIR=polyp
-else
-POLYP_DIR=
-endif
-
-if USE_LIBVISUAL
-LIBVISUAL_DIR=libvisual
-else
-LIBVISUAL_DIR=
-endif
-
-if USE_LIBMMS
-LIBMMS_DIR=libmms
-else 
-LIBMMS_DIR=
-endif
+if USE_FLAC
+FLAC_DIR=flac
+else
+FLAC_DIR=
+endif
+
+if USE_GDK_PIXBUF
+GDK_PIXBUF_DIR=gdk_pixbuf
+else
+GDK_PIXBUF_DIR=
+endif
+
+if USE_GNOME_VFS
+GNOMEVFS_DIR=gnomevfs
+else
+GNOMEVFS_DIR=
+endif
+
+if USE_GSM
+GSM_DIR=gsm
+else
+GSM_DIR=
+endif
+
+if USE_HERMES
+HERMES_DIR=hermes
+else
+HERMES_DIR=
+endif
+
+if USE_JACK
+JACK_DIR=jack
+else
+JACK_DIR=
+endif
+
+if USE_JPEG
+JPEG_DIR=jpeg
+else
+JPEG_DIR=
+endif
+
+if USE_LADSPA
+LADSPA_DIR=ladspa
+else
+LADPSA_DIR=
+endif
+
+if USE_LAME
+LAME_DIR=lame
+else
+LAME_DIR=
+endif
+
+if USE_LCS
+LCS_DIR=lcs
+else
+LCS_DIR=
+endif
+
+if USE_LIBCACA
+LIBCACA_DIR=libcaca
+else
+LIBCACA_DIR=
+endif
+
+if USE_LIBDV
+LIBDV_DIR=dv
+else
+LIBDV_DIR=
+endif
+
+if USE_LIBFAME
+LIBFAME_DIR=libfame
+else
+LIBFAME_DIR=
+endif
+
+if USE_LIBMNG
+LIBMNG_DIR=libmng
+else
+LIBMNG_DIR=
+endif
+
+if USE_LIBPNG
+LIBPNG_DIR=libpng
+else
+LIBPNG_DIR=
+endif
+
+if USE_POLYP
+POLYP_DIR=polyp
+else
+POLYP_DIR=
+endif
+
+if USE_LIBVISUAL
+LIBVISUAL_DIR=libvisual
+else
+LIBVISUAL_DIR=
+endif
+
+if USE_LIBMMS
+LIBMMS_DIR=libmms
+else 
+LIBMMS_DIR=
+endif
 
 if USE_MAD
 MAD_DIR=mad
@@ -238,29 +232,29 @@ else
 MAD_DIR=
 endif
 
-if USE_MIKMOD
-MIKMOD_DIR=mikmod
-else
-MIKMOD_DIR=
-endif
+if USE_MIKMOD
+MIKMOD_DIR=mikmod
+else
+MIKMOD_DIR=
+endif
 
-if USE_MPEG2DEC
-MPEG2DEC_DIR=mpeg2dec
-else
-MPEG2DEC_DIR=
-endif
+if USE_MPEG2DEC
+MPEG2DEC_DIR=mpeg2dec
+else
+#MPEG2DEC_DIR=
+#endif
 
-if USE_MPEG2ENC
-MPEG2ENC_DIR=mpeg2enc
-else
-MPEG2ENC_DIR=
-endif
+if USE_MPEG2ENC
+MPEG2ENC_DIR=mpeg2enc
+else
+MPEG2ENC_DIR=
+endif
 
-if USE_MPLEX
-MPLEX_DIR=mplex
-else
-MPLEX_DIR=
-endif
+if USE_MPLEX
+MPLEX_DIR=mplex
+else
+MPLEX_DIR=
+endif
 
 #if USE_MAS
 #MAS_DIR=mas
@@ -268,131 +262,119 @@ endif
 #MAS_DIR=
 #endif
 
-if USE_MUSEPACK
-MUSEPACK_DIR=musepack
-else
-MUSEPACK_DIR=
-endif
-
-if USE_MUSICBRAINZ
-MUSICBRAINZ_DIR=musicbrainz
-else
-MUSICBRAINZ_DIR=
-endif
-
-if USE_NAS
-NAS_DIR=nas
-else
-NAS_DIR=
-endif
-
-if USE_OGG
-OGG_DIR=ogg
-else
-OGG_DIR=
-endif
-
-if USE_PANGO
-PANGO_DIR=pango
-else
-PANGO_DIR=
-endif
-
-if USE_DV1394
-DV1394_DIR=raw1394
-else
-DV1394_DIR=
-endif
-
-if USE_SDL
-SDL_DIR=sdl
-else
-SDL_DIR=
-endif
-
-if USE_SHOUT
-SHOUT_DIR=shout
-else
-SHOUT_DIR=
-endif
-
-if USE_SHOUT2
-SHOUT2_DIR=shout2
-else
-SHOUT2_DIR=
-endif
-
-if USE_SIDPLAY
-SIDPLAY_DIR=sidplay
-else
-SIDDPLAY_DIR=
-endif
-
-if USE_SMOOTHWAVE
-SMOOTHWAVE_DIR=smoothwave
-else
-SMOOTHWAVE_DIR=
-endif
-
-if USE_SNDFILE
-SNDFILE_DIR=sndfile
-else
-SNDFILE_DIR=
-endif
-
-if USE_SWFDEC
-SWFDEC_DIR=swfdec
-else
-SWFDEC_DIR=
-endif
-
-if USE_TARKIN
-TARKIN_DIR=tarkin
-else
-TARKIN_DIR=
-endif
-
-if USE_IVORBIS
-IVORBIS_DIR=ivorbis
-else
-IVORBIS_DIR=
-endif
-
-if USE_VORBIS
-VORBIS_DIR=vorbis
-else
-VORBIS_DIR=
-endif
-
-if USE_THEORA
-THEORA_DIR=theora
-else
-THEORA_DIR=
-endif
-
-if USE_XVID
-XVID_DIR=xvid
-else
-XVID_DIR=
-endif
-
-if USE_LIBPNG
-SNAPSHOT_DIR=snapshot
-else
-SNAPSHOT_DIR=
-endif
-
-if USE_SPEEX
-SPEEX_DIR=speex
-else
-SPEEX_DIR=
-endif
-
-if USE_XINE
-XINE_DIR=xine
-else
-XINE_DIR=
-endif
+# if USE_MUSEPACK
+# MUSEPACK_DIR=musepack
+# else
+# MUSEPACK_DIR=
+# endif
+
+# if USE_MUSICBRAINZ
+# MUSICBRAINZ_DIR=musicbrainz
+# else
+# MUSICBRAINZ_DIR=
+# endif
+
+# if USE_NAS
+# NAS_DIR=nas
+# else
+# NAS_DIR=
+# endif
+
+# if USE_OGG
+# OGG_DIR=ogg
+# else
+# OGG_DIR=
+# endif
+
+# if USE_PANGO
+# PANGO_DIR=pango
+# else
+# PANGO_DIR=
+# endif
+
+# if USE_DV1394
+# DV1394_DIR=raw1394
+# else
+# DV1394_DIR=
+# endif
+
+# if USE_SDL
+# SDL_DIR=sdl
+# else
+# SDL_DIR=
+# endif
+
+# if USE_SHOUT
+# SHOUT_DIR=shout
+# else
+# SHOUT_DIR=
+# endif
+
+# if USE_SHOUT2
+# SHOUT2_DIR=shout2
+# else
+# SHOUT2_DIR=
+# endif
+
+# if USE_SIDPLAY
+# SIDPLAY_DIR=sidplay
+# else
+# SIDDPLAY_DIR=
+# endif
+
+# if USE_SMOOTHWAVE
+# SMOOTHWAVE_DIR=smoothwave
+# else
+# SMOOTHWAVE_DIR=
+# endif
+
+# if USE_SNDFILE
+# SNDFILE_DIR=sndfile
+# else
+# SNDFILE_DIR=
+# endif
+
+# if USE_SWFDEC
+# SWFDEC_DIR=swfdec
+# else
+# SWFDEC_DIR=
+# endif
+
+# if USE_TARKIN
+# TARKIN_DIR=tarkin
+# else
+# TARKIN_DIR=
+# endif
+
+# if USE_IVORBIS
+# IVORBIS_DIR=ivorbis
+# else
+# IVORBIS_DIR=
+# endif
+
+# if USE_XVID
+# XVID_DIR=xvid
+# else
+# XVID_DIR=
+# endif
+
+# if USE_LIBPNG
+# SNAPSHOT_DIR=snapshot
+# else
+# SNAPSHOT_DIR=
+# endif
+
+# if USE_SPEEX
+# SPEEX_DIR=speex
+# else
+# SPEEX_DIR=
+# endif
+
+# if USE_XINE
+# XINE_DIR=xine
+# else
+# XINE_DIR=
+# endif
 
 SUBDIRS=\
        $(A52DEC_DIR) \
@@ -461,67 +443,4 @@ SUBDIRS=\
        $(XVID_DIR)
 
 DIST_SUBDIRS=\
-       a52dec \
-       aalib \
-       alsa \
-       amrnb \
-       arts \
-       artsd \
-       audiofile \
-       audioresample \
-       cairo \
-       cdaudio \
-       cdparanoia \
-       dirac \
-       directfb \
-       divx \
-       dts \
-       dv \
-       dvdread \
-       dvdnav \
-       esd \
-       faac \
-       faad \
-       flac \
-       gdk_pixbuf \
-       gnomevfs \
-       gsm \
-       hermes \
-       ivorbis \
-       jack \
-       jpeg \
-       ladspa \
-       lame \
-       lcs \
-       libcaca \
-       libfame \
-       libmng \
-       libmms \
-       libpng \
-       libvisual \
-       mad \
-       mikmod \
-       mpeg2dec \
-       mpeg2enc \
-       mplex \
-       musepack \
-       musicbrainz \
-       nas \
-       ogg \
-       pango \
-       polyp \
-       raw1394 \
-       sdl \
-       snapshot \
-       sndfile \
-       shout \
-       shout2 \
-       sidplay \
-       smoothwave \
-       speex \
-       swfdec \
-       tarkin \
-       theora \
-       vorbis \
-       xine \
-       xvid
+       mad
index e5ebed5..886517c 100644 (file)
@@ -172,15 +172,15 @@ gst_agingtv_class_init (gpointer g_class, gpointer class_data)
   gobject_class = G_OBJECT_CLASS (g_class);
   videofilter_class = GST_VIDEOFILTER_CLASS (g_class);
 
+  gobject_class->set_property = gst_agingtv_set_property;
+  gobject_class->get_property = gst_agingtv_get_property;
+
 #if 0
   g_object_class_install_property (gobject_class, ARG_METHOD,
       g_param_spec_enum ("method", "method", "method",
           GST_TYPE_AGINGTV_METHOD, GST_AGINGTV_METHOD_1, G_PARAM_READWRITE));
 #endif
 
-  gobject_class->set_property = gst_agingtv_set_property;
-  gobject_class->get_property = gst_agingtv_get_property;
-
   videofilter_class->setup = gst_agingtv_setup;
 }
 
index 3a376eb..75c3377 100644 (file)
@@ -173,13 +173,13 @@ gst_dicetv_class_init (gpointer g_class, gpointer class_data)
 
   dicetv_class->reset = gst_dicetv_reset_handler;
 
+  gobject_class->set_property = gst_dicetv_set_property;
+  gobject_class->get_property = gst_dicetv_get_property;
+
   g_object_class_install_property (gobject_class, ARG_CUBE_BITS,
       g_param_spec_int ("square_bits", "Square Bits", "The size of the Squares",
           MIN_CUBE_BITS, MAX_CUBE_BITS, DEFAULT_CUBE_BITS, G_PARAM_READWRITE));
 
-  gobject_class->set_property = gst_dicetv_set_property;
-  gobject_class->get_property = gst_dicetv_get_property;
-
   videofilter_class->setup = gst_dicetv_setup;
 }
 
index 76d53a0..fa15e8a 100644 (file)
@@ -94,9 +94,8 @@ static void gst_quarktv_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec);
 static void gst_quarktv_get_property (GObject * object, guint prop_id,
     GValue * value, GParamSpec * pspec);
-static void gst_quarktv_dispose (GObject * object);
 
-static void gst_quarktv_chain (GstPad * pad, GstData * _data);
+static GstFlowReturn gst_quarktv_chain (GstPad * pad, GstBuffer * buffer);
 
 static GstElementClass *parent_class = NULL;
 
@@ -159,31 +158,32 @@ gst_quarktv_class_init (GstQuarkTVClass * klass)
 
   parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
 
+  gobject_class->set_property = gst_quarktv_set_property;
+  gobject_class->get_property = gst_quarktv_get_property;
+
   g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PLANES,
       g_param_spec_int ("planes", "Planes", "Number of frames in the buffer",
           1, 32, PLANES, G_PARAM_READWRITE));
 
-  gobject_class->set_property = gst_quarktv_set_property;
-  gobject_class->get_property = gst_quarktv_get_property;
-  gobject_class->dispose = gst_quarktv_dispose;
-
   gstelement_class->change_state = gst_quarktv_change_state;
 }
 
 static GstPadLinkReturn
-gst_quarktv_link (GstPad * pad, const GstCaps * caps)
+gst_quarktv_link (GstPad * pad, GstPad * peer)
 {
   GstQuarkTV *filter;
   GstPad *otherpad;
-  gint i;
-  GstStructure *structure;
-  GstPadLinkReturn res;
+
+  //gint i;
+  //GstStructure *structure;
+  //GstPadLinkReturn res;
 
   filter = GST_QUARKTV (gst_pad_get_parent (pad));
   g_return_val_if_fail (GST_IS_QUARKTV (filter), GST_PAD_LINK_REFUSED);
 
   otherpad = (pad == filter->srcpad ? filter->sinkpad : filter->srcpad);
 
+#if 0
   res = gst_pad_try_set_caps (otherpad, caps);
   if (GST_PAD_LINK_FAILED (res))
     return res;
@@ -200,6 +200,7 @@ gst_quarktv_link (GstPad * pad, const GstCaps * caps)
       gst_buffer_unref (filter->planetable[i]);
     filter->planetable[i] = NULL;
   }
+#endif
 
   return GST_PAD_LINK_OK;
 }
@@ -210,7 +211,7 @@ gst_quarktv_init (GstQuarkTV * filter)
   filter->sinkpad =
       gst_pad_new_from_template (gst_static_pad_template_get
       (&gst_effectv_sink_template), "sink");
-  gst_pad_set_getcaps_function (filter->sinkpad, gst_pad_proxy_getcaps);
+  //gst_pad_set_getcaps_function (filter->sinkpad, gst_pad_proxy_getcaps);
   gst_pad_set_chain_function (filter->sinkpad, gst_quarktv_chain);
   gst_pad_set_link_function (filter->sinkpad, gst_quarktv_link);
   gst_element_add_pad (GST_ELEMENT (filter), filter->sinkpad);
@@ -218,7 +219,7 @@ gst_quarktv_init (GstQuarkTV * filter)
   filter->srcpad =
       gst_pad_new_from_template (gst_static_pad_template_get
       (&gst_effectv_src_template), "src");
-  gst_pad_set_getcaps_function (filter->srcpad, gst_pad_proxy_getcaps);
+  //gst_pad_set_getcaps_function (filter->srcpad, gst_pad_proxy_getcaps);
   gst_pad_set_link_function (filter->srcpad, gst_quarktv_link);
   gst_element_add_pad (GST_ELEMENT (filter), filter->srcpad);
 
@@ -229,10 +230,9 @@ gst_quarktv_init (GstQuarkTV * filter)
   memset (filter->planetable, 0, filter->planes * sizeof (GstBuffer *));
 }
 
-static void
-gst_quarktv_chain (GstPad * pad, GstData * _data)
+static GstFlowReturn
+gst_quarktv_chain (GstPad * pad, GstBuffer * buf)
 {
-  GstBuffer *buf = GST_BUFFER (_data);
   GstQuarkTV *filter;
   guint32 *src, *dest;
   GstBuffer *outbuf;
@@ -244,9 +244,7 @@ gst_quarktv_chain (GstPad * pad, GstData * _data)
 
   area = filter->area;
 
-  outbuf = gst_buffer_new ();
-  GST_BUFFER_SIZE (outbuf) = area * sizeof (guint32);
-  GST_BUFFER_DATA (outbuf) = g_malloc (GST_BUFFER_SIZE (outbuf));
+  outbuf = gst_pad_alloc_buffer (filter->srcpad, 0, area, GST_PAD_CAPS (pad));
   dest = (guint32 *) GST_BUFFER_DATA (outbuf);
   GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (buf);
 
@@ -266,12 +264,14 @@ gst_quarktv_chain (GstPad * pad, GstData * _data)
     dest[area] = (rand ? ((guint32 *) GST_BUFFER_DATA (rand))[area] : 0);
   }
 
-  gst_pad_push (filter->srcpad, GST_DATA (outbuf));
+  gst_pad_push (filter->srcpad, outbuf);
 
   filter->current_plane--;
 
   if (filter->current_plane < 0)
     filter->current_plane = filter->planes - 1;
+
+  return GST_FLOW_OK;
 }
 
 static GstElementStateReturn
@@ -289,6 +289,8 @@ gst_quarktv_change_state (GstElement * element)
           gst_buffer_unref (filter->planetable[i]);
         filter->planetable[i] = NULL;
       }
+      g_free (filter->planetable);
+      filter->planetable = NULL;
       break;
     }
     default:
@@ -362,20 +364,3 @@ gst_quarktv_get_property (GObject * object, guint prop_id, GValue * value,
       break;
   }
 }
-
-static void
-gst_quarktv_dispose (GObject * object)
-{
-  GstQuarkTV *filter = GST_QUARKTV (object);
-  gint i;
-
-  for (i = 0; i < filter->planes; i++) {
-    if (filter->planetable[i])
-      gst_buffer_unref (filter->planetable[i]);
-    filter->planetable[i] = NULL;
-  }
-  g_free (filter->planetable);
-  filter->planetable = NULL;
-
-  G_OBJECT_CLASS (parent_class)->dispose (object);
-}
index c385a05..a7f5dd4 100644 (file)
@@ -171,6 +171,9 @@ gst_revtv_class_init (gpointer klass, gpointer class_data)
   gobject_class = G_OBJECT_CLASS (klass);
   videofilter_class = GST_VIDEOFILTER_CLASS (klass);
 
+  gobject_class->set_property = gst_revtv_set_property;
+  gobject_class->get_property = gst_revtv_get_property;
+
   g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_DELAY,
       g_param_spec_int ("delay", "Delay", "Delay in frames between updates",
           1, 100, 1, G_PARAM_READWRITE));
@@ -181,9 +184,6 @@ gst_revtv_class_init (gpointer klass, gpointer class_data)
       g_param_spec_int ("gain", "Gain", "Control gain",
           1, 200, 50, G_PARAM_READWRITE));
 
-  gobject_class->set_property = gst_revtv_set_property;
-  gobject_class->get_property = gst_revtv_get_property;
-
   videofilter_class->setup = gst_revtv_setup;
 }
 
index e622eb5..cc3ed94 100644 (file)
@@ -169,6 +169,9 @@ gst_vertigotv_class_init (GstVertigoTVClass * klass, gpointer class_data)
 
   klass->reset = gst_vertigotv_reset_handler;
 
+  gobject_class->set_property = gst_vertigotv_set_property;
+  gobject_class->get_property = gst_vertigotv_get_property;
+
   g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_SPEED,
       g_param_spec_float ("speed", "Speed", "Control the speed of movement",
           0.01, 100.0, 0.02, G_PARAM_READWRITE));
@@ -176,9 +179,6 @@ gst_vertigotv_class_init (GstVertigoTVClass * klass, gpointer class_data)
       g_param_spec_float ("zoom_speed", "Zoom Speed",
           "Control the rate of zooming", 1.01, 1.1, 1.01, G_PARAM_READWRITE));
 
-  gobject_class->set_property = gst_vertigotv_set_property;
-  gobject_class->get_property = gst_vertigotv_get_property;
-
   videofilter_class->setup = gst_vertigotv_setup;
 }
 
index e54e752..00bd7d0 100644 (file)
@@ -173,15 +173,15 @@ gst_warptv_class_init (gpointer g_class, gpointer class_data)
   gobject_class = G_OBJECT_CLASS (g_class);
   videofilter_class = GST_VIDEOFILTER_CLASS (g_class);
 
+  gobject_class->set_property = gst_warptv_set_property;
+  gobject_class->get_property = gst_warptv_get_property;
+
 #if 0
   g_object_class_install_property (gobject_class, ARG_METHOD,
       g_param_spec_enum ("method", "method", "method",
           GST_TYPE_WARPTV_METHOD, GST_WARPTV_METHOD_1, G_PARAM_READWRITE));
 #endif
 
-  gobject_class->set_property = gst_warptv_set_property;
-  gobject_class->get_property = gst_warptv_get_property;
-
   videofilter_class->setup = gst_warptv_setup;
 }