* 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)
/*#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 */
/* 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);
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,
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)
{
#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 */
/* 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);
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)
if (!jpegenc_type) {
static const GTypeInfo jpegenc_info = {
- sizeof(GstJpegEnc), NULL,
+ sizeof(GstJpegEnc),
+ gst_jpegenc_base_init,
NULL,
(GClassInitFunc)gst_jpegenc_class_init,
NULL,
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)
{