ported mad and effectv plugins

Original commit message from CVS:
ported mad and effectv plugins
This commit is contained in:
Christian Schaller 2005-05-06 11:04:30 +00:00
parent 08616b7531
commit 0751f73733
11 changed files with 367 additions and 439 deletions

View file

@ -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> 2005-05-06 Zaheer Abbas Merali <zaheerabbas at merali dot org>
* configure.ac: * configure.ac:

View file

@ -13,14 +13,14 @@ endif
# endif # endif
SUBDIRS = \ SUBDIRS = \
gst sys \ gst sys ext \
$(GCONF_DIR) \ $(GCONF_DIR) \
m4 m4
# disabled # disabled
# $(SUBDIRS_DOCS) # $(SUBDIRS_DOCS)
DIST_SUBDIRS = \ DIST_SUBDIRS = \
gst sys \ gst sys ext \
m4 m4
# disabled # disabled

View file

@ -1,6 +1,7 @@
List of ported plugins (update when you commit a ported plugin): List of ported plugins (update when you commit a ported plugin):
osssink (wim) osssink (wim) - partially done in threaded
effectv (wim) effectv (wim)
mad (wim)
- Remember that some plugins are already ported and now in the gst-plugins-base module. - Remember that some plugins are already ported and now in the gst-plugins-base module.

View file

@ -345,9 +345,25 @@ dnl ])
dnl ]) 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) AC_SUBST(GST_LIBS)
@ -408,6 +424,8 @@ gst-plugins.spec
gst/Makefile gst/Makefile
gst/effectv/Makefile gst/effectv/Makefile
sys/Makefile sys/Makefile
ext/Makefile
ext/mad/Makefile
common/Makefile common/Makefile
common/m4/Makefile common/m4/Makefile
m4/Makefile m4/Makefile

View file

@ -1,122 +1,116 @@
if USE_A52DEC # if USE_A52DEC
A52DEC_DIR=a52dec # A52DEC_DIR=a52dec
else # else
A52DEC_DIR= # A52DEC_DIR=
endif # endif
if USE_AALIB # if USE_AALIB
AALIB_DIR=aalib # AALIB_DIR=aalib
else # else
AALIB_DIR= # AALIB_DIR=
endif # endif
if USE_ALSA # if USE_AMRNB
ALSA_DIR=alsa # AMRNB_DIR=amrnb
else # else
ALSA_DIR= # AMRNB=
endif # endif
if USE_AMRNB # if USE_ARTS
AMRNB_DIR=amrnb # ARTS_DIR=arts
else # else
AMRNB= # ARTS_DIR=
endif # endif
if USE_ARTS # if USE_ARTSC
ARTS_DIR=arts # ARTSC_DIR=artsd
else # else
ARTS_DIR= # ARTSC_DIR=
endif # endif
if USE_ARTSC # if USE_AUDIOFILE
ARTSC_DIR=artsd # AUDIOFILE_DIR=audiofile
else # else
ARTSC_DIR= # AUDIOFILE_DIR=
endif # endif
if USE_AUDIOFILE # if USE_AUDIORESAMPLE
AUDIOFILE_DIR=audiofile # AUDIORESAMPLE_DIR=audioresample
else # else
AUDIOFILE_DIR= # AUDIORESAMPLE_DIR=
endif # endif
if USE_AUDIORESAMPLE # if USE_CAIRO
AUDIORESAMPLE_DIR=audioresample # CAIRO_DIR=cairo
else # else
AUDIORESAMPLE_DIR= # CAIRO_DIR=
endif # endif
if USE_CAIRO # if USE_CDAUDIO
CAIRO_DIR=cairo # CDAUDIO_DIR=cdaudio
else # else
CAIRO_DIR= # CDAUDIO_DIR=
endif # endif
if USE_CDAUDIO # if USE_CDPARANOIA
CDAUDIO_DIR=cdaudio # CDPARANOIA_DIR=cdparanoia
else # else
CDAUDIO_DIR= # CDPARANOIA_DIR=
endif # endif
if USE_CDPARANOIA # if USE_DIRAC
CDPARANOIA_DIR=cdparanoia # DIRAC_DIR=dirac
else # else
CDPARANOIA_DIR= # DIRAC_DIR=
endif # endif
if USE_DIRAC # if USE_DIRECTFB
DIRAC_DIR=dirac # DIRECTFB_DIR=directfb
else # else
DIRAC_DIR= # DIRECTFB_DIR=
endif # endif
if USE_DIRECTFB # if USE_DIVX
DIRECTFB_DIR=directfb # DIVX_DIR=divx
else # else
DIRECTFB_DIR= # DIVX_DIR=
endif # endif
if USE_DIVX # if USE_DTS
DIVX_DIR=divx # DTS_DIR=dts
else # else
DIVX_DIR= # DTS_DIR=
endif # endif
if USE_DTS # if USE_DVDREAD
DTS_DIR=dts # DVDREAD_DIR=dvdread
else # else
DTS_DIR= # DVDREAD_DIR=
endif # endif
if USE_DVDREAD # if USE_DVDNAV
DVDREAD_DIR=dvdread # DVDNAV_DIR=dvdnav
else # else
DVDREAD_DIR= # DVDNAV_DIR=
endif # endif
if USE_DVDNAV # if USE_ESD
DVDNAV_DIR=dvdnav # ESD_DIR=esd
else # else
DVDNAV_DIR= # ESD_DIR=
endif # endif
if USE_ESD # if USE_FAAC
ESD_DIR=esd # FAAC_DIR=faac
else # else
ESD_DIR= # FAAC_DIR=
endif # endif
if USE_FAAC # if USE_FAAD
FAAC_DIR=faac # FAAD_DIR=faad
else # else
FAAC_DIR= # FAAD_DIR=
endif # endif
if USE_FAAD
FAAD_DIR=faad
else
FAAD_DIR=
endif
## if USE_FESTIVAL ## if USE_FESTIVAL
## FESTIVAL_DIR=festival ## FESTIVAL_DIR=festival
@ -124,113 +118,113 @@ endif
## FESTIVAL_DIR= ## FESTIVAL_DIR=
## endif ## endif
if USE_FLAC # if USE_FLAC
FLAC_DIR=flac # FLAC_DIR=flac
else # else
FLAC_DIR= # FLAC_DIR=
endif # endif
if USE_GDK_PIXBUF # if USE_GDK_PIXBUF
GDK_PIXBUF_DIR=gdk_pixbuf # GDK_PIXBUF_DIR=gdk_pixbuf
else # else
GDK_PIXBUF_DIR= # GDK_PIXBUF_DIR=
endif # endif
if USE_GNOME_VFS # if USE_GNOME_VFS
GNOMEVFS_DIR=gnomevfs # GNOMEVFS_DIR=gnomevfs
else # else
GNOMEVFS_DIR= # GNOMEVFS_DIR=
endif # endif
if USE_GSM # if USE_GSM
GSM_DIR=gsm # GSM_DIR=gsm
else # else
GSM_DIR= # GSM_DIR=
endif # endif
if USE_HERMES # if USE_HERMES
HERMES_DIR=hermes # HERMES_DIR=hermes
else # else
HERMES_DIR= # HERMES_DIR=
endif # endif
if USE_JACK # if USE_JACK
JACK_DIR=jack # JACK_DIR=jack
else # else
JACK_DIR= # JACK_DIR=
endif # endif
if USE_JPEG # if USE_JPEG
JPEG_DIR=jpeg # JPEG_DIR=jpeg
else # else
JPEG_DIR= # JPEG_DIR=
endif # endif
if USE_LADSPA # if USE_LADSPA
LADSPA_DIR=ladspa # LADSPA_DIR=ladspa
else # else
LADPSA_DIR= # LADPSA_DIR=
endif # endif
if USE_LAME # if USE_LAME
LAME_DIR=lame # LAME_DIR=lame
else # else
LAME_DIR= # LAME_DIR=
endif # endif
if USE_LCS # if USE_LCS
LCS_DIR=lcs # LCS_DIR=lcs
else # else
LCS_DIR= # LCS_DIR=
endif # endif
if USE_LIBCACA # if USE_LIBCACA
LIBCACA_DIR=libcaca # LIBCACA_DIR=libcaca
else # else
LIBCACA_DIR= # LIBCACA_DIR=
endif # endif
if USE_LIBDV # if USE_LIBDV
LIBDV_DIR=dv # LIBDV_DIR=dv
else # else
LIBDV_DIR= # LIBDV_DIR=
endif # endif
if USE_LIBFAME # if USE_LIBFAME
LIBFAME_DIR=libfame # LIBFAME_DIR=libfame
else # else
LIBFAME_DIR= # LIBFAME_DIR=
endif # endif
if USE_LIBMNG # if USE_LIBMNG
LIBMNG_DIR=libmng # LIBMNG_DIR=libmng
else # else
LIBMNG_DIR= # LIBMNG_DIR=
endif # endif
if USE_LIBPNG # if USE_LIBPNG
LIBPNG_DIR=libpng # LIBPNG_DIR=libpng
else # else
LIBPNG_DIR= # LIBPNG_DIR=
endif # endif
if USE_POLYP # if USE_POLYP
POLYP_DIR=polyp # POLYP_DIR=polyp
else # else
POLYP_DIR= # POLYP_DIR=
endif # endif
if USE_LIBVISUAL # if USE_LIBVISUAL
LIBVISUAL_DIR=libvisual # LIBVISUAL_DIR=libvisual
else # else
LIBVISUAL_DIR= # LIBVISUAL_DIR=
endif # endif
if USE_LIBMMS # if USE_LIBMMS
LIBMMS_DIR=libmms # LIBMMS_DIR=libmms
else # else
LIBMMS_DIR= # LIBMMS_DIR=
endif # endif
if USE_MAD if USE_MAD
MAD_DIR=mad MAD_DIR=mad
@ -238,29 +232,29 @@ else
MAD_DIR= MAD_DIR=
endif endif
if USE_MIKMOD # if USE_MIKMOD
MIKMOD_DIR=mikmod # MIKMOD_DIR=mikmod
else # else
MIKMOD_DIR= # MIKMOD_DIR=
endif # endif
if USE_MPEG2DEC # if USE_MPEG2DEC
MPEG2DEC_DIR=mpeg2dec # MPEG2DEC_DIR=mpeg2dec
else # else
MPEG2DEC_DIR= #MPEG2DEC_DIR=
endif #endif
if USE_MPEG2ENC # if USE_MPEG2ENC
MPEG2ENC_DIR=mpeg2enc # MPEG2ENC_DIR=mpeg2enc
else # else
MPEG2ENC_DIR= # MPEG2ENC_DIR=
endif # endif
if USE_MPLEX # if USE_MPLEX
MPLEX_DIR=mplex # MPLEX_DIR=mplex
else # else
MPLEX_DIR= # MPLEX_DIR=
endif # endif
#if USE_MAS #if USE_MAS
#MAS_DIR=mas #MAS_DIR=mas
@ -268,131 +262,119 @@ endif
#MAS_DIR= #MAS_DIR=
#endif #endif
if USE_MUSEPACK # if USE_MUSEPACK
MUSEPACK_DIR=musepack # MUSEPACK_DIR=musepack
else # else
MUSEPACK_DIR= # MUSEPACK_DIR=
endif # endif
if USE_MUSICBRAINZ # if USE_MUSICBRAINZ
MUSICBRAINZ_DIR=musicbrainz # MUSICBRAINZ_DIR=musicbrainz
else # else
MUSICBRAINZ_DIR= # MUSICBRAINZ_DIR=
endif # endif
if USE_NAS # if USE_NAS
NAS_DIR=nas # NAS_DIR=nas
else # else
NAS_DIR= # NAS_DIR=
endif # endif
if USE_OGG # if USE_OGG
OGG_DIR=ogg # OGG_DIR=ogg
else # else
OGG_DIR= # OGG_DIR=
endif # endif
if USE_PANGO # if USE_PANGO
PANGO_DIR=pango # PANGO_DIR=pango
else # else
PANGO_DIR= # PANGO_DIR=
endif # endif
if USE_DV1394 # if USE_DV1394
DV1394_DIR=raw1394 # DV1394_DIR=raw1394
else # else
DV1394_DIR= # DV1394_DIR=
endif # endif
if USE_SDL # if USE_SDL
SDL_DIR=sdl # SDL_DIR=sdl
else # else
SDL_DIR= # SDL_DIR=
endif # endif
if USE_SHOUT # if USE_SHOUT
SHOUT_DIR=shout # SHOUT_DIR=shout
else # else
SHOUT_DIR= # SHOUT_DIR=
endif # endif
if USE_SHOUT2 # if USE_SHOUT2
SHOUT2_DIR=shout2 # SHOUT2_DIR=shout2
else # else
SHOUT2_DIR= # SHOUT2_DIR=
endif # endif
if USE_SIDPLAY # if USE_SIDPLAY
SIDPLAY_DIR=sidplay # SIDPLAY_DIR=sidplay
else # else
SIDDPLAY_DIR= # SIDDPLAY_DIR=
endif # endif
if USE_SMOOTHWAVE # if USE_SMOOTHWAVE
SMOOTHWAVE_DIR=smoothwave # SMOOTHWAVE_DIR=smoothwave
else # else
SMOOTHWAVE_DIR= # SMOOTHWAVE_DIR=
endif # endif
if USE_SNDFILE # if USE_SNDFILE
SNDFILE_DIR=sndfile # SNDFILE_DIR=sndfile
else # else
SNDFILE_DIR= # SNDFILE_DIR=
endif # endif
if USE_SWFDEC # if USE_SWFDEC
SWFDEC_DIR=swfdec # SWFDEC_DIR=swfdec
else # else
SWFDEC_DIR= # SWFDEC_DIR=
endif # endif
if USE_TARKIN # if USE_TARKIN
TARKIN_DIR=tarkin # TARKIN_DIR=tarkin
else # else
TARKIN_DIR= # TARKIN_DIR=
endif # endif
if USE_IVORBIS # if USE_IVORBIS
IVORBIS_DIR=ivorbis # IVORBIS_DIR=ivorbis
else # else
IVORBIS_DIR= # IVORBIS_DIR=
endif # endif
if USE_VORBIS # if USE_XVID
VORBIS_DIR=vorbis # XVID_DIR=xvid
else # else
VORBIS_DIR= # XVID_DIR=
endif # endif
if USE_THEORA # if USE_LIBPNG
THEORA_DIR=theora # SNAPSHOT_DIR=snapshot
else # else
THEORA_DIR= # SNAPSHOT_DIR=
endif # endif
if USE_XVID # if USE_SPEEX
XVID_DIR=xvid # SPEEX_DIR=speex
else # else
XVID_DIR= # SPEEX_DIR=
endif # endif
if USE_LIBPNG # if USE_XINE
SNAPSHOT_DIR=snapshot # XINE_DIR=xine
else # else
SNAPSHOT_DIR= # XINE_DIR=
endif # endif
if USE_SPEEX
SPEEX_DIR=speex
else
SPEEX_DIR=
endif
if USE_XINE
XINE_DIR=xine
else
XINE_DIR=
endif
SUBDIRS=\ SUBDIRS=\
$(A52DEC_DIR) \ $(A52DEC_DIR) \
@ -461,67 +443,4 @@ SUBDIRS=\
$(XVID_DIR) $(XVID_DIR)
DIST_SUBDIRS=\ DIST_SUBDIRS=\
a52dec \ mad
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

View file

@ -172,15 +172,15 @@ gst_agingtv_class_init (gpointer g_class, gpointer class_data)
gobject_class = G_OBJECT_CLASS (g_class); gobject_class = G_OBJECT_CLASS (g_class);
videofilter_class = GST_VIDEOFILTER_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 #if 0
g_object_class_install_property (gobject_class, ARG_METHOD, g_object_class_install_property (gobject_class, ARG_METHOD,
g_param_spec_enum ("method", "method", "method", g_param_spec_enum ("method", "method", "method",
GST_TYPE_AGINGTV_METHOD, GST_AGINGTV_METHOD_1, G_PARAM_READWRITE)); GST_TYPE_AGINGTV_METHOD, GST_AGINGTV_METHOD_1, G_PARAM_READWRITE));
#endif #endif
gobject_class->set_property = gst_agingtv_set_property;
gobject_class->get_property = gst_agingtv_get_property;
videofilter_class->setup = gst_agingtv_setup; videofilter_class->setup = gst_agingtv_setup;
} }

View file

@ -173,13 +173,13 @@ gst_dicetv_class_init (gpointer g_class, gpointer class_data)
dicetv_class->reset = gst_dicetv_reset_handler; 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_object_class_install_property (gobject_class, ARG_CUBE_BITS,
g_param_spec_int ("square_bits", "Square Bits", "The size of the Squares", 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)); 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; videofilter_class->setup = gst_dicetv_setup;
} }

View file

@ -94,9 +94,8 @@ static void gst_quarktv_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec); const GValue * value, GParamSpec * pspec);
static void gst_quarktv_get_property (GObject * object, guint prop_id, static void gst_quarktv_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec); 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; static GstElementClass *parent_class = NULL;
@ -159,31 +158,32 @@ gst_quarktv_class_init (GstQuarkTVClass * klass)
parent_class = g_type_class_ref (GST_TYPE_ELEMENT); 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_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PLANES,
g_param_spec_int ("planes", "Planes", "Number of frames in the buffer", g_param_spec_int ("planes", "Planes", "Number of frames in the buffer",
1, 32, PLANES, G_PARAM_READWRITE)); 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; gstelement_class->change_state = gst_quarktv_change_state;
} }
static GstPadLinkReturn static GstPadLinkReturn
gst_quarktv_link (GstPad * pad, const GstCaps * caps) gst_quarktv_link (GstPad * pad, GstPad * peer)
{ {
GstQuarkTV *filter; GstQuarkTV *filter;
GstPad *otherpad; GstPad *otherpad;
gint i;
GstStructure *structure; //gint i;
GstPadLinkReturn res; //GstStructure *structure;
//GstPadLinkReturn res;
filter = GST_QUARKTV (gst_pad_get_parent (pad)); filter = GST_QUARKTV (gst_pad_get_parent (pad));
g_return_val_if_fail (GST_IS_QUARKTV (filter), GST_PAD_LINK_REFUSED); g_return_val_if_fail (GST_IS_QUARKTV (filter), GST_PAD_LINK_REFUSED);
otherpad = (pad == filter->srcpad ? filter->sinkpad : filter->srcpad); otherpad = (pad == filter->srcpad ? filter->sinkpad : filter->srcpad);
#if 0
res = gst_pad_try_set_caps (otherpad, caps); res = gst_pad_try_set_caps (otherpad, caps);
if (GST_PAD_LINK_FAILED (res)) if (GST_PAD_LINK_FAILED (res))
return res; return res;
@ -200,6 +200,7 @@ gst_quarktv_link (GstPad * pad, const GstCaps * caps)
gst_buffer_unref (filter->planetable[i]); gst_buffer_unref (filter->planetable[i]);
filter->planetable[i] = NULL; filter->planetable[i] = NULL;
} }
#endif
return GST_PAD_LINK_OK; return GST_PAD_LINK_OK;
} }
@ -210,7 +211,7 @@ gst_quarktv_init (GstQuarkTV * filter)
filter->sinkpad = filter->sinkpad =
gst_pad_new_from_template (gst_static_pad_template_get gst_pad_new_from_template (gst_static_pad_template_get
(&gst_effectv_sink_template), "sink"); (&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_chain_function (filter->sinkpad, gst_quarktv_chain);
gst_pad_set_link_function (filter->sinkpad, gst_quarktv_link); gst_pad_set_link_function (filter->sinkpad, gst_quarktv_link);
gst_element_add_pad (GST_ELEMENT (filter), filter->sinkpad); gst_element_add_pad (GST_ELEMENT (filter), filter->sinkpad);
@ -218,7 +219,7 @@ gst_quarktv_init (GstQuarkTV * filter)
filter->srcpad = filter->srcpad =
gst_pad_new_from_template (gst_static_pad_template_get gst_pad_new_from_template (gst_static_pad_template_get
(&gst_effectv_src_template), "src"); (&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_pad_set_link_function (filter->srcpad, gst_quarktv_link);
gst_element_add_pad (GST_ELEMENT (filter), filter->srcpad); 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 *)); memset (filter->planetable, 0, filter->planes * sizeof (GstBuffer *));
} }
static void static GstFlowReturn
gst_quarktv_chain (GstPad * pad, GstData * _data) gst_quarktv_chain (GstPad * pad, GstBuffer * buf)
{ {
GstBuffer *buf = GST_BUFFER (_data);
GstQuarkTV *filter; GstQuarkTV *filter;
guint32 *src, *dest; guint32 *src, *dest;
GstBuffer *outbuf; GstBuffer *outbuf;
@ -244,9 +244,7 @@ gst_quarktv_chain (GstPad * pad, GstData * _data)
area = filter->area; area = filter->area;
outbuf = gst_buffer_new (); outbuf = gst_pad_alloc_buffer (filter->srcpad, 0, area, GST_PAD_CAPS (pad));
GST_BUFFER_SIZE (outbuf) = area * sizeof (guint32);
GST_BUFFER_DATA (outbuf) = g_malloc (GST_BUFFER_SIZE (outbuf));
dest = (guint32 *) GST_BUFFER_DATA (outbuf); dest = (guint32 *) GST_BUFFER_DATA (outbuf);
GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (buf); 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); 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--; filter->current_plane--;
if (filter->current_plane < 0) if (filter->current_plane < 0)
filter->current_plane = filter->planes - 1; filter->current_plane = filter->planes - 1;
return GST_FLOW_OK;
} }
static GstElementStateReturn static GstElementStateReturn
@ -289,6 +289,8 @@ gst_quarktv_change_state (GstElement * element)
gst_buffer_unref (filter->planetable[i]); gst_buffer_unref (filter->planetable[i]);
filter->planetable[i] = NULL; filter->planetable[i] = NULL;
} }
g_free (filter->planetable);
filter->planetable = NULL;
break; break;
} }
default: default:
@ -362,20 +364,3 @@ gst_quarktv_get_property (GObject * object, guint prop_id, GValue * value,
break; 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);
}

View file

@ -171,6 +171,9 @@ gst_revtv_class_init (gpointer klass, gpointer class_data)
gobject_class = G_OBJECT_CLASS (klass); gobject_class = G_OBJECT_CLASS (klass);
videofilter_class = GST_VIDEOFILTER_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_object_class_install_property (G_OBJECT_CLASS (klass), ARG_DELAY,
g_param_spec_int ("delay", "Delay", "Delay in frames between updates", g_param_spec_int ("delay", "Delay", "Delay in frames between updates",
1, 100, 1, G_PARAM_READWRITE)); 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", g_param_spec_int ("gain", "Gain", "Control gain",
1, 200, 50, G_PARAM_READWRITE)); 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; videofilter_class->setup = gst_revtv_setup;
} }

View file

@ -169,6 +169,9 @@ gst_vertigotv_class_init (GstVertigoTVClass * klass, gpointer class_data)
klass->reset = gst_vertigotv_reset_handler; 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_object_class_install_property (G_OBJECT_CLASS (klass), ARG_SPEED,
g_param_spec_float ("speed", "Speed", "Control the speed of movement", g_param_spec_float ("speed", "Speed", "Control the speed of movement",
0.01, 100.0, 0.02, G_PARAM_READWRITE)); 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", g_param_spec_float ("zoom_speed", "Zoom Speed",
"Control the rate of zooming", 1.01, 1.1, 1.01, G_PARAM_READWRITE)); "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; videofilter_class->setup = gst_vertigotv_setup;
} }

View file

@ -173,15 +173,15 @@ gst_warptv_class_init (gpointer g_class, gpointer class_data)
gobject_class = G_OBJECT_CLASS (g_class); gobject_class = G_OBJECT_CLASS (g_class);
videofilter_class = GST_VIDEOFILTER_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 #if 0
g_object_class_install_property (gobject_class, ARG_METHOD, g_object_class_install_property (gobject_class, ARG_METHOD,
g_param_spec_enum ("method", "method", "method", g_param_spec_enum ("method", "method", "method",
GST_TYPE_WARPTV_METHOD, GST_WARPTV_METHOD_1, G_PARAM_READWRITE)); GST_TYPE_WARPTV_METHOD, GST_WARPTV_METHOD_1, G_PARAM_READWRITE));
#endif #endif
gobject_class->set_property = gst_warptv_set_property;
gobject_class->get_property = gst_warptv_get_property;
videofilter_class->setup = gst_warptv_setup; videofilter_class->setup = gst_warptv_setup;
} }