diff options
-rw-r--r-- | gst/vaapi/gstvaapidecode.c | 17 |
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; } |