gst/: Add 3GP (variables name Q3GP because they can't start with a decoder is work...
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>
Fri, 24 Dec 2004 12:58:17 +0000 (12:58 +0000)
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>
Fri, 24 Dec 2004 12:58:17 +0000 (12:58 +0000)
Original commit message from CVS:
* gst/qtdemux/qtdemux.c: (qtdemux_type_get), (qtdemux_audio_caps):
* gst/typefind/gsttypefindfunctions.c: (q3gp_type_find),
(plugin_init):
Add 3GP (variables name Q3GP because they can't start with a
number). Add samr audio fourcc (used in .3gp files), decoder
is work in progress. Also do a GST_WARNING instead of ERROR
in case of unknown nodes, to decrease output.

ChangeLog
gst/typefind/gsttypefindfunctions.c

index 20a0468..77f4f63 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2004-12-24  Ronald S. Bultje  <rbultje@ronald.bitfreak.net>
+
+       * gst/qtdemux/qtdemux.c: (qtdemux_type_get), (qtdemux_audio_caps):
+       * gst/typefind/gsttypefindfunctions.c: (q3gp_type_find),
+       (plugin_init):
+         Add 3GP (variables name Q3GP because they can't start with a
+         number). Add samr audio fourcc (used in .3gp files), decoder
+         is work in progress. Also do a GST_WARNING instead of ERROR
+         in case of unknown nodes, to decrease output.
+
 2004-12-24  Thomas Vander Stichele  <thomas at apestaart dot org>
 
        * Makefile.am:
index fb60198..054ed29 100644 (file)
@@ -948,10 +948,30 @@ m4a_type_find (GstTypeFind * tf, gpointer unused)
   }
 }
 
+/*** application/x-3gp *********************************************/
+
+/*
+ * The Q is there because variables can't start with a number.
+ */
+
+static GstStaticCaps q3gp_caps = GST_STATIC_CAPS ("application/x-3gp");
+
+#define Q3GP_CAPS (gst_static_caps_get(&q3gp_caps))
+static void
+q3gp_type_find (GstTypeFind * tf, gpointer unused)
+{
+  guint8 *data = gst_type_find_peek (tf, 4, 8);
+
+  if (data && memcmp (data, "ftyp3gp4", 8) == 0) {
+    gst_type_find_suggest (tf, GST_TYPE_FIND_MAXIMUM, Q3GP_CAPS);
+  }
+}
+
 /*** audio/x-mod *********************************************/
 
 static GstStaticCaps mod_caps = GST_STATIC_CAPS ("audio/x-mod");
 
+
 #define MOD_CAPS gst_static_caps_get(&mod_caps)
 /* FIXME: M15 CheckType to do */
 static void
@@ -1485,6 +1505,7 @@ plugin_init (GstPlugin * plugin)
   static gchar *zip_exts[] = { "zip", NULL };
   static gchar *compress_exts[] = { "Z", NULL };
   static gchar *m4a_exts[] = { "m4a", NULL };
+  static gchar *q3gp_exts[] = { "3gp", NULL };
   static gchar *aac_exts[] = { "aac", NULL };
 
   GST_DEBUG_CATEGORY_INIT (type_find_debug, "typefindfunctions",
@@ -1598,6 +1619,8 @@ plugin_init (GstPlugin * plugin)
       speex_type_find, NULL, SPEEX_CAPS, NULL);
   TYPE_FIND_REGISTER (plugin, "audio/x-m4a", GST_RANK_PRIMARY, m4a_type_find,
       m4a_exts, M4A_CAPS, NULL);
+  TYPE_FIND_REGISTER (plugin, "application/x-3gp", GST_RANK_PRIMARY,
+      q3gp_type_find, q3gp_exts, Q3GP_CAPS, NULL);
   TYPE_FIND_REGISTER_START_WITH (plugin, "application/x-executable",
       GST_RANK_MARGINAL, NULL, "\177ELF", 4, GST_TYPE_FIND_MAXIMUM);
   TYPE_FIND_REGISTER (plugin, "adts_mpeg_stream", GST_RANK_SECONDARY,