summaryrefslogtreecommitdiffstats
path: root/ext/jpeg/gstjpeg.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/jpeg/gstjpeg.c')
-rw-r--r--ext/jpeg/gstjpeg.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/ext/jpeg/gstjpeg.c b/ext/jpeg/gstjpeg.c
index 58749534..63c54637 100644
--- a/ext/jpeg/gstjpeg.c
+++ b/ext/jpeg/gstjpeg.c
@@ -19,12 +19,30 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include <string.h>
#include "gstjpegdec.h"
#include "gstjpegenc.h"
#include "gstsmokeenc.h"
#include "gstsmokedec.h"
+static GstStaticCaps smoke_caps = GST_STATIC_CAPS ("video/x-smoke");
+
+#define SMOKE_CAPS (gst_static_caps_get(&smoke_caps))
+static void
+smoke_type_find (GstTypeFind * tf, gpointer private)
+{
+ guint8 *data = gst_type_find_peek (tf, 0, 6);
+
+ if (data) {
+ if (data[0] != 0x80)
+ return;
+ if (memcmp (&data[1], "smoke", 5) != 0)
+ return;
+ gst_type_find_suggest (tf, GST_TYPE_FIND_MAXIMUM, SMOKE_CAPS);
+ }
+}
+
static gboolean
plugin_init (GstPlugin * plugin)
{
@@ -44,6 +62,10 @@ plugin_init (GstPlugin * plugin)
GST_TYPE_SMOKEDEC))
return FALSE;
+ if (!gst_type_find_register (plugin, "video/x-smoke", GST_RANK_PRIMARY,
+ smoke_type_find, NULL, SMOKE_CAPS, NULL))
+ return FALSE;
+
return TRUE;
}