JPEG JPEG JPEG WHEEEE
authorIain Holmes <iain@prettypeople.org>
Sun, 2 Nov 2003 00:05:54 +0000 (00:05 +0000)
committerIain Holmes <iain@prettypeople.org>
Sun, 2 Nov 2003 00:05:54 +0000 (00:05 +0000)
Original commit message from CVS:
JPEG JPEG JPEG WHEEEE
Fixyed.
(Gah, I'm getting sleeeeeeeeepeeeeeeeee)

ext/jpeg/gstjpeg.c
ext/jpeg/gstjpegdec.c
ext/jpeg/gstjpegenc.c

index 48cfaaf..1e7f897 100644 (file)
  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  * Boston, MA 02111-1307, USA.
  */
-
+#include <config.h>
 
 #include "gstjpegdec.h"
 #include "gstjpegenc.h"
-#include <gst/video/video.h>
-
-/* elementfactory information */
-extern GstElementDetails gst_jpegdec_details;
-extern GstElementDetails gst_jpegenc_details;
-
-GstPadTemplate *jpegdec_src_template, *jpegdec_sink_template; 
-GstPadTemplate *jpegenc_src_template, *jpegenc_sink_template;
-
-static GstCaps*
-jpeg_caps_factory (void) 
-{
-  return
-    gst_caps_new (
-       "jpeg_jpeg",
-       "video/x-jpeg",
-           gst_props_new (
-               "width",     GST_PROPS_INT_RANGE (16, 4096),
-               "height",    GST_PROPS_INT_RANGE (16, 4096),
-               "framerate", GST_PROPS_FLOAT_RANGE (0, G_MAXFLOAT),
-                NULL));
-}
-
-static GstCaps*
-raw_caps_factory (void)
-{
-  return
-    gst_caps_new (
-       "jpeg_raw",
-       "video/x-raw-yuv",
-       GST_VIDEO_YUV_PAD_TEMPLATE_PROPS (
-               GST_PROPS_FOURCC (GST_MAKE_FOURCC ('I','4','2','0'))));
-}
 
 static gboolean
-plugin_init (GModule *module, GstPlugin *plugin)
+plugin_init (GstPlugin *plugin)
 {
-  GstElementFactory *dec, *enc;
-  GstCaps *raw_caps, *jpeg_caps;
-
-  /* create an elementfactory for the jpegdec element */
-  enc = gst_element_factory_new("jpegenc",GST_TYPE_JPEGENC,
-                                   &gst_jpegenc_details);
-  g_return_val_if_fail(enc != NULL, FALSE);
-
-  raw_caps = raw_caps_factory ();
-  jpeg_caps = jpeg_caps_factory ();
-
-  /* register sink pads */
-  jpegenc_sink_template = gst_pad_template_new ("sink", GST_PAD_SINK, 
-                                             GST_PAD_ALWAYS, 
-                                             raw_caps, NULL);
-  gst_element_factory_add_pad_template (enc, jpegenc_sink_template);
-
-  /* register src pads */
-  jpegenc_src_template = gst_pad_template_new ("src", GST_PAD_SRC, 
-                                            GST_PAD_ALWAYS, 
-                                            jpeg_caps, NULL);
-  gst_element_factory_add_pad_template (enc, jpegenc_src_template);
-
-  gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (enc));
-
-  /* create an elementfactory for the jpegdec element */
-  dec = gst_element_factory_new("jpegdec",GST_TYPE_JPEGDEC,
-                                   &gst_jpegdec_details);
-  g_return_val_if_fail(dec != NULL, FALSE);
-  gst_element_factory_set_rank (dec, GST_ELEMENT_RANK_PRIMARY);
-  /* register sink pads */
-  jpegdec_sink_template = gst_pad_template_new ("sink", GST_PAD_SINK, 
-                                             GST_PAD_ALWAYS, 
-                                             jpeg_caps, NULL);
-  gst_element_factory_add_pad_template (dec, jpegdec_sink_template);
-
-  /* register src pads */
-  jpegdec_src_template = gst_pad_template_new ("src", GST_PAD_SRC, 
-                                            GST_PAD_ALWAYS, 
-                                            raw_caps, NULL);
-  gst_element_factory_add_pad_template (dec, jpegdec_src_template);
+  if (!gst_element_register (plugin, "jpegenc", GST_RANK_NONE, GST_TYPE_JPEGENC))
+    return FALSE;
+  
+  if (!gst_element_register (plugin, "jpegdec", GST_RANK_PRIMARY, GST_TYPE_JPEGDEC))
+    return FALSE;
   
-  gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (dec));
-
   return TRUE;
 }
 
-GstPluginDesc plugin_desc = {
+GST_PLUGIN_DEFINE (
   GST_VERSION_MAJOR,
   GST_VERSION_MINOR,
   "jpeg",
-  plugin_init
-};
+  "JPeg plugin library",
+  plugin_init,
+  VERSION,
+  "LGPL",
+  GST_COPYRIGHT,
+  GST_PACKAGE,
+  GST_ORIGIN)
index 57cc666..5f64910 100644 (file)
 
 /*#define DEBUG_ENABLED*/
 #include "gstjpegdec.h"
+#include <gst/video/video.h>
 
-extern GstPadTemplate *jpegdec_src_template, *jpegdec_sink_template;
+static GstPadTemplate *jpegdec_src_template, *jpegdec_sink_template;
 
 /* elementfactory information */
 GstElementDetails gst_jpegdec_details = {
   "jpeg image decoder",
   "Codec/Image",
-  "LGPL",
   ".jpeg",
-  VERSION,
   "Wim Taymans <wim.taymans@tvd.be>",
-  "(C) 2000",
 };
 
 /* JpegDec signals and args */
@@ -50,6 +48,7 @@ enum {
   /* FILL ME */
 };
 
+static void     gst_jpegdec_base_init   (gpointer g_class);
 static void    gst_jpegdec_class_init  (GstJpegDec *klass);
 static void    gst_jpegdec_init        (GstJpegDec *jpegdec);
 
@@ -63,10 +62,11 @@ static GstElementClass *parent_class = NULL;
 GType
 gst_jpegdec_get_type(void) {
   static GType jpegdec_type = 0;
-
+  
   if (!jpegdec_type) {
     static const GTypeInfo jpegdec_info = {
-      sizeof(GstJpegDec),      NULL,
+      sizeof(GstJpegDec),
+      gst_jpegdec_base_init,
       NULL,
       (GClassInitFunc)gst_jpegdec_class_init,
       NULL,
@@ -80,6 +80,51 @@ gst_jpegdec_get_type(void) {
   return jpegdec_type;
 }
 
+static GstCaps*
+jpeg_caps_factory (void) 
+{
+  return
+    gst_caps_new (
+       "jpeg_jpeg",
+       "video/x-jpeg",
+           gst_props_new (
+               "width",     GST_PROPS_INT_RANGE (16, 4096),
+               "height",    GST_PROPS_INT_RANGE (16, 4096),
+               "framerate", GST_PROPS_FLOAT_RANGE (0, G_MAXFLOAT),
+                NULL));
+}
+
+static GstCaps*
+raw_caps_factory (void)
+{
+  return
+    gst_caps_new (
+      "jpeg_raw",
+       "video/x-raw-yuv",
+       GST_VIDEO_YUV_PAD_TEMPLATE_PROPS (
+         GST_PROPS_FOURCC (GST_MAKE_FOURCC ('I','4','2','0'))));
+}
+
+static void
+gst_jpegdec_base_init (gpointer g_class)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+  GstCaps *raw_caps, *jpeg_caps;
+  
+  raw_caps = raw_caps_factory ();
+  jpeg_caps = jpeg_caps_factory ();
+  
+  jpegdec_sink_template = gst_pad_template_new ("sink", GST_PAD_SINK, 
+                                               GST_PAD_ALWAYS, 
+                                               jpeg_caps, NULL);
+  jpegdec_src_template = gst_pad_template_new ("src", GST_PAD_SRC, 
+                                              GST_PAD_ALWAYS, 
+                                              raw_caps, NULL);
+  gst_element_class_add_pad_template (element_class, jpegdec_sink_template);
+  gst_element_class_add_pad_template (element_class, jpegdec_src_template);
+  gst_element_class_set_details (element_class, &gst_jpegdec_details);
+}
+
 static void
 gst_jpegdec_class_init (GstJpegDec *klass)
 {
index df94da9..e35885a 100644 (file)
 #include <string.h>
 
 #include "gstjpegenc.h"
+#include <gst/video/video.h>
 
 /* elementfactory information */
 GstElementDetails gst_jpegenc_details = {
   "jpeg image encoder",
   "Codec/Image",
-  "LGPL",
   ".jpeg",
-  VERSION,
   "Wim Taymans <wim.taymans@tvd.be>",
-  "(C) 2000",
 };
 
 /* JpegEnc signals and args */
@@ -48,6 +46,7 @@ enum {
   /* FILL ME */
 };
 
+static void             gst_jpegenc_base_init   (gpointer g_class);
 static void            gst_jpegenc_class_init  (GstJpegEnc *klass);
 static void            gst_jpegenc_init        (GstJpegEnc *jpegenc);
 
@@ -60,6 +59,7 @@ static void           gst_jpegenc_resync      (GstJpegEnc *jpegenc);
 
 static GstElementClass *parent_class = NULL;
 static guint gst_jpegenc_signals[LAST_SIGNAL] = { 0 };
+static GstPadTemplate *jpegenc_src_template, *jpegenc_sink_template;
 
 GType
 gst_jpegenc_get_type (void)
@@ -68,7 +68,8 @@ gst_jpegenc_get_type (void)
 
   if (!jpegenc_type) {
     static const GTypeInfo jpegenc_info = {
-      sizeof(GstJpegEnc),      NULL,
+      sizeof(GstJpegEnc),
+      gst_jpegenc_base_init,
       NULL,
       (GClassInitFunc)gst_jpegenc_class_init,
       NULL,
@@ -82,6 +83,52 @@ gst_jpegenc_get_type (void)
   return jpegenc_type;
 }
 
+static GstCaps*
+jpeg_caps_factory (void) 
+{
+  return
+    gst_caps_new (
+       "jpeg_jpeg",
+       "video/x-jpeg",
+           gst_props_new (
+               "width",     GST_PROPS_INT_RANGE (16, 4096),
+               "height",    GST_PROPS_INT_RANGE (16, 4096),
+               "framerate", GST_PROPS_FLOAT_RANGE (0, G_MAXFLOAT),
+                NULL));
+}
+
+static GstCaps*
+raw_caps_factory (void)
+{
+  return
+    gst_caps_new (
+       "jpeg_raw",
+       "video/x-raw-yuv",
+       GST_VIDEO_YUV_PAD_TEMPLATE_PROPS (
+         GST_PROPS_FOURCC (GST_MAKE_FOURCC ('I','4','2','0'))));
+}
+
+static void
+gst_jpegenc_base_init (gpointer g_class)
+{
+  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+  GstCaps *raw_caps, *jpeg_caps;
+  
+  raw_caps = raw_caps_factory ();
+  jpeg_caps = jpeg_caps_factory ();
+
+  jpegenc_sink_template = gst_pad_template_new ("sink", GST_PAD_SINK, 
+                                               GST_PAD_ALWAYS, 
+                                               raw_caps, NULL);
+  jpegenc_src_template = gst_pad_template_new ("src", GST_PAD_SRC, 
+                                              GST_PAD_ALWAYS, 
+                                              jpeg_caps, NULL);
+
+  gst_element_class_add_pad_template (element_class, jpegenc_sink_template);
+  gst_element_class_add_pad_template (element_class, jpegenc_src_template);
+  gst_element_class_set_details (element_class, &gst_jpegenc_details);
+}
+
 static void
 gst_jpegenc_class_init (GstJpegEnc *klass)
 {