summaryrefslogtreecommitdiffstats
path: root/ext/jpeg
diff options
context:
space:
mode:
authorThomas Vander Stichele <thomas (at) apestaart (dot) org>2009-03-02 09:43:30 +0100
committerThomas Vander Stichele <thomas (at) apestaart (dot) org>2009-03-02 09:43:30 +0100
commit9f25f96155b246663a1f900624ccda4b9eafcded (patch)
tree029a4a4e8e96dc27e5f3ba38615bcfe9bee64455 /ext/jpeg
parent13221762d09f8faacfbd682e68500ff22e6eb8ab (diff)
parent0083b9e40569db889500a3c1abd7ec3ac8876fee (diff)
Merge branch 'master' of ssh://thomasvs@git.freedesktop.org/git/gstreamer/gst-plugins-good
Diffstat (limited to 'ext/jpeg')
-rw-r--r--ext/jpeg/gstjpegenc.c18
-rw-r--r--ext/jpeg/gstjpegenc.h1
2 files changed, 14 insertions, 5 deletions
diff --git a/ext/jpeg/gstjpegenc.c b/ext/jpeg/gstjpegenc.c
index 908c7e00..5edb11f1 100644
--- a/ext/jpeg/gstjpegenc.c
+++ b/ext/jpeg/gstjpegenc.c
@@ -339,9 +339,8 @@ gst_jpegenc_setcaps (GstPad * pad, GstCaps * caps)
ret = gst_pad_set_caps (jpegenc->srcpad, othercaps);
gst_caps_unref (othercaps);
- if (GST_PAD_LINK_SUCCESSFUL (ret)) {
+ if (ret)
gst_jpegenc_resync (jpegenc);
- }
gst_object_unref (jpegenc);
@@ -411,7 +410,6 @@ gst_jpegenc_resync (GstJpegEnc * jpegenc)
jpeg_suppress_tables (&jpegenc->cinfo, TRUE);
//jpeg_suppress_tables(&jpegenc->cinfo, FALSE);
- jpegenc->buffer = NULL;
GST_DEBUG_OBJECT (jpegenc, "resync done");
}
@@ -429,6 +427,9 @@ gst_jpegenc_chain (GstPad * pad, GstBuffer * buf)
jpegenc = GST_JPEGENC (GST_OBJECT_PARENT (pad));
+ if (G_UNLIKELY (jpegenc->width <= 0 || jpegenc->height <= 0))
+ goto not_negotiated;
+
data = GST_BUFFER_DATA (buf);
size = GST_BUFFER_SIZE (buf);
@@ -497,6 +498,14 @@ done:
gst_buffer_unref (buf);
return ret;
+
+/* ERRORS */
+not_negotiated:
+ {
+ GST_WARNING_OBJECT (jpegenc, "no input format set (no caps on buffer)");
+ ret = GST_FLOW_NOT_NEGOTIATED;
+ goto done;
+ }
}
static void
@@ -557,7 +566,6 @@ gst_jpegenc_change_state (GstElement * element, GstStateChange transition)
filter->line[0] = NULL;
filter->line[1] = NULL;
filter->line[2] = NULL;
- gst_jpegenc_resync (filter);
break;
default:
break;
@@ -575,6 +583,8 @@ gst_jpegenc_change_state (GstElement * element, GstStateChange transition)
filter->line[0] = NULL;
filter->line[1] = NULL;
filter->line[2] = NULL;
+ filter->width = -1;
+ filter->height = -1;
break;
default:
break;
diff --git a/ext/jpeg/gstjpegenc.h b/ext/jpeg/gstjpegenc.h
index 719b88b0..99341569 100644
--- a/ext/jpeg/gstjpegenc.h
+++ b/ext/jpeg/gstjpegenc.h
@@ -57,7 +57,6 @@ struct _GstJpegEnc {
gint height;
/* the video buffer */
gint bufsize;
- GstBuffer *buffer;
guint row_stride;
/* the jpeg line buffer */
guchar **line[3];