X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gst%2Fflx%2Fgstflxdec.c;h=ca8933944d826431b6fc1d3260e202ca2b9af282;hb=ce51f6173ca1c37d90f8e2e316d90316583d7755;hp=f4e085c3089d6d2431eb5af23b9833b7109a0bdf;hpb=c9ae463a4f5c81e7c2a5f9c943480a89685e9be4;p=platform%2Fupstream%2Fgst-plugins-good.git diff --git a/gst/flx/gstflxdec.c b/gst/flx/gstflxdec.c index f4e085c..ca89339 100644 --- a/gst/flx/gstflxdec.c +++ b/gst/flx/gstflxdec.c @@ -31,12 +31,9 @@ /* flx element information */ static GstElementDetails flxdec_details = { "FLX Decoder", - "Codec/Audio/Decoder", - "LGPL", + "Codec/Decoder/Audio", "FLX decoder", - VERSION, - "Sepp Wijnands ", - "(C) 2001", + "Sepp Wijnands " }; /* Flx signals and args */ @@ -50,39 +47,26 @@ enum { }; /* input */ -GST_PAD_TEMPLATE_FACTORY (sink_factory, +static GstStaticPadTemplate sink_factory = +GST_STATIC_PAD_TEMPLATE ( "sink", GST_PAD_SINK, GST_PAD_ALWAYS, - GST_CAPS_NEW ( - "flxdec_sink", - "video/x-fli", - NULL - ) -) + GST_STATIC_CAPS ( "video/x-fli" ) +); /* output */ -GST_PAD_TEMPLATE_FACTORY (src_video_factory, +static GstStaticPadTemplate src_video_factory = +GST_STATIC_PAD_TEMPLATE ( "src", GST_PAD_SRC, GST_PAD_ALWAYS, - GST_CAPS_NEW ( - "src_video", - "video/x-raw-rgb", - "bpp", GST_PROPS_INT (32), - "depth", GST_PROPS_INT (32), - "endianness", GST_PROPS_INT (G_BIG_ENDIAN), - "red_mask", GST_PROPS_INT (R_MASK_32), - "green_mask", GST_PROPS_INT (G_MASK_32), - "blue_mask", GST_PROPS_INT (B_MASK_32), - "width", GST_PROPS_INT_RANGE(320, 1280), - "height", GST_PROPS_INT_RANGE(200, 1024), - "framerate", GST_PROPS_FLOAT_RANGE (0, G_MAXFLOAT) - ) -) + GST_STATIC_CAPS ( GST_VIDEO_RGB_PAD_TEMPLATE_CAPS_32 ) +); static void gst_flxdec_class_init (GstFlxDecClass *klass); +static void gst_flxdec_base_init (GstFlxDecClass *klass); static void gst_flxdec_init (GstFlxDec *flxdec); static void gst_flxdec_loop (GstElement *element); @@ -110,7 +94,8 @@ gst_flxdec_get_type(void) if (!flxdec_type) { static const GTypeInfo flxdec_info = { - sizeof(GstFlxDecClass), NULL, + sizeof(GstFlxDecClass), + (GBaseInitFunc)gst_flxdec_base_init, NULL, (GClassInitFunc)gst_flxdec_class_init, NULL, @@ -124,6 +109,18 @@ gst_flxdec_get_type(void) return flxdec_type; } +static void +gst_flxdec_base_init (GstFlxDecClass *klass) +{ + GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass); + + gst_element_class_set_details (gstelement_class, &flxdec_details); + gst_element_class_add_pad_template (gstelement_class, + gst_static_pad_template_get (&sink_factory)); + gst_element_class_add_pad_template (gstelement_class, + gst_static_pad_template_get (&src_video_factory)); +} + static void gst_flxdec_class_init (GstFlxDecClass *klass) { @@ -147,12 +144,12 @@ static void gst_flxdec_init(GstFlxDec *flxdec) { flxdec->sinkpad = gst_pad_new_from_template ( - GST_PAD_TEMPLATE_GET (sink_factory), "sink"); + gst_static_pad_template_get (&sink_factory), "sink"); gst_element_add_pad(GST_ELEMENT(flxdec),flxdec->sinkpad); gst_element_set_loop_function(GST_ELEMENT(flxdec),gst_flxdec_loop); flxdec->srcpad = gst_pad_new_from_template ( - GST_PAD_TEMPLATE_GET (src_video_factory), "src"); + gst_static_pad_template_get (&src_video_factory), "src"); gst_element_add_pad(GST_ELEMENT(flxdec),flxdec->srcpad); flxdec->bs = NULL; @@ -433,6 +430,7 @@ gst_flxdec_loop (GstElement *element) GstBuffer *buf; GstBuffer *databuf; guchar *data, *chunk; + GstCaps *caps; GstFlxDec *flxdec; FlxHeader *flxh; @@ -486,19 +484,11 @@ gst_flxdec_loop (GstElement *element) flxdec->frame_time = flxh->speed * GST_MSECOND; } - gst_pad_try_set_caps (flxdec->srcpad, - GST_CAPS_NEW ( - "src_video", - "video/x-raw-rgb", - "bpp", GST_PROPS_INT (32), - "depth", GST_PROPS_INT (32), - "endianness", GST_PROPS_INT (G_BIG_ENDIAN), - "red_mask", GST_PROPS_INT (R_MASK_32), - "green_mask", GST_PROPS_INT (G_MASK_32), - "blue_mask", GST_PROPS_INT (B_MASK_32), - "width", GST_PROPS_INT (flxh->width), - "height", GST_PROPS_INT (flxh->height), - "framerate", GST_PROPS_FLOAT (GST_SECOND/flxdec->frame_time))); + caps = gst_caps_from_string (GST_VIDEO_RGB_PAD_TEMPLATE_CAPS_32); + gst_caps_set_simple (caps, + "width", G_TYPE_INT, flxh->width, + "height", G_TYPE_INT, flxh->height, + "framerate", G_TYPE_DOUBLE, GST_SECOND/flxdec->frame_time, NULL); if (flxh->depth <= 8) flxdec->converter = flx_colorspace_converter_new(flxh->width, flxh->height); @@ -510,7 +500,6 @@ gst_flxdec_loop (GstElement *element) g_print("GstFlxDec: (FLC) oframe1 : 0x%08x\n", flxh->oframe1); g_print("GstFlxDec: (FLC) oframe2 : 0x%08x\n", flxh->oframe2); } - flxdec->size = (flxh->width * flxh->height); @@ -645,28 +634,23 @@ gst_flxdec_get_property (GObject *object, guint prop_id, GValue *value, GParamSp } static gboolean -plugin_init (GModule *module, GstPlugin *plugin) +plugin_init (GstPlugin *plugin) { - GstElementFactory *factory; - if (!gst_library_load ("gstbytestream")) return FALSE; - factory = gst_element_factory_new("flxdec", GST_TYPE_FLXDEC, &flxdec_details); - g_return_val_if_fail(factory != NULL, FALSE); - gst_element_factory_set_rank (factory, GST_ELEMENT_RANK_PRIMARY); - - gst_element_factory_add_pad_template (factory, GST_PAD_TEMPLATE_GET (sink_factory)); - gst_element_factory_add_pad_template (factory, GST_PAD_TEMPLATE_GET (src_video_factory)); - - gst_plugin_add_feature (plugin, GST_PLUGIN_FEATURE (factory)); - - return TRUE; + return gst_element_register (plugin, "flxdec", + GST_RANK_PRIMARY, GST_TYPE_FLXDEC); } -GstPluginDesc plugin_desc = { +GST_PLUGIN_DEFINE ( GST_VERSION_MAJOR, GST_VERSION_MINOR, "flxdec", - plugin_init -}; + "FLX video decoder", + plugin_init, + VERSION, + GST_LICENSE, + GST_PACKAGE, + GST_ORIGIN +)