summaryrefslogtreecommitdiffstats
path: root/ext/jpeg/gstjpegdec.c
diff options
context:
space:
mode:
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>2003-07-06 20:49:52 +0000
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>2003-07-06 20:49:52 +0000
commit292fec2a0bd1f221a46ad69c5100995d04c01057 (patch)
tree658db299e0e03b2454ff840730569d79539e67c4 /ext/jpeg/gstjpegdec.c
parenta8183e9a3fa87cf4247c7df16207f440ea4069c0 (diff)
New mimetypes gone into effect today - this commit changes all old mimetypes over to the new mimetypes spec as descri...
Original commit message from CVS: New mimetypes gone into effect today - this commit changes all old mimetypes over to the new mimetypes spec as described in the previous commit's document. Note: some plugins will break, some pipelines will break, expect HEAD to be broken or at least not 100% working for a few days, but don't forget to report bugs
Diffstat (limited to 'ext/jpeg/gstjpegdec.c')
-rw-r--r--ext/jpeg/gstjpegdec.c38
1 files changed, 34 insertions, 4 deletions
diff --git a/ext/jpeg/gstjpegdec.c b/ext/jpeg/gstjpegdec.c
index 0e499043..a8ee30cd 100644
--- a/ext/jpeg/gstjpegdec.c
+++ b/ext/jpeg/gstjpegdec.c
@@ -54,6 +54,8 @@ static void gst_jpegdec_class_init (GstJpegDec *klass);
static void gst_jpegdec_init (GstJpegDec *jpegdec);
static void gst_jpegdec_chain (GstPad *pad, GstBuffer *buf);
+static GstPadLinkReturn
+ gst_jpegdec_link (GstPad *pad, GstCaps *caps);
static GstElementClass *parent_class = NULL;
/*static guint gst_jpegdec_signals[LAST_SIGNAL] = { 0 }; */
@@ -127,6 +129,7 @@ gst_jpegdec_init (GstJpegDec *jpegdec)
jpegdec->sinkpad = gst_pad_new_from_template (jpegdec_sink_template, "sink");
gst_element_add_pad(GST_ELEMENT(jpegdec),jpegdec->sinkpad);
gst_pad_set_chain_function(jpegdec->sinkpad,gst_jpegdec_chain);
+ gst_pad_set_link_function(jpegdec->sinkpad, gst_jpegdec_link);
jpegdec->srcpad = gst_pad_new_from_template (jpegdec_src_template, "src");
gst_element_add_pad(GST_ELEMENT(jpegdec),jpegdec->srcpad);
@@ -157,6 +160,31 @@ gst_jpegdec_init (GstJpegDec *jpegdec)
}
+static GstPadLinkReturn
+gst_jpegdec_link (GstPad *pad, GstCaps *caps)
+{
+ GstJpegDec *jpegdec = GST_JPEGDEC (gst_pad_get_parent (pad));
+
+ if (!GST_CAPS_IS_FIXED (caps))
+ return GST_PAD_LINK_DELAYED;
+
+ gst_caps_get (caps,
+ "framerate", &jpegdec->fps,
+ "width", &jpegdec->width,
+ "height", &jpegdec->height,
+ NULL);
+
+ caps = GST_CAPS_NEW ("jpegdec_srccaps",
+ "video/x-raw-yuv",
+ "format", GST_PROPS_FOURCC (
+ GST_MAKE_FOURCC ('I','4','2','0')),
+ "width", GST_PROPS_INT (jpegdec->width),
+ "height", GST_PROPS_INT (jpegdec->height),
+ "framerate", GST_PROPS_FLOAT (jpegdec->fps));
+
+ return gst_pad_try_set_caps (jpegdec->srcpad, caps);
+}
+
/* shamelessly ripped from jpegutils.c in mjpegtools */
static void add_huff_table (j_decompress_ptr dinfo,
JHUFF_TBL **htblptr,
@@ -345,10 +373,12 @@ gst_jpegdec_chain (GstPad *pad, GstBuffer *buf)
gst_pad_try_set_caps (jpegdec->srcpad,
GST_CAPS_NEW (
"jpegdec_caps",
- "video/raw",
- "format", GST_PROPS_FOURCC (GST_MAKE_FOURCC ('I','4','2','0')),
- "width", GST_PROPS_INT (width),
- "height", GST_PROPS_INT (height)
+ "video/x-raw-yuv",
+ "format", GST_PROPS_FOURCC (
+ GST_MAKE_FOURCC ('I','4','2','0')),
+ "width", GST_PROPS_INT (width),
+ "height", GST_PROPS_INT (height),
+ "framerate", GST_PROPS_FLOAT (jpegdec->fps)
));
}