diff options
Diffstat (limited to 'ext/jpeg/gstjpeg.c')
-rw-r--r-- | ext/jpeg/gstjpeg.c | 22 |
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; } |