diff options
author | Jan Schmidt <thaytan@mad.scientist.com> | 2003-12-21 22:43:09 +0000 |
---|---|---|
committer | Jan Schmidt <thaytan@mad.scientist.com> | 2003-12-21 22:43:09 +0000 |
commit | 26da56b423a834192f5edf413c3cb1be257f845a (patch) | |
tree | 4182e5351f49767eaf5447091a8050d27bd69474 /ext/libfame | |
parent | 0d9a29465920184a2f1ae1d21be9d8598dd33b93 (diff) | |
download | gst-plugins-bad-26da56b423a834192f5edf413c3cb1be257f845a.tar.gz gst-plugins-bad-26da56b423a834192f5edf413c3cb1be257f845a.tar.bz2 gst-plugins-bad-26da56b423a834192f5edf413c3cb1be257f845a.zip |
Port lame, libfame and xvid to new CAPS
Original commit message from CVS:
Port lame, libfame and xvid to new CAPS
Fix varargs in jpegdec and pngenc
Make GstStaticPadTemplates static in gsmdec
Add integer versions of the RGB masks in video.h
Fix inverted logic in gstvideotestsrc
Diffstat (limited to 'ext/libfame')
-rw-r--r-- | ext/libfame/gstlibfame.c | 85 |
1 files changed, 32 insertions, 53 deletions
diff --git a/ext/libfame/gstlibfame.c b/ext/libfame/gstlibfame.c index be2404d5..6b8d3053 100644 --- a/ext/libfame/gstlibfame.c +++ b/ext/libfame/gstlibfame.c @@ -60,54 +60,34 @@ enum { /* FILL ME */ }; -GST_PAD_TEMPLATE_FACTORY (sink_template_factory, +static GstStaticPadTemplate sink_template = +GST_STATIC_PAD_TEMPLATE ( "sink", GST_PAD_SINK, GST_PAD_ALWAYS, - GST_CAPS_NEW ( - "fameenc_sink_caps", - "video/x-raw-yuv", - "format", - GST_PROPS_FOURCC (GST_MAKE_FOURCC ('I','4','2','0')), - "width", GST_PROPS_INT_RANGE (16, 4096), - "height", GST_PROPS_INT_RANGE (16, 4096), - "framerate", GST_PROPS_LIST ( - GST_PROPS_FLOAT (24/1.001), - GST_PROPS_FLOAT (24.), - GST_PROPS_FLOAT (25.), - GST_PROPS_FLOAT (30/1.001), - GST_PROPS_FLOAT (30.), - GST_PROPS_FLOAT (50.), - GST_PROPS_FLOAT (60/1.001), - GST_PROPS_FLOAT (60.) - ) + GST_STATIC_CAPS ( + "video/x-raw-yuv, " + "format = (fourcc) I420, " + "width = (int) [ 16, 4096 ], " + "height = (int) [ 16, 4096 ], " + "framerate = (double) { 23.976024, 24.0, 25.0, 29.970030, 30.0, " + " 50.0, 59.940060, 60.0 }" ) -) +); -GST_PAD_TEMPLATE_FACTORY (src_template_factory, +static GstStaticPadTemplate src_template = +GST_STATIC_PAD_TEMPLATE ( "src", GST_PAD_SRC, GST_PAD_ALWAYS, - GST_CAPS_NEW ( - "fameenc_src_caps", - "video/mpeg", - "mpegversion", GST_PROPS_LIST ( - GST_PROPS_INT (1), - GST_PROPS_INT (4) - ), - "systemstream", GST_PROPS_BOOLEAN (FALSE), - "width", GST_PROPS_INT_RANGE (16, 4096), - "height", GST_PROPS_INT_RANGE (16, 4096), - "framerate", GST_PROPS_LIST ( - GST_PROPS_FLOAT (24/1.001), - GST_PROPS_FLOAT (24.), - GST_PROPS_FLOAT (25.), - GST_PROPS_FLOAT (30/1.001), - GST_PROPS_FLOAT (30.), - GST_PROPS_FLOAT (50.), - GST_PROPS_FLOAT (60/1.001), - GST_PROPS_FLOAT (60.) - ) + GST_STATIC_CAPS ( + "video/mpeg, " + "mpegversion = (int) { 1, 4 }, " + "systemstream = (boolean) FALSE, " + "width = (int) [ 16, 4096 ], " + "height = (int) [ 16, 4096 ], " + "framerate = (double) { 23.976024, 24.0, 25.0, 29.970030, 30.0, " + " 50.0, 59.940060, 60.0 }" ) ); @@ -205,9 +185,9 @@ gst_fameenc_base_init (GstFameEncClass *klass) GstElementClass *element_class = GST_ELEMENT_CLASS (klass); gst_element_class_add_pad_template (element_class, - GST_PAD_TEMPLATE_GET (sink_template_factory)); + gst_static_pad_template_get (&sink_template)); gst_element_class_add_pad_template (element_class, - GST_PAD_TEMPLATE_GET (src_template_factory)); + gst_static_pad_template_get (&src_template)); gst_element_class_set_details (element_class, &gst_fameenc_details); } @@ -318,25 +298,24 @@ gst_fameenc_class_init (GstFameEncClass *klass) } static GstPadLinkReturn -gst_fameenc_sinkconnect (GstPad *pad, GstCaps *caps) +gst_fameenc_sink_link (GstPad *pad, const GstCaps2 *caps) { gint width, height, fps_idx; - gfloat fps; + gdouble fps; GstFameEnc *fameenc; + GstStructure *structure; fameenc = GST_FAMEENC (gst_pad_get_parent (pad)); - if (!GST_CAPS_IS_FIXED (caps)) - return GST_PAD_LINK_DELAYED; - if (fameenc->initialized) { GST_DEBUG ("error: fameenc encoder already initialized !"); return GST_PAD_LINK_REFUSED; } - gst_caps_get_int (caps, "width", &width); - gst_caps_get_int (caps, "height", &height); - gst_caps_get_float (caps, "framerate", &fps); + structure = gst_caps2_get_nth_cap (caps, 0); + gst_structure_get_int (structure, "width", &width); + gst_structure_get_int (structure, "height", &height); + gst_structure_get_double (structure, "framerate", &fps); /* fameenc requires width and height to be multiples of 16 */ if (width % 16 != 0 || height % 16 != 0) @@ -380,13 +359,13 @@ gst_fameenc_init (GstFameEnc *fameenc) /* create the sink and src pads */ fameenc->sinkpad = gst_pad_new_from_template ( - GST_PAD_TEMPLATE_GET (sink_template_factory), "sink"); + gst_static_pad_template_get (&sink_template), "sink"); gst_element_add_pad (GST_ELEMENT (fameenc), fameenc->sinkpad); gst_pad_set_chain_function (fameenc->sinkpad, gst_fameenc_chain); - gst_pad_set_link_function (fameenc->sinkpad, gst_fameenc_sinkconnect); + gst_pad_set_link_function (fameenc->sinkpad, gst_fameenc_sink_link); fameenc->srcpad = gst_pad_new_from_template ( - GST_PAD_TEMPLATE_GET (src_template_factory), "src"); + gst_static_pad_template_get (&src_template), "src"); gst_element_add_pad (GST_ELEMENT (fameenc), fameenc->srcpad); /* FIXME: set some more handler functions here */ |