summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gst/vaapi/gstvaapidecode.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/gst/vaapi/gstvaapidecode.c b/gst/vaapi/gstvaapidecode.c
index d6bd0971..4d081357 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;
}