summaryrefslogtreecommitdiff
path: root/ext/faac
diff options
context:
space:
mode:
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2011-12-22 17:15:28 +0100
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2011-12-22 17:16:59 +0100
commit5bccb02a90f0a529522d9a598f794122d5afaa09 (patch)
tree06cb913e5a66d5896afe3c7f359d6ffb83140571 /ext/faac
parentf76b7c95274d9cc41b18119dde32b8a4ecfc7a12 (diff)
downloadgstreamer-plugins-bad-5bccb02a90f0a529522d9a598f794122d5afaa09.tar.gz
faac: recreate encoder after flushing
... since it appears the existing one can't be bothered anymore to produce some output.
Diffstat (limited to 'ext/faac')
-rw-r--r--ext/faac/gstfaac.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/ext/faac/gstfaac.c b/ext/faac/gstfaac.c
index 95f490912..68c1e0132 100644
--- a/ext/faac/gstfaac.c
+++ b/ext/faac/gstfaac.c
@@ -691,6 +691,13 @@ gst_faac_handle_frame (GstAudioEncoder * enc, GstBuffer * in_buf)
ret = gst_audio_encoder_finish_frame (enc, out_buf, faac->samples);
} else {
gst_buffer_unref (out_buf);
+ /* re-create encoder after final flush */
+ if (!in_buf) {
+ GST_DEBUG_OBJECT (faac, "flushed; recreating encoder");
+ gst_faac_close_encoder (faac);
+ if (!gst_faac_open_encoder (faac))
+ ret = GST_FLOW_ERROR;
+ }
}
return ret;