$(GST_REGISTRY_SRC) \
gst-inspect \
gst-xmlinspect \
+ gst-typefind \
$(GST_LOADSAVE_SRC) \
gst-md5sum
gst_md5sum_CFLAGS = $(GST_CFLAGS) -DGST_CONFIG_DIR=\"$(GST_CONFIG_DIR)\" \
-DGST_CACHE_DIR=\""$(GST_CACHE_DIR)"\"
+gst_typefind_LDADD = $(GST_LIBS) #-lefence
+gst_typefind_CFLAGS = $(GST_CFLAGS) -DGST_CONFIG_DIR=\"$(GST_CONFIG_DIR)\" \
+ -DGST_CACHE_DIR=\""$(GST_CACHE_DIR)"\"
+
gst_inspect_LDADD = $(GST_LIBS) ../libs/gst/control/libgstcontrol-@GST_MAJORMINOR@.la
gst_inspect_CFLAGS = $(GST_CFLAGS) -DGST_CONFIG_DIR=\"$(GST_CONFIG_DIR)\" \
-DGST_CACHE_DIR=\""$(GST_CACHE_DIR)"\"
--- /dev/null
+#include <string.h>
+#include <stdlib.h>
+#include <gst/gst.h>
+
+/*
+ * find the type of a media file and display it's properties
+ **/
+
+gboolean FOUND = FALSE;
+
+void
+gst_caps_print (GstCaps *caps)
+{
+ while (caps) {
+ g_print ("%s (%s)\n", caps->name, gst_caps_get_mime (caps));
+ if (caps->properties) {
+ g_print ("has properties\n");
+ }
+ caps = caps->next;
+ }
+}
+
+void
+have_type_handler (GstElement *typefind, gpointer data)
+{
+ GstCaps *caps = (GstCaps *) data;
+ gst_caps_print (caps);
+ FOUND = TRUE;
+}
+
+int
+main (int argc, char *argv[])
+{
+ GstElement *pipeline;
+ GstElement *source, *typefind;
+
+ gst_init (&argc, &argv);
+
+ if (argc < 2) { g_error ("Please give a filename to typefind"); }
+ pipeline = gst_pipeline_new (NULL);
+ source = gst_element_factory_make ("filesrc", "source");
+ g_assert (GST_IS_ELEMENT (source));
+ g_object_set (source, "location", argv[1], NULL);
+ typefind = gst_element_factory_make ("typefind", "typefind");
+ g_assert (GST_IS_ELEMENT (typefind));
+ gst_bin_add_many (GST_BIN (pipeline), source, typefind, NULL);
+ gst_element_link (source, typefind);
+ g_signal_connect (G_OBJECT (typefind), "have-type",
+ G_CALLBACK (have_type_handler), NULL);
+
+ /* set to play */
+ gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_PLAYING);
+
+ while (gst_bin_iterate (GST_BIN (pipeline)) && !FOUND) ;
+ if (!FOUND) {
+ g_print ("No type found\n");
+ return 1;
+ }
+ return 0;
+}
+