summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog19
-rw-r--r--configure.ac6
-rw-r--r--ext/sndfile/gstsf.c18
3 files changed, 36 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 76a1f9ce..b710f787 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+2004-02-20 Andy Wingo <wingo@pobox.com>
+
+ * gst/intfloat/, gst/oneton: Removed, replaced by audioconvert and
+ interleave respectively.
+
+ * gst/interleave/deinterleave.c: New plugin: deinterleave
+ (replaces on oneton).
+ * gst/interleave/interleave.c: New plugin: interleave.
+ * gst/interleave/plugin.h: Support file.
+ * gst/interleave/plugin.c: Support file.
+
+ * configure.ac: Remove intfloat and oneton, add interleave.
+
+ * ext/sndfile/gstsf.c: Handle events better.
+
+ * gst/audioconvert/gstaudioconvert.c: Change to support int2float
+ and float2int operation. int2float has scheduling problems as
+ noted in in2float_chain.
+
2004-02-20 Benjamin Otte <otte@gnome.org>
* ext/xine/Makefile.am:
diff --git a/configure.ac b/configure.ac
index 4631797a..16162226 100644
--- a/configure.ac
+++ b/configure.ac
@@ -346,7 +346,7 @@ GST_PLUGINS_ALL="\
flx \
goom \
id3 \
- intfloat \
+ interleave \
law \
level \
matroska \
@@ -359,7 +359,6 @@ GST_PLUGINS_ALL="\
mpegaudioparse \
mpegstream \
monoscope \
- oneton \
overlay \
passthrough \
playondemand \
@@ -1559,7 +1558,7 @@ gst/filter/Makefile
gst/flx/Makefile
gst/goom/Makefile
gst/id3/Makefile
-gst/intfloat/Makefile
+gst/interleave/Makefile
gst/law/Makefile
gst/level/Makefile
gst/matroska/Makefile
@@ -1574,7 +1573,6 @@ gst/mpegstream/Makefile
gst/modplug/Makefile
gst/modplug/libmodplug/Makefile
gst/monoscope/Makefile
-gst/oneton/Makefile
gst/overlay/Makefile
gst/passthrough/Makefile
gst/playondemand/Makefile
diff --git a/ext/sndfile/gstsf.c b/ext/sndfile/gstsf.c
index 78b8480b..cc7e3d14 100644
--- a/ext/sndfile/gstsf.c
+++ b/ext/sndfile/gstsf.c
@@ -535,7 +535,7 @@ gst_sf_link (GstPad *pad, const GstCaps *caps)
gst_structure_get_int (structure, "rate", &this->rate);
gst_structure_get_int (structure, "buffer-frames", &this->buffer_frames);
- INFO_OBJ (this, "linked pad %s:%s with fixed caps, frames=%d, rate=%d",
+ INFO_OBJ (this, "linked pad %s:%s with fixed caps, rate=%d, frames=%d",
GST_DEBUG_PAD_NAME (pad), this->rate, this->buffer_frames);
if (this->numchannels) {
@@ -756,6 +756,7 @@ gst_sf_loop (GstElement *element)
for (i=0,l=this->channels; l; l=l->next,i++) {
channel = GST_SF_CHANNEL (l);
+ pull_again:
in = GST_BUFFER (gst_pad_pull (channel->pad));
if (buffer_frames == 0) {
@@ -776,13 +777,24 @@ gst_sf_loop (GstElement *element)
return; /* we've already set gst_element_error */
if (GST_IS_EVENT (in)) {
- num_to_write = 0;
- } else {
+ switch (GST_EVENT_TYPE (in)) {
+ case GST_EVENT_EOS:
+ case GST_EVENT_INTERRUPT:
+ num_to_write = 0;
+ break;
+ default:
+ goto pull_again;
+ break;
+ }
+ }
+
+ if (num_to_write) {
data = (gfloat*)GST_BUFFER_DATA (in);
num_to_write = MIN (num_to_write, GST_BUFFER_SIZE (in) / sizeof (gfloat));
for (j=0; j<num_to_write; j++)
buf[j * nchannels + i % nchannels] = data[j];
}
+
gst_data_unref ((GstData*)in);
}