tests: simple-decoder: flush decoded frames at EOS.

Flush the remaining decoded frames when an end-of-stream is reached.
This commit is contained in:
Gwenole Beauchesne 2013-01-18 10:35:44 +01:00
parent caee174e2f
commit 48b67470e3

View file

@ -233,7 +233,7 @@ decoder_thread(gpointer data)
RenderFrame *rfp; RenderFrame *rfp;
GstBuffer *buffer; GstBuffer *buffer;
GstClockTime pts; GstClockTime pts;
gboolean got_surface; gboolean got_surface, got_eos = FALSE;
gint64 end_time; gint64 end_time;
guint ofs; guint ofs;
@ -282,7 +282,11 @@ decoder_thread(gpointer data)
/* nothing to do, just continue to the next iteration */ /* nothing to do, just continue to the next iteration */
break; break;
case GST_VAAPI_DECODER_STATUS_END_OF_STREAM: case GST_VAAPI_DECODER_STATUS_END_OF_STREAM:
gst_vaapi_decoder_flush(app->decoder);
if (got_eos)
goto send_eos; goto send_eos;
got_eos = TRUE;
break;
case GST_VAAPI_DECODER_STATUS_ERROR_NO_SURFACE: case GST_VAAPI_DECODER_STATUS_ERROR_NO_SURFACE:
end_time = g_get_monotonic_time() + G_TIME_SPAN_SECOND; end_time = g_get_monotonic_time() + G_TIME_SPAN_SECOND;
g_mutex_lock(&app->mutex); g_mutex_lock(&app->mutex);