From da1e4e391894917577c87deabc514a4d34b52d2d Mon Sep 17 00:00:00 2001 From: Wind Yuan Date: Sun, 26 Aug 2012 22:29:04 -0400 Subject: [PATCH] vaapidecode: flush buffers when receiving EOS. Signed-off-by: Gwenole Beauchesne --- gst/vaapi/gstvaapidecode.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/gst/vaapi/gstvaapidecode.c b/gst/vaapi/gstvaapidecode.c index 100ca52..cd11f36 100644 --- a/gst/vaapi/gstvaapidecode.c +++ b/gst/vaapi/gstvaapidecode.c @@ -407,6 +407,18 @@ gst_vaapidecode_reset(GstVaapiDecode *decode, GstCaps *caps) return gst_vaapidecode_create(decode, caps); } +static gboolean +gst_vaapidecode_flush(GstVaapiDecode *decode) +{ + g_return_val_if_fail(decode->decoder, FALSE); + + if (!gst_vaapi_decoder_put_buffer(decode->decoder, NULL)) + return FALSE; + if (gst_vaapidecode_step(decode) != GST_FLOW_OK) + return FALSE; + return TRUE; +} + /* GstImplementsInterface interface */ static gboolean @@ -680,6 +692,11 @@ gst_vaapidecode_sink_event(GstPad *pad, GstEvent *event) return TRUE; } break; + case GST_EVENT_EOS: + if (!gst_vaapidecode_flush(decode)) { + GST_WARNING("failed to flush buffers"); + } + break; default: break; } -- 2.7.4