gst/mpegaudioparse/: Use GSlice for allocating the seek table entries if we compile...
authorSebastian Dröge <slomo@circular-chaos.org>
Thu, 3 Apr 2008 15:21:50 +0000 (15:21 +0000)
committerSebastian Dröge <slomo@circular-chaos.org>
Thu, 3 Apr 2008 15:21:50 +0000 (15:21 +0000)
Original commit message from CVS:
* gst/mpegaudioparse/gstmpegaudioparse.c:
(mpeg_audio_seek_entry_new), (mpeg_audio_seek_entry_free),
(gst_mp3parse_reset), (gst_mp3parse_emit_frame):
* gst/mpegaudioparse/gstxingmux.c: (gst_xing_seek_entry_new),
(gst_xing_seek_entry_free), (gst_xing_mux_finalize), (xing_reset),
(gst_xing_mux_chain):
Use GSlice for allocating the seek table entries if we compile with
GLib 2.10 or newer.

ChangeLog
common
gst/mpegaudioparse/gstmpegaudioparse.c
gst/mpegaudioparse/gstxingmux.c

index d72a929..fefbe3a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2008-04-03  Sebastian Dröge  <slomo@circular-chaos.org>
+
+       * gst/mpegaudioparse/gstmpegaudioparse.c:
+       (mpeg_audio_seek_entry_new), (mpeg_audio_seek_entry_free),
+       (gst_mp3parse_reset), (gst_mp3parse_emit_frame):
+       * gst/mpegaudioparse/gstxingmux.c: (gst_xing_seek_entry_new),
+       (gst_xing_seek_entry_free), (gst_xing_mux_finalize), (xing_reset),
+       (gst_xing_mux_chain):
+       Use GSlice for allocating the seek table entries if we compile with
+       GLib 2.10 or newer.
+
 2008-04-01  Wim Taymans  <wim.taymans@collabora.co.uk>
 
        * gst/asfdemux/gstasfdemux.c:
diff --git a/common b/common
index 5421815..fda6da5 160000 (submodule)
--- a/common
+++ b/common
@@ -1 +1 @@
-Subproject commit 5421815aeed8b2d73a4d4d4a4b8eb2c93f1b7d02
+Subproject commit fda6da5f2b9b000f7e1df8ffb44a6185ffd9799b
index eb40bdb..50f0c2f 100644 (file)
@@ -41,6 +41,33 @@ GST_DEBUG_CATEGORY_STATIC (mp3parse_debug);
 
 #define GST_READ_UINT24_BE(p) (p[2] | (p[1] << 8) | (p[0] << 16))
 
+/* FIXME: unconditionally use GSlice after we depend on GLib >= 2.10 */
+#if GLIB_CHECK_VERSION (2, 10, 0)
+static inline MPEGAudioSeekEntry *
+mpeg_audio_seek_entry_new ()
+{
+  return g_slice_new (MPEGAudioSeekEntry);
+}
+
+static inline void
+mpeg_audio_seek_entry_free (MPEGAudioSeekEntry * entry)
+{
+  g_slice_free (MPEGAudioSeekEntry, entry);
+}
+#else
+static inline MPEGAudioSeekEntry *
+mpeg_audio_seek_entry_new ()
+{
+  return g_new (MPEGAudioSeekEntry, 1);
+}
+
+static inline void
+mpeg_audio_seek_entry_free (MPEGAudioSeekEntry * entry)
+{
+  g_free (entry);
+}
+#endif
+
 /* elementfactory information */
 static GstElementDetails mp3parse_details = {
   "MPEG1 Audio Parser",
@@ -341,7 +368,8 @@ gst_mp3parse_reset (GstMPEGAudioParse * mp3parse)
   mp3parse->vbri_seek_table = NULL;
 
   if (mp3parse->seek_table) {
-    g_list_foreach (mp3parse->seek_table, (GFunc) g_free, NULL);
+    g_list_foreach (mp3parse->seek_table, (GFunc) mpeg_audio_seek_entry_free,
+        NULL);
     g_list_free (mp3parse->seek_table);
     mp3parse->seek_table = NULL;
   }
@@ -638,7 +666,7 @@ gst_mp3parse_emit_frame (GstMPEGAudioParse * mp3parse, guint size,
       (!mp3parse->seek_table ||
           (mp3parse_seek_table_last_entry (mp3parse))->byte <
           GST_BUFFER_OFFSET (outbuf))) {
-    MPEGAudioSeekEntry *entry = g_new0 (MPEGAudioSeekEntry, 1);
+    MPEGAudioSeekEntry *entry = mpeg_audio_seek_entry_new ();
 
     entry->byte = mp3parse->cur_offset;
     entry->timestamp = GST_BUFFER_TIMESTAMP (outbuf);
index 0e957ee..1089bcd 100644 (file)
@@ -69,6 +69,33 @@ typedef struct _GstXingSeekEntry
   gint byte;
 } GstXingSeekEntry;
 
+/* FIXME: unconditionally use GSlice after we depend on GLib >= 2.10 */
+#if GLIB_CHECK_VERSION (2, 10, 0)
+static inline GstXingSeekEntry *
+gst_xing_seek_entry_new ()
+{
+  return g_slice_new (GstXingSeekEntry);
+}
+
+static inline void
+gst_xing_seek_entry_free (GstXingSeekEntry * entry)
+{
+  g_slice_free (GstXingSeekEntry, entry);
+}
+#else
+static inline GstXingSeekEntry *
+gst_xing_seek_entry_new ()
+{
+  return g_new (GstXingSeekEntry, 1);
+}
+
+static inline void
+gst_xing_seek_entry_free (GstXingSeekEntry * entry)
+{
+  g_free (entry);
+}
+#endif
+
 static void gst_xing_mux_finalize (GObject * obj);
 static GstStateChangeReturn
 gst_xing_mux_change_state (GstElement * element, GstStateChange transition);
@@ -429,7 +456,7 @@ gst_xing_mux_finalize (GObject * obj)
   }
 
   if (xing->seek_table) {
-    g_list_foreach (xing->seek_table, (GFunc) g_free, NULL);
+    g_list_foreach (xing->seek_table, (GFunc) gst_xing_seek_entry_free, NULL);
     g_list_free (xing->seek_table);
     xing->seek_table = NULL;
   }
@@ -446,7 +473,7 @@ xing_reset (GstXingMux * xing)
   gst_adapter_clear (xing->adapter);
 
   if (xing->seek_table) {
-    g_list_foreach (xing->seek_table, (GFunc) g_free, NULL);
+    g_list_foreach (xing->seek_table, (GFunc) gst_xing_seek_entry_free, NULL);
     g_list_free (xing->seek_table);
     xing->seek_table = NULL;
   }
@@ -548,7 +575,7 @@ gst_xing_mux_chain (GstPad * pad, GstBuffer * buffer)
       }
     }
 
-    seek_entry = g_new (GstXingSeekEntry, 1);
+    seek_entry = gst_xing_seek_entry_new ();
     seek_entry->timestamp =
         (xing->duration == GST_CLOCK_TIME_NONE) ? 0 : xing->duration;
     /* Workaround for parsers checking that the first seek table entry is 0 */