summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: c115a41)
raw | patch | inline | side by side (parent: c115a41)
author | Alessandro Decina <alessandro.decina@collabora.co.uk> | |
Tue, 5 Jun 2012 09:21:13 +0000 (11:21 +0200) | ||
committer | Alessandro Decina <alessandro.decina@collabora.co.uk> | |
Wed, 6 Jun 2012 09:55:10 +0000 (09:55 +0000) |
When the codec returns error 0x201, it doesn't free the output buffer, leading
to (downstream) buffer pool exhaustion. Special case this condition, partly
reverting 1c65dfe58e9c178503cae32dfcf10eb18c8e1bf2.
to (downstream) buffer pool exhaustion. Special case this condition, partly
reverting 1c65dfe58e9c178503cae32dfcf10eb18c8e1bf2.
src/gstducatih264dec.c | patch | blob | history |
diff --git a/src/gstducatih264dec.c b/src/gstducatih264dec.c
index 8231cdcc70bba22fab923a9e549d5c4106a5d55f..fa8a8c1da13ecba1c861da3adf01103a4ca4a88b 100644 (file)
--- a/src/gstducatih264dec.c
+++ b/src/gstducatih264dec.c
/* No valid slice. This seems to be bad enough that it's better to flush and
* skip to the next keyframe.
*/
+
+ if (extended_error == 0x00000201) {
+ /* the codec doesn't unlock the input buffer in this case... */
+ gst_buffer_unref ((GstBuffer *) self->inArgs->inputID);
+ self->inArgs->inputID = 0;
+ }
+
gst_ducati_viddec_codec_flush (self, FALSE);
}