summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Matthew <jonathan@d14n.org>2013-11-23 11:36:43 +1000
committerTim-Philipp Müller <tim@centricular.com>2014-12-11 14:18:44 +0000
commite36849c32196120215bcf4a7a45eddc0fa4532ad (patch)
tree705f5a540f3ffafaf1cf41d5cab7a163e4967416
parentde347016c645704bb847a488c36bb56759f69c5e (diff)
typefindfunctions: add audio/audible typefinder
https://bugzilla.gnome.org/show_bug.cgi?id=715050
-rw-r--r--gst/typefind/gsttypefindfunctions.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/gst/typefind/gsttypefindfunctions.c b/gst/typefind/gsttypefindfunctions.c
index c9521f915..564ef5309 100644
--- a/gst/typefind/gsttypefindfunctions.c
+++ b/gst/typefind/gsttypefindfunctions.c
@@ -5325,6 +5325,29 @@ pva_type_find (GstTypeFind * tf, gpointer private)
gst_type_find_suggest (tf, GST_TYPE_FIND_NEARLY_CERTAIN, PVA_CAPS);
}
+/*** audio/audible ***/
+
+/* derived from pyaudibletags
+ * http://code.google.com/p/pyaudibletags/source/browse/trunk/pyaudibletags.py
+ */
+
+static GstStaticCaps aa_caps = GST_STATIC_CAPS ("audio/audible");
+
+#define AA_CAPS gst_static_caps_get(&aa_caps)
+
+static void
+aa_type_find (GstTypeFind * tf, gpointer private)
+{
+ const guint8 *data;
+
+ data = gst_type_find_peek (tf, 4, 4);
+ if (data == NULL)
+ return;
+
+ if (data[0] == 0x57 && data[1] == 0x90 && data[2] == 0x75 && data[3] == 0x36)
+ gst_type_find_suggest (tf, GST_TYPE_FIND_NEARLY_CERTAIN, AA_CAPS);
+}
+
/*** generic typefind for streams that have some data at a specific position***/
typedef struct
{
@@ -5723,6 +5746,9 @@ plugin_init (GstPlugin * plugin)
TYPE_FIND_REGISTER_START_WITH (plugin, "audio/x-xi", GST_RANK_SECONDARY,
"xi", "Extended Instrument: ", 21, GST_TYPE_FIND_MAXIMUM);
+ TYPE_FIND_REGISTER (plugin, "audio/audible", GST_RANK_MARGINAL,
+ aa_type_find, "aa,aax", AA_CAPS, NULL, NULL);
+
return TRUE;
}