diff options
-rw-r--r-- | ChangeLog | 19 | ||||
-rw-r--r-- | configure.ac | 6 | ||||
-rw-r--r-- | ext/sndfile/gstsf.c | 18 |
3 files changed, 36 insertions, 7 deletions
@@ -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); } |