mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 06:54:49 +00:00
jpegenc: check _alloc_buffer result and perform fallback alloc if needed
... rather than carrying on with NULL buffer.
This commit is contained in:
parent
9ae5ddd8f9
commit
ad11ec4121
1 changed files with 9 additions and 1 deletions
|
@ -210,15 +210,23 @@ gst_jpegenc_flush_destination (j_compress_ptr cinfo)
|
||||||
GstBuffer *overflow_buffer;
|
GstBuffer *overflow_buffer;
|
||||||
guint32 old_buffer_size;
|
guint32 old_buffer_size;
|
||||||
GstJpegEnc *jpegenc = (GstJpegEnc *) (cinfo->client_data);
|
GstJpegEnc *jpegenc = (GstJpegEnc *) (cinfo->client_data);
|
||||||
|
GstFlowReturn ret;
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (jpegenc,
|
GST_DEBUG_OBJECT (jpegenc,
|
||||||
"gst_jpegenc_chain: flush_destination: buffer too small");
|
"gst_jpegenc_chain: flush_destination: buffer too small");
|
||||||
|
|
||||||
/* Our output buffer wasn't big enough.
|
/* Our output buffer wasn't big enough.
|
||||||
* Make a new buffer that's twice the size, */
|
* Make a new buffer that's twice the size, */
|
||||||
old_buffer_size = GST_BUFFER_SIZE (jpegenc->output_buffer);
|
old_buffer_size = GST_BUFFER_SIZE (jpegenc->output_buffer);
|
||||||
gst_pad_alloc_buffer_and_set_caps (jpegenc->srcpad,
|
ret = gst_pad_alloc_buffer_and_set_caps (jpegenc->srcpad,
|
||||||
GST_BUFFER_OFFSET_NONE, old_buffer_size * 2,
|
GST_BUFFER_OFFSET_NONE, old_buffer_size * 2,
|
||||||
GST_PAD_CAPS (jpegenc->srcpad), &overflow_buffer);
|
GST_PAD_CAPS (jpegenc->srcpad), &overflow_buffer);
|
||||||
|
/* handle here if needed */
|
||||||
|
if (ret != GST_FLOW_OK) {
|
||||||
|
overflow_buffer = gst_buffer_new_and_alloc (old_buffer_size * 2);
|
||||||
|
gst_buffer_set_caps (overflow_buffer, GST_PAD_CAPS (jpegenc->srcpad));
|
||||||
|
}
|
||||||
|
|
||||||
memcpy (GST_BUFFER_DATA (overflow_buffer),
|
memcpy (GST_BUFFER_DATA (overflow_buffer),
|
||||||
GST_BUFFER_DATA (jpegenc->output_buffer), old_buffer_size);
|
GST_BUFFER_DATA (jpegenc->output_buffer), old_buffer_size);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue