diff options
| author | Thomas Vander Stichele <thomas (at) apestaart (dot) org> | 2009-03-02 09:43:30 +0100 |
|---|---|---|
| committer | Thomas Vander Stichele <thomas (at) apestaart (dot) org> | 2009-03-02 09:43:30 +0100 |
| commit | 9f25f96155b246663a1f900624ccda4b9eafcded (patch) | |
| tree | 029a4a4e8e96dc27e5f3ba38615bcfe9bee64455 /ext/jpeg | |
| parent | 13221762d09f8faacfbd682e68500ff22e6eb8ab (diff) | |
| parent | 0083b9e40569db889500a3c1abd7ec3ac8876fee (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.c | 18 | ||||
| -rw-r--r-- | ext/jpeg/gstjpegenc.h | 1 |
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]; |
