...
 
Commits (371)
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -60,17 +60,5 @@ EXTRA_DIST = \ ...@@ -60,17 +60,5 @@ EXTRA_DIST = \
DISTCLEANFILES = _stdint.h DISTCLEANFILES = _stdint.h
# check that no marshal or enumtypes files are included
# this in turn ensures that distcheck fails for missing .list files which is currently
# shadowed when the corresponding .c and .h files are included.
distcheck-hook:
@test "x" = "x`find $(distdir) -name \*-enumtypes.[ch]`" && \
test "x" = "x`find $(distdir) -name \*-marshal.[ch]`" || \
( $(ECHO) "*** Leftover enumtypes or marshal files in the tarball." && \
$(ECHO) "*** Make sure the following files are not disted:" && \
find $(distdir) -name \*-enumtypes.[ch] && \
find $(distdir) -name \*-marshal.[ch] && \
false )
include $(top_srcdir)/common/release.mak include $(top_srcdir)/common/release.mak
include $(top_srcdir)/common/po.mak include $(top_srcdir)/common/po.mak
This diff is collapsed.
GStreamer: Release notes for GStreamer Plugins 0.8.7 "Hyperspace" GStreamer: Release notes for GStreamer Plugins 0.8.11 "... And Thanks For All The Fix"
The GStreamer team is happy to announce a new release The GStreamer team is happy to announce a new release
...@@ -23,87 +23,68 @@ want support for a lot of popular video formats, you need to install this ...@@ -23,87 +23,68 @@ want support for a lot of popular video formats, you need to install this
module along with the GStreamer Core and Plugins. An FFmpeg-based colorspace module along with the GStreamer Core and Plugins. An FFmpeg-based colorspace
element has been added to the Plugins however. element has been added to the Plugins however.
A special "thank you" to Ronald Bultje, who has done most of the work on 0.8
in the past year. We wish him luck on his new adventure in NYC. So long !
Features of this release Features of this release
* Parallel installability with 0.6.x series * Parallel installability with 0.6.x series
* Internationalization * Internationalization
* Translations: af az cs en_GB hu nb nl or sq sr sv uk * Translations: af az ca cs en_GB fr hu it nb nl or sq sr sv uk vi
* multichannel audio support * new element: dvdsubdec
* new element: apetag * new element: imagemixer
* new element: ttadec, ttaparse * new element: textrender
* new element: directfbvideosink * new element: x264enc
* vcd fixes * new element: oggparse
* playbin fixes * important fixes for esound synchronisation
* dvdread fixes
* a52dec fixes
* sunaudiosrc fixes
* osssrc fixes
* avidemux fixes
* licensing updates
Bugs fixed in this release Bugs fixed in this release
* 147919 : [playbin] broken wav seeking * 166528 : [playbin] hang playing dvdnav:// location
* 148559 : [monoscope] grinds to a halt * 166783 : [PATCH] New plugin: imagemixer
* 149102 : gstreamer license problems * 167122 : seeking DVD stops playback
* 149613 : [PATCH}Add proxy server support to the musicbrainz plugin * 171563 : Vorbis support for Matroska muxer
* 151624 : Multichannel support * 301312 : dvdsubdec element
* 152339 : [PATCH] [build] gst-plugins cross compiling * 305754 : [PATCH] Internal GStreamer error: pad problem.
* 154773 : [playbin] crashes trying to play short wave files (1 or 2... * 306555 : chain-based text rendering element
* 154775 : [qtdemux] Quicktime movie causing some weird debug spew * 307326 : esdsink makes video choppy totem
* 154814 : Selection of totem crashing videos * 307361 : please expose shoutcast stream metadata through playbin
* 154815 : [PATCH] ffmpegcolorspace leaks caps * 308040 : gstadder: using adder with float audio results in corrupt...
* 155348 : Various MP3 files cannot be detected or played * 308484 : Totem gives error when seeking back to beginning of Ogg T...
* 155879 : [libriff] Bug in lib-riff * 308633 : Matroska muxer always fails
* 156798 : " An error occured " " Could not write to resource " this sa... * 308638 : ffmpegcolorspace does not handle bgra32 correctly
* 157233 : [PATCH] playbin leak fixes * 308772 : mad timestamp inconsistency
* 158258 : Patch for polypsink to make it work with both threaded an... * 308980 : gst-typefind incorrectly identifies m4a files encoded wit...
* 158382 : [PATCH] [build] debian speex detection patch * 309087 : artsdsink registers conflicting property " name " which cau...
* 158650 : [PATCH] [videocrop] video crop is completely buggered * 309150 : [xvimagesink/ximagesink] Incremenet framerate properties
* 158704 : Fix/finish (S)VCD support * 309179 : videomixer does not love static images and eos
* 159215 : [PATCH] Memory leaks in audioscale * 309218 : adder element does not supply duration values to data it ...
* 159296 : Playing benow.mp3 file cause totem to hang on EOS with de... * 309325 : Matroska: incorrect element size
* 159297 : dark.441-16-s.flac hangs on eos in totem with debug spew * 309354 : timestamp inconsitency in audioscale
* 159301 : gstreamer.avi file plays, but have broken seeking in totem * 309375 : cdparanoia can't extract last track
* 159338 : alaw/mulaw decoders caps warning * 309503 : gst-plugins: xine wrapper compile problem with xine-lib-1...
* 159433 : [osssink] doesn't check for supported channels * 309524 : no debug category for gnome-vfs elements
* 159512 : Progress bar with m4a (aac) broken * 309532 : Matroska: Invalid free()
* 159651 : [decodebin] totem crash * 309834 : Totem crashes when trying to Play Disc 'cdrecorder'
* 159759 : DVD LCPM asserts * 310020 : Totem segfaults due to bad location
* 159847 : [build] hardcoded path for musepack headers in configure * 310335 : [decodebin] problems with audio streams in a mkv
* 159864 : avidemux sends GST_EVENT_DISCONTINUOUS * 310597 : gsttextrender cuts of pixels at the right and bottom of s...
* 159986 : [PATCH] Videorate doesn't handle seek and doesn't reset w... * 311006 : [spectrum] handle mono streams
* 160276 : [PATCH] mpegdemux and dvddemux don't reset themselves in ... * 311070 : wavparse returns caps not in template
* 160439 : Can't compile gst-plugins without GCONF * 311162 : [flacdec] doesn't handle 24-bit files
* 160514 : [avidemux] seek after EOF for truncated avi files (to non... * 311401 : alpha capsnego broken
* 160532 : [avidemux] avi[cvid+PCM] : no image, sound is noise * 311487 : configure doesn't check for libGLU?
* 160808 : 'ERROR: pipeline doesn't want to play' when using xvimage... * 311491 : ogg muxer can get pages out of order (patch)
* 160869 : [playbin] ogg file (theora/vorbis) causes segfault near end * 311583 : Skips when playing CD
* 161039 : [PATCH] [deinterlace] rowstrides need fixing * 311600 : Add MPEG-2 support to mpeg1videoparse
* 161538 : [playbin] AVI files with mp3 audio are out-of-sync in pla... * 311662 : " uninitialized value " warning causes build to fail
* 161624 : [alsasink] crash at end of playing this file * 312121 : [modplug] crashes on query before song fully loaded
* 161980 : Volume control applet does not set value correctly. * 312272 : Musicbrainz tags not registered for FLAC encoder
* 162819 : [audioscale] cleanup * 313084 : Eats memory decoding mp3
* 162913 : [mms] missing NULL terminator to g_object_set() in uri ha... * 313374 : Crashes in libgstcdparanoia when missing device permissions
* 162924 : [playbin] totem assertion failures when playing cd / pote... * 313600 : recent change to esdsink in the 0.8.x branch breaks playback
API changed in this release
- API additions:
* A new cdparanoia property, device, has been added.
* A new dvdnavsrc property, device, has been added.
* A new dvdreadsrc property, device, has been added.
* A new vcdsrc property, device, has been added.
- API depreciations:
* A cdparanoia property, location, has been marked for deprecation.
* A dvdnavsrc property, location, has been marked for deprecation.
* A dvdreadsrc property, location, has been marked for deprecation.
* A vcdsrc property, location, has been marked for deprecation.
Download Download
...@@ -138,26 +119,27 @@ as provided by gstreamer-gconf-0.8.pc, to access the default settings. ...@@ -138,26 +119,27 @@ as provided by gstreamer-gconf-0.8.pc, to access the default settings.
Contributors to this release Contributors to this release
* Archana Shah * Akos Maroy
* Andy Wingo
* Arwed v. Merkatz * Arwed v. Merkatz
* Balamurali Viswanathan * Chris Ouch
* Benjamin Otte * Benjamin Otte
* Christian Schaller
* Christophe Fergeau
* David Schleef * David Schleef
* Edward Hervey * Dominique Würtz
* Iain Holmes * Jan Schmidt
* James Bowes * Jonathan Matthew
* Julien Moutte * Josef Zlomek
* Maciej Katafiasz * Luca Ognibene
* Martin Soto * Madhan Raj M
* Michael Benes
* Michael Smith
* Paolo Borelli
* Ronald Bultje * Ronald Bultje
* Sebastien Cote * Ross Burton
* Stefan Kost
* Stephane Loeuillet
* Thomas Vander Stichele * Thomas Vander Stichele
* Thomas Zajic
* Stefan Kost
* Tim-Philipp Müller * Tim-Philipp Müller
* Toni Willberg * Wouter Paesen
* Wim Taymans
* Zaheer Abbas Merali * Zaheer Abbas Merali
   
\ No newline at end of file
...@@ -67,7 +67,7 @@ if test -x mkinstalldirs; then rm mkinstalldirs; fi ...@@ -67,7 +67,7 @@ if test -x mkinstalldirs; then rm mkinstalldirs; fi
# first remove patch if necessary, then run autopoint, then reapply # first remove patch if necessary, then run autopoint, then reapply
if test -f po/Makefile.in.in; if test -f po/Makefile.in.in;
then then
patch -p0 -R < common/gettext.patch patch -p0 -R --forward < common/gettext.patch
fi fi
tool_run "$autopoint --force" tool_run "$autopoint --force"
patch -p0 < common/gettext.patch patch -p0 < common/gettext.patch
......
common @ 54886902
Subproject commit b2638c100721f67b280c3b43b21f1ce1c9b5e316 Subproject commit 54886902497be267fe1f1a3f9c4dc0245bc46175
This diff is collapsed.
...@@ -9,7 +9,7 @@ static GList *seekable_elements = NULL; ...@@ -9,7 +9,7 @@ static GList *seekable_elements = NULL;
static GstElement *pipeline; static GstElement *pipeline;
static GtkAdjustment *adjustment; static GtkAdjustment *adjustment;
static gboolean stats = FALSE; static gboolean stats = FALSE;
static guint64 duration; static gint64 duration;
static guint update_id; static guint update_id;
...@@ -60,7 +60,7 @@ static seek_format seek_formats[] = { ...@@ -60,7 +60,7 @@ static seek_format seek_formats[] = {
G_GNUC_UNUSED static void G_GNUC_UNUSED static void
query_durations () query_durations (void)
{ {
GList *walk = seekable_elements; GList *walk = seekable_elements;
...@@ -89,7 +89,7 @@ query_durations () ...@@ -89,7 +89,7 @@ query_durations ()
} }
G_GNUC_UNUSED static void G_GNUC_UNUSED static void
query_positions () query_positions (void)
{ {
GList *walk = seekable_elements; GList *walk = seekable_elements;
...@@ -121,7 +121,7 @@ static gboolean ...@@ -121,7 +121,7 @@ static gboolean
update_scale (gpointer data) update_scale (gpointer data)
{ {
GstClock *clock; GstClock *clock;
guint64 position = 0; gint64 position = 0;
GstFormat format = GST_FORMAT_TIME; GstFormat format = GST_FORMAT_TIME;
duration = 0; duration = 0;
...@@ -267,11 +267,11 @@ main (int argc, char **argv) ...@@ -267,11 +267,11 @@ main (int argc, char **argv)
gtk_scale_set_digits (GTK_SCALE (hscale), 2); gtk_scale_set_digits (GTK_SCALE (hscale), 2);
gtk_range_set_update_policy (GTK_RANGE (hscale), GTK_UPDATE_CONTINUOUS); gtk_range_set_update_policy (GTK_RANGE (hscale), GTK_UPDATE_CONTINUOUS);
gtk_signal_connect (GTK_OBJECT (hscale), g_signal_connect (hscale,
"button_press_event", G_CALLBACK (start_seek), pipeline); "button_press_event", G_CALLBACK (start_seek), pipeline);
gtk_signal_connect (GTK_OBJECT (hscale), g_signal_connect (hscale,
"button_release_event", G_CALLBACK (stop_seek), pipeline); "button_release_event", G_CALLBACK (stop_seek), pipeline);
gtk_signal_connect (GTK_OBJECT (hscale), g_signal_connect (hscale,
"format_value", G_CALLBACK (format_value), pipeline); "format_value", G_CALLBACK (format_value), pipeline);
/* do the packing stuff ... */ /* do the packing stuff ... */
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
static GstElement *playbin = NULL; static GstElement *playbin = NULL;
static GstElement *pipeline; static GstElement *pipeline;
static guint64 duration; static gint64 duration;
static GtkAdjustment *adjustment; static GtkAdjustment *adjustment;
static GtkWidget *hscale; static GtkWidget *hscale;
static gboolean verbose = FALSE; static gboolean verbose = FALSE;
...@@ -45,7 +45,7 @@ static gboolean ...@@ -45,7 +45,7 @@ static gboolean
update_scale (gpointer data) update_scale (gpointer data)
{ {
GstClock *clock; GstClock *clock;
guint64 position; gint64 position;
GstFormat format = GST_FORMAT_TIME; GstFormat format = GST_FORMAT_TIME;
gboolean res; gboolean res;
...@@ -225,11 +225,11 @@ main (int argc, char **argv) ...@@ -225,11 +225,11 @@ main (int argc, char **argv)
gtk_scale_set_digits (GTK_SCALE (hscale), 2); gtk_scale_set_digits (GTK_SCALE (hscale), 2);
gtk_range_set_update_policy (GTK_RANGE (hscale), GTK_UPDATE_CONTINUOUS); gtk_range_set_update_policy (GTK_RANGE (hscale), GTK_UPDATE_CONTINUOUS);
gtk_signal_connect (GTK_OBJECT (hscale), g_signal_connect (hscale,
"button_press_event", G_CALLBACK (start_seek), pipeline); "button_press_event", G_CALLBACK (start_seek), pipeline);
gtk_signal_connect (GTK_OBJECT (hscale), g_signal_connect (hscale,
"button_release_event", G_CALLBACK (stop_seek), pipeline); "button_release_event", G_CALLBACK (stop_seek), pipeline);
gtk_signal_connect (GTK_OBJECT (hscale), g_signal_connect (hscale,
"format_value", G_CALLBACK (format_value), pipeline); "format_value", G_CALLBACK (format_value), pipeline);
/* do the packing stuff ... */ /* do the packing stuff ... */
......
...@@ -12,7 +12,7 @@ static GList *rate_pads = NULL; ...@@ -12,7 +12,7 @@ static GList *rate_pads = NULL;
static GList *seekable_elements = NULL; static GList *seekable_elements = NULL;
static GstElement *pipeline; static GstElement *pipeline;
static guint64 duration; static gint64 duration;
static GtkAdjustment *adjustment; static GtkAdjustment *adjustment;
static GtkWidget *hscale; static GtkWidget *hscale;
static gboolean stats = FALSE; static gboolean stats = FALSE;
...@@ -663,7 +663,7 @@ query_rates (void) ...@@ -663,7 +663,7 @@ query_rates (void)
} }
G_GNUC_UNUSED static void G_GNUC_UNUSED static void
query_durations_elems () query_durations_elems (void)
{ {
GList *walk = seekable_elements; GList *walk = seekable_elements;
...@@ -693,7 +693,7 @@ query_durations_elems () ...@@ -693,7 +693,7 @@ query_durations_elems ()
} }
G_GNUC_UNUSED static void G_GNUC_UNUSED static void
query_durations_pads () query_durations_pads (void)
{ {
GList *walk = seekable_pads; GList *walk = seekable_pads;
...@@ -723,7 +723,7 @@ query_durations_pads () ...@@ -723,7 +723,7 @@ query_durations_pads ()
} }
G_GNUC_UNUSED static void G_GNUC_UNUSED static void
query_positions_elems () query_positions_elems (void)
{ {
GList *walk = seekable_elements; GList *walk = seekable_elements;
...@@ -753,7 +753,7 @@ query_positions_elems () ...@@ -753,7 +753,7 @@ query_positions_elems ()
} }
G_GNUC_UNUSED static void G_GNUC_UNUSED static void
query_positions_pads () query_positions_pads (void)
{ {
GList *walk = seekable_pads; GList *walk = seekable_pads;
...@@ -786,7 +786,7 @@ static gboolean ...@@ -786,7 +786,7 @@ static gboolean
update_scale (gpointer data) update_scale (gpointer data)
{ {
GstClock *clock; GstClock *clock;
guint64 position; gint64 position;
GstFormat format = GST_FORMAT_TIME; GstFormat format = GST_FORMAT_TIME;
gboolean res; gboolean res;
...@@ -1035,11 +1035,11 @@ main (int argc, char **argv) ...@@ -1035,11 +1035,11 @@ main (int argc, char **argv)
gtk_scale_set_digits (GTK_SCALE (hscale), 2); gtk_scale_set_digits (GTK_SCALE (hscale), 2);
gtk_range_set_update_policy (GTK_RANGE (hscale), GTK_UPDATE_CONTINUOUS); gtk_range_set_update_policy (GTK_RANGE (hscale), GTK_UPDATE_CONTINUOUS);
gtk_signal_connect (GTK_OBJECT (hscale), g_signal_connect (hscale,
"button_press_event", G_CALLBACK (start_seek), pipeline); "button_press_event", G_CALLBACK (start_seek), pipeline);
gtk_signal_connect (GTK_OBJECT (hscale), g_signal_connect (hscale,
"button_release_event", G_CALLBACK (stop_seek), pipeline); "button_release_event", G_CALLBACK (stop_seek), pipeline);
gtk_signal_connect (GTK_OBJECT (hscale), g_signal_connect (hscale,
"format_value", G_CALLBACK (format_value), pipeline); "format_value", G_CALLBACK (format_value), pipeline);
/* do the packing stuff ... */ /* do the packing stuff ... */
......
...@@ -13,7 +13,7 @@ static GList *seekable_elements = NULL; ...@@ -13,7 +13,7 @@ static GList *seekable_elements = NULL;
static GstElement *pipeline; static GstElement *pipeline;
static GtkAdjustment *adjustment; static GtkAdjustment *adjustment;
static gboolean stats = FALSE; static gboolean stats = FALSE;
static guint64 duration; static gint64 duration;
static guint update_id; static guint update_id;
...@@ -136,7 +136,7 @@ query_rates (void) ...@@ -136,7 +136,7 @@ query_rates (void)
} }
G_GNUC_UNUSED static void G_GNUC_UNUSED static void
query_durations () query_durations (void)
{ {
GList *walk = seekable_elements; GList *walk = seekable_elements;
...@@ -165,7 +165,7 @@ query_durations () ...@@ -165,7 +165,7 @@ query_durations ()
} }
G_GNUC_UNUSED static void G_GNUC_UNUSED static void
query_positions () query_positions (void)
{ {
GList *walk = seekable_elements; GList *walk = seekable_elements;
...@@ -197,7 +197,7 @@ static gboolean ...@@ -197,7 +197,7 @@ static gboolean
update_scale (gpointer data) update_scale (gpointer data)
{ {
GstClock *clock; GstClock *clock;
guint64 position; gint64 position;
GstFormat format = GST_FORMAT_TIME; GstFormat format = GST_FORMAT_TIME;
duration = 0; duration = 0;
...@@ -345,11 +345,11 @@ main (int argc, char **argv) ...@@ -345,11 +345,11 @@ main (int argc, char **argv)
gtk_scale_set_digits (GTK_SCALE (hscale), 2); gtk_scale_set_digits (GTK_SCALE (hscale), 2);
gtk_range_set_update_policy (GTK_RANGE (hscale), GTK_UPDATE_CONTINUOUS); gtk_range_set_update_policy (GTK_RANGE (hscale), GTK_UPDATE_CONTINUOUS);
gtk_signal_connect (GTK_OBJECT (hscale), g_signal_connect (hscale,
"button_press_event", G_CALLBACK (start_seek), pipeline); "button_press_event", G_CALLBACK (start_seek), pipeline);
gtk_signal_connect (GTK_OBJECT (hscale), g_signal_connect (hscale,
"button_release_event", G_CALLBACK (stop_seek), pipeline); "button_release_event", G_CALLBACK (stop_seek), pipeline);
gtk_signal_connect (GTK_OBJECT (hscale), g_signal_connect (hscale,
"format_value", G_CALLBACK (format_value), pipeline); "format_value", G_CALLBACK (format_value), pipeline);
/* do the packing stuff ... */ /* do the packing stuff ... */
......
...@@ -58,6 +58,12 @@ else ...@@ -58,6 +58,12 @@ else
CDAUDIO_DIR= CDAUDIO_DIR=
endif endif
if USE_CDIO
CDIO_DIR=cdio
else
CDIO_DIR=
endif
if USE_CDPARANOIA if USE_CDPARANOIA
CDPARANOIA_DIR=cdparanoia CDPARANOIA_DIR=cdparanoia
else else
...@@ -130,6 +136,12 @@ else ...@@ -130,6 +136,12 @@ else
FLAC_DIR= FLAC_DIR=
endif endif
if USE_GCONF
GCONF_DIR = gconf
else
GCONF_DIR =
endif
if USE_GDK_PIXBUF if USE_GDK_PIXBUF
GDK_PIXBUF_DIR=gdk_pixbuf GDK_PIXBUF_DIR=gdk_pixbuf
else else
...@@ -382,12 +394,30 @@ else ...@@ -382,12 +394,30 @@ else
SNAPSHOT_DIR= SNAPSHOT_DIR=
endif endif
if USE_SPC
SPC_DIR=spc
else
SPC_DIR=
endif
if USE_SPEEX if USE_SPEEX
SPEEX_DIR=speex SPEEX_DIR=speex
else else
SPEEX_DIR= SPEEX_DIR=
endif endif
if USE_WAVPACK
WAVPACK_DIR=wavpack
else
WAVPACK_DIR=
endif
if USE_X264
X264_DIR=x264
else
X264_DIR=
endif
if USE_XINE if USE_XINE
XINE_DIR=xine XINE_DIR=xine
else else
...@@ -405,6 +435,7 @@ SUBDIRS=\ ...@@ -405,6 +435,7 @@ SUBDIRS=\
$(AUDIORESAMPLE_DIR) \ $(AUDIORESAMPLE_DIR) \
$(CAIRO_DIR) \ $(CAIRO_DIR) \
$(CDAUDIO_DIR) \ $(CDAUDIO_DIR) \
$(CDIO_DIR) \
$(CDPARANOIA_DIR) \ $(CDPARANOIA_DIR) \
$(DIRAC_DIR) \ $(DIRAC_DIR) \
$(DIRECTFB_DIR) \ $(DIRECTFB_DIR) \
...@@ -418,6 +449,7 @@ SUBDIRS=\ ...@@ -418,6 +449,7 @@ SUBDIRS=\
$(FAAC_DIR) \ $(FAAC_DIR) \
$(FAAD_DIR) \ $(FAAD_DIR) \
$(FLAC_DIR) \ $(FLAC_DIR) \
$(GCONF_DIR) \
$(GDK_PIXBUF_DIR) \ $(GDK_PIXBUF_DIR) \
$(GNOMEVFS_DIR) \ $(GNOMEVFS_DIR) \
$(GSM_DIR) \ $(GSM_DIR) \
...@@ -451,12 +483,15 @@ SUBDIRS=\ ...@@ -451,12 +483,15 @@ SUBDIRS=\
$(SMOOTHWAVE_DIR) \ $(SMOOTHWAVE_DIR) \
$(SNAPSHOT_DIR) \ $(SNAPSHOT_DIR) \
$(SNDFILE_DIR) \ $(SNDFILE_DIR) \
$(SPC_DIR) \
$(SPEEX_DIR) \ $(SPEEX_DIR) \
$(SWFDEC_DIR) \ $(SWFDEC_DIR) \
$(TARKIN_DIR) \ $(TARKIN_DIR) \
$(THEORA_DIR) \ $(THEORA_DIR) \
$(IVORBIS_DIR) \ $(IVORBIS_DIR) \
$(VORBIS_DIR) \ $(VORBIS_DIR) \
$(WAVPACK_DIR) \
$(X264_DIR) \
$(XINE_DIR) \ $(XINE_DIR) \
$(XVID_DIR) $(XVID_DIR)
...@@ -471,6 +506,7 @@ DIST_SUBDIRS=\ ...@@ -471,6 +506,7 @@ DIST_SUBDIRS=\
audioresample \ audioresample \
cairo \ cairo \
cdaudio \ cdaudio \
cdio \
cdparanoia \ cdparanoia \
dirac \ dirac \
directfb \ directfb \
...@@ -483,6 +519,7 @@ DIST_SUBDIRS=\ ...@@ -483,6 +519,7 @@ DIST_SUBDIRS=\
faac \ faac \
faad \ faad \
flac \ flac \
gconf \
gdk_pixbuf \ gdk_pixbuf \
gnomevfs \ gnomevfs \
gsm \ gsm \
...@@ -518,10 +555,13 @@ DIST_SUBDIRS=\ ...@@ -518,10 +555,13 @@ DIST_SUBDIRS=\
shout2 \ shout2 \
sidplay \ sidplay \
smoothwave \ smoothwave \
spc \
speex \ speex \
swfdec \ swfdec \
tarkin \ tarkin \
theora \ theora \
vorbis \ vorbis \
wavpack \
x264 \
xine \ xine \
xvid xvid
...@@ -60,8 +60,8 @@ static GstStaticPadTemplate sink_temp = GST_STATIC_PAD_TEMPLATE ("sink", ...@@ -60,8 +60,8 @@ static GstStaticPadTemplate sink_temp = GST_STATIC_PAD_TEMPLATE ("sink",
"width = (int) 16, " "width = (int) 16, "
"signed = (boolean) true, " "signed = (boolean) true, "
"channels = (int) 2, " "channels = (int) 2, "
"rate = (int) 44100, " "endianness = (int) byte_order") "rate = (int) 44100, " "endianness = (int) " G_STRINGIFY (G_BYTE_ORDER)
); ));
static GstStaticPadTemplate src_temp = GST_STATIC_PAD_TEMPLATE ("src", static GstStaticPadTemplate src_temp = GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC, GST_PAD_SRC,
...@@ -71,8 +71,8 @@ static GstStaticPadTemplate src_temp = GST_STATIC_PAD_TEMPLATE ("src", ...@@ -71,8 +71,8 @@ static GstStaticPadTemplate src_temp = GST_STATIC_PAD_TEMPLATE ("src",
"width = (int) 16, " "width = (int) 16, "
"signed = (boolean) true, " "signed = (boolean) true, "
"channels = (int) 2, " "channels = (int) 2, "
"rate = (int) 44100, " "endianness = (int) byte_order") "rate = (int) 44100, " "endianness = (int) " G_STRINGIFY (G_BYTE_ORDER)
); ));
enum enum
{ {
......
...@@ -122,7 +122,7 @@ gst_artsdsink_class_init (GstArtsdsinkClass * klass) ...@@ -122,7 +122,7 @@ gst_artsdsink_class_init (GstArtsdsinkClass * klass)
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MUTE, g_param_spec_boolean ("mute", "mute", "mute", TRUE, G_PARAM_READWRITE)); /* CHECKME */ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MUTE, g_param_spec_boolean ("mute", "mute", "mute", TRUE, G_PARAM_READWRITE)); /* CHECKME */
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_NAME, g_param_spec_string ("name", "name", "name", NULL, G_PARAM_READWRITE)); /* CHECKME */ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_NAME, g_param_spec_string ("connection-name", "Connection name", "Name to use for the connection", NULL, G_PARAM_READWRITE)); /* CHECKME */
gobject_class->set_property = gst_artsdsink_set_property; gobject_class->set_property = gst_artsdsink_set_property;
gobject_class->get_property = gst_artsdsink_get_property; gobject_class->get_property = gst_artsdsink_get_property;
......
...@@ -74,6 +74,7 @@ static GstStaticPadTemplate afparse_sink_factory = ...@@ -74,6 +74,7 @@ static GstStaticPadTemplate afparse_sink_factory =
static void gst_afparse_base_init (gpointer g_class); static void gst_afparse_base_init (gpointer g_class);
static void gst_afparse_class_init (GstAFParseClass * klass); static void gst_afparse_class_init (GstAFParseClass * klass);
static void gst_afparse_init (GstAFParse * afparse); static void gst_afparse_init (GstAFParse * afparse);
static void gst_afparse_finalize (GObject * object);
static gboolean gst_afparse_open_file (GstAFParse * afparse); static gboolean gst_afparse_open_file (GstAFParse * afparse);
static void gst_afparse_close_file (GstAFParse * afparse); static void gst_afparse_close_file (GstAFParse * afparse);
...@@ -93,6 +94,8 @@ static long gst_afparse_vf_seek (AFvirtualfile * vfile, long offset, ...@@ -93,6 +94,8 @@ static long gst_afparse_vf_seek (AFvirtualfile * vfile, long offset,
int is_relative); int is_relative);
static long gst_afparse_vf_tell (AFvirtualfile * vfile); static long gst_afparse_vf_tell (AFvirtualfile * vfile);
static GstElementClass *parent_class = NULL;
GType GType
gst_afparse_get_type (void) gst_afparse_get_type (void)
{ {
...@@ -140,9 +143,11 @@ gst_afparse_class_init (GstAFParseClass * klass) ...@@ -140,9 +143,11 @@ gst_afparse_class_init (GstAFParseClass * klass)
gobject_class = (GObjectClass *) klass; gobject_class = (GObjectClass *) klass;
gstelement_class = (GstElementClass *) klass; gstelement_class = (GstElementClass *) klass;
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
gobject_class->set_property = gst_afparse_set_property; gobject_class->set_property = gst_afparse_set_property;
gobject_class->get_property = gst_afparse_get_property; gobject_class->get_property = gst_afparse_get_property;
gobject_class->finalize = gst_afparse_finalize;
} }
static void static void
...@@ -161,7 +166,7 @@ gst_afparse_init (GstAFParse * afparse) ...@@ -161,7 +166,7 @@ gst_afparse_init (GstAFParse * afparse)
gst_element_set_loop_function (GST_ELEMENT (afparse), gst_afparse_loop); gst_element_set_loop_function (GST_ELEMENT (afparse), gst_afparse_loop);
afparse->vfile = af_virtual_file_new (); afparse->vfile = g_new (AFvirtualfile, 1);
afparse->vfile->closure = NULL; afparse->vfile->closure = NULL;
afparse->vfile->read = gst_afparse_vf_read; afparse->vfile->read = gst_afparse_vf_read;
afparse->vfile->length = gst_afparse_vf_length; afparse->vfile->length = gst_afparse_vf_length;
...@@ -185,6 +190,16 @@ gst_afparse_init (GstAFParse * afparse) ...@@ -185,6 +190,16 @@ gst_afparse_init (GstAFParse * afparse)
afparse->timestamp = 0LL; afparse->timestamp = 0LL;
} }
static void
gst_afparse_finalize (GObject * obj)
{
GstAFParse *afparse = GST_AFPARSE (obj);
g_free (afparse->file);
G_OBJECT_CLASS (parent_class)->finalize (obj);
}
static void static void
gst_afparse_loop (GstElement * element) gst_afparse_loop (GstElement * element)
{ {
......
...@@ -302,12 +302,15 @@ gst_afsink_open_file (GstAFSink * sink) ...@@ -302,12 +302,15 @@ gst_afsink_open_file (GstAFSink * sink)
if (caps == NULL) { if (caps == NULL) {
g_critical ("gstafsink chain : Could not get caps of pad !\n"); g_critical ("gstafsink chain : Could not get caps of pad !\n");
} else { } else {
gint rate = 0;
structure = gst_caps_get_structure (caps, 0); structure = gst_caps_get_structure (caps, 0);
gst_structure_get_int (structure, "channels", &sink->channels); gst_structure_get_int (structure, "channels", &sink->channels);
gst_structure_get_int (structure, "width", &sink->width); gst_structure_get_int (structure, "width", &sink->width);
gst_structure_get_int (structure, "rate", &sink->rate); gst_structure_get_int (structure, "rate", &rate);
gst_structure_get_boolean (structure, "signed", &sink->is_signed); gst_structure_get_boolean (structure, "signed", &sink->is_signed);
gst_structure_get_int (structure, "endianness", &sink->endianness_data); gst_structure_get_int (structure, "endianness", &sink->endianness_data);
sink->rate = rate;
} }
GST_DEBUG ("channels %d, width %d, rate %d, signed %s", GST_DEBUG ("channels %d, width %d, rate %d, signed %s",
sink->channels, sink->width, sink->rate, sink->is_signed ? "yes" : "no"); sink->channels, sink->width, sink->rate, sink->is_signed ? "yes" : "no");
......
...@@ -440,8 +440,6 @@ gst_cdaudio_get_query_types (GstElement * element) ...@@ -440,8 +440,6 @@ gst_cdaudio_get_query_types (GstElement * element)
static const GstQueryType query_types[] = { static const GstQueryType query_types[] = {
GST_QUERY_TOTAL, GST_QUERY_TOTAL,
GST_QUERY_POSITION, GST_QUERY_POSITION,
GST_QUERY_START,
GST_QUERY_SEGMENT_END,
0 0
}; };
......
...@@ -312,7 +312,7 @@ gst_directfbvideosink_sink_link (GstPad * pad, const GstCaps * caps) ...@@ -312,7 +312,7 @@ gst_directfbvideosink_sink_link (GstPad * pad, const GstCaps * caps)
} }
} else if (g_ascii_strcasecmp (gst_structure_get_name (structure), } else if (g_ascii_strcasecmp (gst_structure_get_name (structure),
"video/x-raw-yuv") == 0) { "video/x-raw-yuv") == 0) {
gint im_format = 0; guint32 im_format = 0;
gst_structure_get_fourcc (structure, "format", &im_format); gst_structure_get_fourcc (structure, "format", &im_format);
GST_DEBUG_OBJECT (directfbvideosink, GST_DEBUG_OBJECT (directfbvideosink,
......
...@@ -333,6 +333,7 @@ gst_dtsdec_handle_event (GstDtsDec * dts, GstEvent * event) ...@@ -333,6 +333,7 @@ gst_dtsdec_handle_event (GstDtsDec * dts, GstEvent * event)
dts->cache = NULL; dts->cache = NULL;
} }
break; break;
default: default:
break; break;
} }
......
...@@ -21,6 +21,8 @@ ...@@ -21,6 +21,8 @@
#include "config.h" #include "config.h"
#endif #endif
#include <string.h>
#include "gstfaac.h" #include "gstfaac.h"
static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src", static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
...@@ -34,10 +36,28 @@ static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src", ...@@ -34,10 +36,28 @@ static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink", static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK, GST_PAD_SINK,
GST_PAD_ALWAYS, GST_PAD_ALWAYS,
GST_STATIC_CAPS ("audio/x-raw-int, " "endianness = (int) BYTE_ORDER, " "signed = (boolean) TRUE, " "width = (int) 16, " "depth = (int) 16, " "rate = (int) [ 8000, 96000 ], " "channels = (int) [ 1, 6]; " "audio/x-raw-int, " "endianness = (int) BYTE_ORDER, " "signed = (boolean) TRUE, " "width = (int) 32, " "depth = (int) 24, " "rate = (int) [ 8000, 96000], " "channels = (int) [ 1, 6]; " "audio/x-raw-float, " "endianness = (int) BYTE_ORDER, " "depth = (int) 32, " /* sizeof (gfloat) */ GST_STATIC_CAPS ("audio/x-raw-int, "
"rate = (int) [ 8000, 96000], " "channels = (int) [ 1, 6]") "endianness = (int) BYTE_ORDER, "
"signed = (boolean) TRUE, "
"width = (int) 16, "
"depth = (int) 16, "
"rate = (int) [ 8000, 96000 ], " "channels = (int) [ 1, 6]")
); );
#define UNUSED \
"audio/x-raw-int, " \
"endianness = (int) BYTE_ORDER, " \
"signed = (boolean) TRUE, " \
"width = (int) 32, " \
"depth = (int) 24, " \
"rate = (int) [ 8000, 96000], " \
"channels = (int) [ 1, 6]; " \
"audio/x-raw-float, " \
"endianness = (int) BYTE_ORDER, " \
"depth = (int) 32, " /* sizeof (gfloat) */ \
"rate = (int) [ 8000, 96000], " \
"channels = (int) [ 1, 6]" \
enum enum
{ {
ARG_0, ARG_0,
...@@ -61,8 +81,7 @@ static void gst_faac_get_property (GObject * object, ...@@ -61,8 +81,7 @@ static void gst_faac_get_property (GObject * object,
static GstPadLinkReturn static GstPadLinkReturn
gst_faac_sinkconnect (GstPad * pad, const GstCaps * caps); gst_faac_sinkconnect (GstPad * pad, const GstCaps * caps);
static GstPadLinkReturn static GstPadLinkReturn gst_faac_srcconnect (GstPad * pad);
gst_faac_srcconnect (GstPad * pad, const GstCaps * caps);
static void gst_faac_chain (GstPad * pad, GstData * data); static void gst_faac_chain (GstPad * pad, GstData * data);
static GstElementStateReturn gst_faac_change_state (GstElement * element); static GstElementStateReturn gst_faac_change_state (GstElement * element);
...@@ -221,23 +240,22 @@ gst_faac_init (GstFaac * faac) ...@@ -221,23 +240,22 @@ gst_faac_init (GstFaac * faac)
faac->samplerate = -1; faac->samplerate = -1;
faac->channels = -1; faac->channels = -1;
faac->cache = NULL; faac->cache = NULL;
faac->cache_time = GST_CLOCK_TIME_NONE; faac->out_time = 0;
faac->cache_duration = 0;
GST_FLAG_SET (faac, GST_ELEMENT_EVENT_AWARE); GST_FLAG_SET (faac, GST_ELEMENT_EVENT_AWARE);
faac->sinkpad = faac->sinkpad =
gst_pad_new_from_template (gst_static_pad_template_get (&sink_template), gst_pad_new_from_template (gst_static_pad_template_get (&sink_template),
"sink"); "sink");
gst_element_add_pad (GST_ELEMENT (faac), faac->sinkpad);
gst_pad_set_chain_function (faac->sinkpad, gst_faac_chain); gst_pad_set_chain_function (faac->sinkpad, gst_faac_chain);
gst_pad_set_link_function (faac->sinkpad, gst_faac_sinkconnect); gst_pad_set_link_function (faac->sinkpad, gst_faac_sinkconnect);
gst_element_add_pad (GST_ELEMENT (faac), faac->sinkpad);
faac->srcpad = faac->srcpad =
gst_pad_new_from_template (gst_static_pad_template_get (&src_template), gst_pad_new_from_template (gst_static_pad_template_get (&src_template),
"src"); "src");
gst_pad_use_explicit_caps (faac->srcpad);
gst_element_add_pad (GST_ELEMENT (faac), faac->srcpad); gst_element_add_pad (GST_ELEMENT (faac), faac->srcpad);
gst_pad_set_link_function (faac->srcpad, gst_faac_srcconnect);
/* default properties */ /* default properties */
faac->bitrate = 1024 * 128; faac->bitrate = 1024 * 128;
...@@ -307,39 +325,33 @@ gst_faac_sinkconnect (GstPad * pad, const GstCaps * caps) ...@@ -307,39 +325,33 @@ gst_faac_sinkconnect (GstPad * pad, const GstCaps * caps)
/* if the other side was already set-up, redo that */ /* if the other side was already set-up, redo that */
if (GST_PAD_CAPS (faac->srcpad)) if (GST_PAD_CAPS (faac->srcpad))
return gst_faac_srcconnect (faac->srcpad, return gst_faac_srcconnect (faac->srcpad);
gst_pad_get_allowed_caps (faac->srcpad));
/* else, that'll be done later */ /* else, that'll be done later */
return GST_PAD_LINK_OK; return GST_PAD_LINK_OK;
} }
static GstPadLinkReturn static GstPadLinkReturn
gst_faac_srcconnect (GstPad * pad, const GstCaps * caps) gst_faac_srcconnect (GstPad * pad)
{ {
GstFaac *faac = GST_FAAC (gst_pad_get_parent (pad)); GstFaac *faac = GST_FAAC (gst_pad_get_parent (pad));
GstCaps *caps;
gint n; gint n;
if (!faac->handle || (faac->samplerate == -1 || faac->channels == -1)) { if (!faac->handle || (faac->samplerate == -1 || faac->channels == -1)) {
return GST_PAD_LINK_DELAYED; return GST_PAD_LINK_DELAYED;
} }
/* we do samplerate/channels ourselves */
for (n = 0; n < gst_caps_get_size (caps); n++) {
GstStructure *structure = gst_caps_get_structure (caps, n);
gst_structure_remove_field (structure, "rate");
gst_structure_remove_field (structure, "channels");
}
/* go through list */ /* go through list */
caps = gst_caps_normalize (caps); caps = gst_pad_get_allowed_caps (pad);
for (n = 0; n < gst_caps_get_size (caps); n++) { for (n = 0; n < gst_caps_get_size (caps); n++) {
GstStructure *structure = gst_caps_get_structure (caps, n); GstStructure *structure = gst_caps_get_structure (caps, n);
faacEncConfiguration *conf; faacEncConfiguration *conf;
gint mpegversion = 0; gint mpegversion = 4;
GstCaps *newcaps; GstCaps *newcaps;
GstPadLinkReturn ret; GstPadLinkReturn ret;
guint8 *c_data;
gulong c_size;
gst_structure_get_int (structure, "mpegversion", &mpegversion); gst_structure_get_int (structure, "mpegversion", &mpegversion);
...@@ -363,19 +375,26 @@ gst_faac_srcconnect (GstPad * pad, const GstCaps * caps) ...@@ -363,19 +375,26 @@ gst_faac_srcconnect (GstPad * pad, const GstCaps * caps)
"mpegversion", G_TYPE_INT, mpegversion, "mpegversion", G_TYPE_INT, mpegversion,
"channels", G_TYPE_INT, faac->channels, "channels", G_TYPE_INT, faac->channels,
"rate", G_TYPE_INT, faac->samplerate, NULL); "rate", G_TYPE_INT, faac->samplerate, NULL);
ret = gst_pad_try_set_caps (faac->srcpad, newcaps); if ((ret =
faacEncGetDecoderSpecificInfo (faac->handle, &c_data,
switch (ret) { &c_size)) == 0) {
case GST_PAD_LINK_OK: GstBuffer *data = gst_buffer_new_and_alloc (c_size);
case GST_PAD_LINK_DONE:
return GST_PAD_LINK_DONE; memcpy (GST_BUFFER_DATA (data), c_data, c_size);
case GST_PAD_LINK_DELAYED: gst_caps_set_simple (newcaps, "codec_data", GST_TYPE_BUFFER, data, NULL);
return GST_PAD_LINK_DELAYED; gst_buffer_unref (data);
default: }
break; if (gst_pad_set_explicit_caps (faac->srcpad, newcaps)) {
gst_caps_free (caps);
gst_caps_free (newcaps);
return GST_PAD_LINK_OK;
} }
gst_caps_free (newcaps);
} }
gst_caps_free (caps);
return GST_PAD_LINK_REFUSED; return GST_PAD_LINK_REFUSED;
} }
...@@ -404,8 +423,10 @@ gst_faac_chain (GstPad * pad, GstData * data) ...@@ -404,8 +423,10 @@ gst_faac_chain (GstPad * pad, GstData * data)
if (ret_size > 0) { if (ret_size > 0) {
GST_BUFFER_SIZE (outbuf) = ret_size; GST_BUFFER_SIZE (outbuf) = ret_size;
GST_BUFFER_TIMESTAMP (outbuf) = 0; GST_BUFFER_TIMESTAMP (outbuf) = faac->out_time;
GST_BUFFER_DURATION (outbuf) = 0; GST_BUFFER_DURATION (outbuf) = GST_SECOND * faac->samples /
(faac->channels * faac->samplerate);
faac->out_time += GST_BUFFER_DURATION (outbuf);
gst_pad_push (faac->srcpad, GST_DATA (outbuf)); gst_pad_push (faac->srcpad, GST_DATA (outbuf));
} else { } else {
break; break;
...@@ -431,8 +452,7 @@ gst_faac_chain (GstPad * pad, GstData * data) ...@@ -431,8 +452,7 @@ gst_faac_chain (GstPad * pad, GstData * data)
} }
if (!GST_PAD_CAPS (faac->srcpad)) { if (!GST_PAD_CAPS (faac->srcpad)) {
if (gst_faac_srcconnect (faac->srcpad, if (gst_faac_srcconnect (faac->srcpad) <= 0) {
gst_pad_get_allowed_caps (faac->srcpad)) <= 0) {
GST_ELEMENT_ERROR (faac, CORE, NEGOTIATION, (NULL), GST_ELEMENT_ERROR (faac, CORE, NEGOTIATION, (NULL),
("failed to negotiate MPEG/AAC format with next element")); ("failed to negotiate MPEG/AAC format with next element"));
gst_buffer_unref (inbuf); gst_buffer_unref (inbuf);
...@@ -511,30 +531,11 @@ gst_faac_chain (GstPad * pad, GstData * data) ...@@ -511,30 +531,11 @@ gst_faac_chain (GstPad * pad, GstData * data)
if (ret_size > 0) { if (ret_size > 0) {
GST_BUFFER_SIZE (outbuf) = ret_size; GST_BUFFER_SIZE (outbuf) = ret_size;
if (faac->cache_time != GST_CLOCK_TIME_NONE) { GST_BUFFER_TIMESTAMP (outbuf) = faac->out_time;
GST_BUFFER_TIMESTAMP (outbuf) = faac->cache_time; GST_BUFFER_DURATION (outbuf) = GST_SECOND * faac->samples /
faac->cache_time = GST_CLOCK_TIME_NONE; (faac->channels * faac->samplerate);
} else faac->out_time += GST_BUFFER_DURATION (outbuf);
GST_BUFFER_TIMESTAMP (outbuf) = GST_BUFFER_TIMESTAMP (subbuf);
GST_BUFFER_DURATION (outbuf) = GST_BUFFER_DURATION (subbuf);
if (faac->cache_duration) {
GST_BUFFER_DURATION (outbuf) += faac->cache_duration;
faac->cache_duration = 0;
}
gst_pad_push (faac->srcpad, GST_DATA (outbuf)); gst_pad_push (faac->srcpad, GST_DATA (outbuf));
} else {
/* FIXME: what I'm doing here isn't fully correct, but there
* really isn't a better way yet.
* Problem is that libfaac caches buffers (for encoding
* purposes), so the timestamp of the outgoing buffer isn't
* the same as the timestamp of the data that I pushed in.
* However, I don't know the delay between those two so I
* cannot really say aything about it. This is a bad guess. */
gst_buffer_unref (outbuf);
if (faac->cache_time != GST_CLOCK_TIME_NONE)
faac->cache_time = GST_BUFFER_TIMESTAMP (subbuf);
faac->cache_duration += GST_BUFFER_DURATION (subbuf);
} }
in_size -= frame_size; in_size -= frame_size;
...@@ -619,8 +620,7 @@ gst_faac_change_state (GstElement * element) ...@@ -619,8 +620,7 @@ gst_faac_change_state (GstElement * element)
gst_buffer_unref (faac->cache); gst_buffer_unref (faac->cache);
faac->cache = NULL; faac->cache = NULL;
} }
faac->cache_time = GST_CLOCK_TIME_NONE; faac->out_time = 0;
faac->cache_duration = 0;
faac->samplerate = -1; faac->samplerate = -1;
faac->channels = -1; faac->channels = -1;
break; break;
......
...@@ -61,7 +61,7 @@ typedef struct _GstFaac { ...@@ -61,7 +61,7 @@ typedef struct _GstFaac {
/* cache of the input */ /* cache of the input */
GstBuffer *cache; GstBuffer *cache;
guint64 cache_time, cache_duration; guint64 out_time;
} GstFaac; } GstFaac;
typedef struct _GstFaacClass { typedef struct _GstFaacClass {
......
This diff is collapsed.
...@@ -329,9 +329,9 @@ static void ...@@ -329,9 +329,9 @@ static void
gst_hermes_colorspace_structure_to_hermes_format (HermesFormat * format, gst_hermes_colorspace_structure_to_hermes_format (HermesFormat * format,
GstStructure * structure) GstStructure * structure)
{ {
gst_structure_get_int (structure, "red_mask", &format->r); gst_structure_get_int (structure, "red_mask", (gint *) & format->r);
gst_structure_get_int (structure, "green_mask", &format->g); gst_structure_get_int (structure, "green_mask", (gint *) & format->g);
gst_structure_get_int (structure, "blue_mask", &format->b); gst_structure_get_int (structure, "blue_mask", (gint *) & format->b);
format->a = 0; format->a = 0;
gst_structure_get_int (structure, "bpp", &format->bits); gst_structure_get_int (structure, "bpp", &format->bits);
format->indexed = 0; format->indexed = 0;
......
...@@ -33,7 +33,7 @@ plugin_init (GstPlugin * plugin) ...@@ -33,7 +33,7 @@ plugin_init (GstPlugin * plugin)
if (!gst_library_load ("gstbytestream")) if (!gst_library_load ("gstbytestream"))
return FALSE; return FALSE;
if (!gst_element_register (plugin, "tremor", GST_RANK_PRIMARY, if (!gst_element_register (plugin, "tremor", GST_RANK_SECONDARY,
ivorbisfile_get_type ())) ivorbisfile_get_type ()))
return FALSE; return FALSE;
......
...@@ -500,7 +500,8 @@ gst_jack_loop (GstElement * element) ...@@ -500,7 +500,8 @@ gst_jack_loop (GstElement * element)
gst_buffer_unref (buffer); gst_buffer_unref (buffer);
} else { } else {
buffer = gst_buffer_new (); buffer = gst_buffer_new ();
gst_buffer_set_data (buffer, pad->data, len); buffer->data = pad->data;
buffer->size = len;
GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_DONTFREE); GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_DONTFREE);
gst_pad_push (pad->pad, GST_DATA (buffer)); gst_pad_push (pad->pad, GST_DATA (buffer));
......
...@@ -113,6 +113,7 @@ gst_ladspa_base_init (GstLADSPAClass * klass) ...@@ -113,6 +113,7 @@ gst_ladspa_base_init (GstLADSPAClass * klass)
klass->numsrcpads++; klass->numsrcpads++;
} }
g_free (name);
gst_element_class_add_pad_template (element_class, templ); gst_element_class_add_pad_template (element_class, templ);
} }
} }
...@@ -416,6 +417,22 @@ gst_ladspa_init (GstLADSPA * ladspa) ...@@ -416,6 +417,22 @@ gst_ladspa_init (GstLADSPA * ladspa)
ladspa->controls = g_new (gfloat, oclass->numcontrols); ladspa->controls = g_new (gfloat, oclass->numcontrols);
ladspa->dpman = gst_dpman_new ("ladspa_dpman", GST_ELEMENT (ladspa)); ladspa->dpman = gst_dpman_new ("ladspa_dpman", GST_ELEMENT (ladspa));
if (oclass->numsinkpads > 0) {
ladspa->data_in = g_new0 (LADSPA_Data *, oclass->numsinkpads);
ladspa->buffers_in = g_new0 (GstBuffer *, oclass->numsinkpads);
} else {
ladspa->data_in = NULL;
ladspa->buffers_in = NULL;
}
if (oclass->numsrcpads > 0) {
ladspa->buffers_out = g_new0 (GstBuffer *, oclass->numsrcpads);
ladspa->data_out = g_new0 (LADSPA_Data *, oclass->numsrcpads);
} else {
ladspa->buffers_out = NULL;
ladspa->data_out = NULL;
}
/* set up pads */ /* set up pads */
sinkcount = 0; sinkcount = 0;
srccount = 0; srccount = 0;
...@@ -524,7 +541,8 @@ gst_ladspa_link (GstPad * pad, const GstCaps * caps) ...@@ -524,7 +541,8 @@ gst_ladspa_link (GstPad * pad, const GstCaps * caps)
/* if this fails in some other plugin, the graph is left in an inconsistent /* if this fails in some other plugin, the graph is left in an inconsistent
state */ state */
for (l = gst_element_get_pad_list (element); l; l = l->next) for (l = gst_element_get_pad_list (element); l; l = l->next)
if (pad != (GstPad *) l->data) if ((pad != (GstPad *) l->data)
&& !GST_PAD_IS_NEGOTIATING ((GstPad *) l->data))
if (gst_pad_try_set_caps ((GstPad *) l->data, caps) <= 0) if (gst_pad_try_set_caps ((GstPad *) l->data, caps) <= 0)
return GST_PAD_LINK_REFUSED; return GST_PAD_LINK_REFUSED;
...@@ -740,12 +758,10 @@ gst_ladspa_loop (GstElement * element) ...@@ -740,12 +758,10 @@ gst_ladspa_loop (GstElement * element)
numsinkpads = oclass->numsinkpads; numsinkpads = oclass->numsinkpads;
numsrcpads = oclass->numsrcpads; numsrcpads = oclass->numsrcpads;
data_in = ladspa->data_in;
/* fixme: these mallocs need to die */ data_out = ladspa->data_out;
data_in = g_new0 (LADSPA_Data *, numsinkpads); buffers_in = ladspa->buffers_in;
data_out = g_new0 (LADSPA_Data *, numsrcpads); buffers_out = ladspa->buffers_out;
buffers_in = g_new0 (GstBuffer *, numsinkpads);
buffers_out = g_new0 (GstBuffer *, numsrcpads);
largest_buffer = -1; largest_buffer = -1;
...@@ -775,7 +791,8 @@ gst_ladspa_loop (GstElement * element) ...@@ -775,7 +791,8 @@ gst_ladspa_loop (GstElement * element)
MIN (GST_BUFFER_SIZE (buffers_in[i]) / sizeof (gfloat), MIN (GST_BUFFER_SIZE (buffers_in[i]) / sizeof (gfloat),
largest_buffer); largest_buffer);
data_in[i] = (LADSPA_Data *) GST_BUFFER_DATA (buffers_in[i]); data_in[i] = (LADSPA_Data *) GST_BUFFER_DATA (buffers_in[i]);
GST_BUFFER_TIMESTAMP (buffers_in[i]) = ladspa->timestamp; if (GST_CLOCK_TIME_IS_VALID (GST_BUFFER_TIMESTAMP (buffers_in[i])))
ladspa->timestamp = GST_BUFFER_TIMESTAMP (buffers_in[i]);
} }
i = 0; i = 0;
...@@ -837,18 +854,12 @@ gst_ladspa_loop (GstElement * element) ...@@ -837,18 +854,12 @@ gst_ladspa_loop (GstElement * element)
ladspa->timestamp += ladspa->buffer_frames * GST_SECOND / ladspa->samplerate; ladspa->timestamp += ladspa->buffer_frames * GST_SECOND / ladspa->samplerate;
/* FIXME: move these mallocs and frees to the state-change handler */
g_free (buffers_out);
g_free (buffers_in);
g_free (data_out);
g_free (data_in);
} }
static void static void
gst_ladspa_chain (GstPad * pad, GstData * _data) gst_ladspa_chain (GstPad * pad, GstData * _data)
{ {
GstBuffer *buffer_in = GST_BUFFER (_data); GstBuffer *buffer_in;
LADSPA_Descriptor *desc; LADSPA_Descriptor *desc;
LADSPA_Data *data_in, **data_out = NULL; LADSPA_Data *data_in, **data_out = NULL;
GstBuffer **buffers_out = NULL; GstBuffer **buffers_out = NULL;
...@@ -857,6 +868,10 @@ gst_ladspa_chain (GstPad * pad, GstData * _data) ...@@ -857,6 +868,10 @@ gst_ladspa_chain (GstPad * pad, GstData * _data)
GstLADSPA *ladspa; GstLADSPA *ladspa;
GstLADSPAClass *oclass; GstLADSPAClass *oclass;
/* we shouldn't get events here... */
g_return_if_fail (GST_IS_BUFFER (_data));
buffer_in = GST_BUFFER (_data);
ladspa = (GstLADSPA *) GST_OBJECT_PARENT (pad); ladspa = (GstLADSPA *) GST_OBJECT_PARENT (pad);
oclass = (GstLADSPAClass *) (G_OBJECT_GET_CLASS (ladspa)); oclass = (GstLADSPAClass *) (G_OBJECT_GET_CLASS (ladspa));
data_in = (LADSPA_Data *) GST_BUFFER_DATA (buffer_in); data_in = (LADSPA_Data *) GST_BUFFER_DATA (buffer_in);
...@@ -864,19 +879,15 @@ gst_ladspa_chain (GstPad * pad, GstData * _data) ...@@ -864,19 +879,15 @@ gst_ladspa_chain (GstPad * pad, GstData * _data)
numsrcpads = oclass->numsrcpads; numsrcpads = oclass->numsrcpads;
desc = ladspa->descriptor; desc = ladspa->descriptor;
/* we shouldn't get events here... */ buffers_out = ladspa->buffers_out;
g_return_if_fail (GST_IS_BUFFER (buffer_in)); data_out = ladspa->data_out;
if (GST_CLOCK_TIME_IS_VALID (GST_BUFFER_TIMESTAMP (buffer_in)))
/* FIXME: this function shouldn't need to malloc() anything */ ladspa->timestamp = GST_BUFFER_TIMESTAMP (buffer_in);
if (numsrcpads > 0) {
buffers_out = g_new (GstBuffer *, numsrcpads);
data_out = g_new (LADSPA_Data *, numsrcpads);
}
i = 0; i = 0;
if (!ladspa->inplace_broken && numsrcpads) { if (!ladspa->inplace_broken && numsrcpads) {
/* reuse the first (chained) buffer */ /* reuse the first (chained) buffer */
buffers_out[i] = buffer_in; buffers_out[i] = gst_buffer_copy_on_write (buffer_in);
GST_DEBUG ("reuse: %d", GST_BUFFER_SIZE (buffer_in)); GST_DEBUG ("reuse: %d", GST_BUFFER_SIZE (buffer_in));
data_out[i] = data_in; data_out[i] = data_in;
i++; i++;
...@@ -888,8 +899,7 @@ gst_ladspa_chain (GstPad * pad, GstData * _data) ...@@ -888,8 +899,7 @@ gst_ladspa_chain (GstPad * pad, GstData * _data)
data_out[i] = (LADSPA_Data *) GST_BUFFER_DATA (buffers_out[i]); data_out[i] = (LADSPA_Data *) GST_BUFFER_DATA (buffers_out[i]);
} }
GST_DPMAN_PREPROCESS (ladspa->dpman, num_samples, GST_DPMAN_PREPROCESS (ladspa->dpman, num_samples, ladspa->timestamp);
GST_BUFFER_TIMESTAMP (buffer_in));
num_processed = 0; num_processed = 0;
/* split up processing of the buffer into chunks so that dparams can /* split up processing of the buffer into chunks so that dparams can
...@@ -923,9 +933,6 @@ gst_ladspa_chain (GstPad * pad, GstData * _data) ...@@ -923,9 +933,6 @@ gst_ladspa_chain (GstPad * pad, GstData * _data)
GST_BUFFER_SIZE (buffers_out[i]), i); GST_BUFFER_SIZE (buffers_out[i]), i);
gst_pad_push (ladspa->srcpads[i], GST_DATA (buffers_out[i])); gst_pad_push (ladspa->srcpads[i], GST_DATA (buffers_out[i]));
} }
g_free (buffers_out);
g_free (data_out);
} }
} }
...@@ -945,8 +952,8 @@ gst_ladspa_get (GstPad * pad) ...@@ -945,8 +952,8 @@ gst_ladspa_get (GstPad * pad)
/* 4096 is arbitrary */ /* 4096 is arbitrary */
buf = gst_buffer_new_and_alloc (4096); buf = gst_buffer_new_and_alloc (4096);
GST_BUFFER_TIMESTAMP (buf) = ladspa->timestamp;
data = (LADSPA_Data *) GST_BUFFER_DATA (buf); data = (LADSPA_Data *) GST_BUFFER_DATA (buf);
GST_BUFFER_TIMESTAMP (buf) = ladspa->timestamp;
GST_DPMAN_PREPROCESS (ladspa->dpman, ladspa->buffer_frames, GST_DPMAN_PREPROCESS (ladspa->dpman, ladspa->buffer_frames,
ladspa->timestamp); ladspa->timestamp);
......
...@@ -59,10 +59,15 @@ struct _GstLADSPA { ...@@ -59,10 +59,15 @@ struct _GstLADSPA {
GstPad **sinkpads, GstPad **sinkpads,
**srcpads; **srcpads;
LADSPA_Data **data_in;
LADSPA_Data **data_out;
GstBuffer **buffers_in;
GstBuffer **buffers_out;
gboolean activated; gboolean activated;
gint samplerate, buffer_frames; gint samplerate, buffer_frames;
gint64 timestamp; GstClockTime timestamp;
gboolean inplace_broken; gboolean inplace_broken;
}; };
......
...@@ -262,15 +262,16 @@ gst_fameenc_class_init (GstFameEncClass * klass) ...@@ -262,15 +262,16 @@ gst_fameenc_class_init (GstFameEncClass * klass)
if (array->len > 0) { if (array->len > 0) {
GType type; GType type;
GParamSpec *pspec; GParamSpec *pspec;
gchar *str1, *str2;
type = str1 = g_strdup_printf ("GstFameEnc_%s", current_type);
g_enum_register_static (g_strdup_printf ("GstFameEnc_%s", type = g_enum_register_static (str1, (GEnumValue *) array->data);
current_type), (GEnumValue *) array->data); g_free (str1);
pspec = str2 = g_strdup_printf ("The FAME \"%s\" object", current_type);
g_param_spec_enum (current_type, current_type, pspec = g_param_spec_enum (current_type, current_type, str2, type,
g_strdup_printf ("The FAME \"%s\" object", current_type), type,
default_index, G_PARAM_READWRITE); default_index, G_PARAM_READWRITE);
g_free (str2);
g_param_spec_set_qdata (pspec, fame_object_name, (gpointer) current_type); g_param_spec_set_qdata (pspec, fame_object_name, (gpointer) current_type);
......
...@@ -265,7 +265,8 @@ gst_mms_get (GstPad * pad) ...@@ -265,7 +265,8 @@ gst_mms_get (GstPad * pad)
GST_BUFFER_SIZE (buf) = 0; GST_BUFFER_SIZE (buf) = 0;
GST_DEBUG ("reading %d bytes", mmssrc->blocksize); GST_DEBUG ("reading %d bytes", mmssrc->blocksize);
result = mms_read (NULL, mmssrc->connection, data, mmssrc->blocksize); result =
mms_read (NULL, mmssrc->connection, (char *) data, mmssrc->blocksize);
GST_BUFFER_OFFSET (buf) = mms_get_current_pos (mmssrc->connection) - result; GST_BUFFER_OFFSET (buf) = mms_get_current_pos (mmssrc->connection) - result;
GST_BUFFER_SIZE (buf) = result; GST_BUFFER_SIZE (buf) = result;
......
...@@ -400,6 +400,7 @@ gst_musepack_stream_init (GstMusepackDec * musepackdec) ...@@ -400,6 +400,7 @@ gst_musepack_stream_init (GstMusepackDec * musepackdec)
"rate", G_TYPE_INT, i.sample_freq, NULL); "rate", G_TYPE_INT, i.sample_freq, NULL);
if (!gst_pad_set_explicit_caps (musepackdec->srcpad, caps)) { if (!gst_pad_set_explicit_caps (musepackdec->srcpad, caps)) {
GST_ELEMENT_ERROR (musepackdec, CORE, NEGOTIATION, (NULL), (NULL)); GST_ELEMENT_ERROR (musepackdec, CORE, NEGOTIATION, (NULL), (NULL));
gst_caps_free (caps);
return FALSE; return FALSE;
} }
...@@ -409,6 +410,7 @@ gst_musepack_stream_init (GstMusepackDec * musepackdec) ...@@ -409,6 +410,7 @@ gst_musepack_stream_init (GstMusepackDec * musepackdec)
musepackdec->len = mpc_streaminfo_get_length_samples (&i); musepackdec->len = mpc_streaminfo_get_length_samples (&i);
musepackdec->init = TRUE; musepackdec->init = TRUE;
gst_caps_free (caps);
return TRUE; return TRUE;
} }