ext/lame/gstlame.*: Added new media support to lame
authorZaheer Abbas Merali <zaheerabbas@merali.org>
Thu, 26 Aug 2004 00:32:00 +0000 (00:32 +0000)
committerZaheer Abbas Merali <zaheerabbas@merali.org>
Thu, 26 Aug 2004 00:32:00 +0000 (00:32 +0000)
Original commit message from CVS:
2004-08-26  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

* ext/lame/gstlame.c: (gst_lame_init), (gst_lame_chain):
* ext/lame/gstlame.h:
Added new media support to lame

ext/lame/gstlame.c
ext/lame/gstlame.h

index 6aefa6b..f5265d4 100644 (file)
@@ -581,6 +581,7 @@ gst_lame_init (GstLame * lame)
 
   id3tag_init (lame->lgf);
 
+  lame->newmediacount = 0;
   GST_DEBUG_OBJECT (lame, "done initializing");
 }
 
@@ -951,6 +952,21 @@ gst_lame_chain (GstPad * pad, GstData * _data)
         }
         gst_pad_event_default (pad, GST_EVENT (buf));
         break;
+      case GST_EVENT_DISCONTINUOUS:
+        if (GST_EVENT_DISCONT_NEW_MEDIA (GST_EVENT (buf))) {
+          /* do not re-initialise if it is first new media discont */
+          if (lame->newmediacount++ > 0) {
+            lame_close (lame->lgf);
+            lame->lgf = lame_init ();
+            lame->initialized = FALSE;
+            lame->last_ts = GST_CLOCK_TIME_NONE;
+
+            gst_lame_setup (lame);
+          }
+        }
+        gst_pad_event_default (pad, GST_EVENT (buf));
+
+        break;
       default:
         gst_pad_event_default (pad, GST_EVENT (buf));
         break;
index 1eccb83..fbb01c7 100644 (file)
@@ -100,6 +100,9 @@ struct _GstLame {
 
   /* time tracker */
   guint64 last_ts, last_offs, last_duration;
+
+  /* new media count */
+  gint16 newmediacount;
 };
 
 struct _GstLameClass {