gst/audioscale/gstaudioscale.c: Fix for #162819 - make audioscale reusable
authorRonald Bultje <rbultje@ronald.bitfreak.net>
Mon, 3 Jan 2005 16:19:03 +0000 (16:19 +0000)
committerThomas Vander Stichele <thomas@apestaart.org>
Mon, 3 Jan 2005 16:19:03 +0000 (16:19 +0000)
Original commit message from CVS:

patch by: Ronald Bultje <rbultje@ronald.bitfreak.net>

* gst/audioscale/gstaudioscale.c:
Fix for #162819 - make audioscale reusable
Fixes playback of more than one file with playbin/totem

ChangeLog
gst/audioscale/gstaudioscale.c

index 7d95f01..ed92ea2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2005-01-03  Thomas Vander Stichele  <thomas at apestaart dot org>
+
+       patch by: Ronald Bultje <rbultje@ronald.bitfreak.net>
+
+       * gst/audioscale/gstaudioscale.c:
+         Fix for #162819 - make audioscale reusable
+         Fixes playback of more than one file with playbin/totem
+
 2004-12-29  Thomas Vander Stichele  <thomas at apestaart dot org>
 
        * gst/ffmpegcolorspace/avcodec.h:
index 9d39cd7..bfcbff9 100644 (file)
@@ -109,6 +109,7 @@ static void gst_audioscale_init (Audioscale * audioscale);
 static void gst_audioscale_dispose (GObject * object);
 
 static void gst_audioscale_chain (GstPad * pad, GstData * _data);
+static GstElementStateReturn gst_audioscale_change_state (GstElement * element);
 
 static void gst_audioscale_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec);
@@ -166,6 +167,7 @@ static void gst_audioscale_class_init (AudioscaleClass * klass)
   gobject_class->set_property = gst_audioscale_set_property;
   gobject_class->get_property = gst_audioscale_get_property;
   gobject_class->dispose = gst_audioscale_dispose;
+  gstelement_class->change_state = gst_audioscale_change_state;
 
   g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_FILTERLEN,
       g_param_spec_int ("filter_length", "filter_length", "filter_length",
@@ -594,6 +596,21 @@ static void gst_audioscale_chain (GstPad * pad, GstData * _data)
 
 }
 
+static GstElementStateReturn gst_audioscale_change_state (GstElement * element)
+{
+  Audioscale *audioscale = GST_AUDIOSCALE (element);
+
+  switch (GST_STATE_TRANSITION (element)) {
+    case GST_STATE_PAUSED_TO_READY:
+      audioscale->gst_resample_offset = 0;
+      break;
+    default:
+      break;
+  }
+
+  return parent_class->change_state (element);
+}
+
 static void
     gst_audioscale_set_property (GObject * object, guint prop_id,
     const GValue * value, GParamSpec * pspec)