mod flush flow
Change-Id: I7806a8668181abfbc78651406df6adea0e952c03
diff --git a/src/gstamlvideosink.c b/src/gstamlvideosink.c
index 52d8b67..8ee8668 100644
--- a/src/gstamlvideosink.c
+++ b/src/gstamlvideosink.c
@@ -588,7 +588,10 @@
RenderBuffer *tunnel_lib_buf_wrap = NULL;
GST_OBJECT_LOCK(vsink);
- GST_LOG_OBJECT(sink, "revice buffer:%p, from pool:%p, need_preroll:%d", buffer, buffer->pool, ((GstBaseSink *)sink)->need_preroll);
+
+ GST_LOG_OBJECT(sink, "revice buffer:%p (start: %" GST_TIME_FORMAT", end: %" GST_TIME_FORMAT"), from pool:%p, need_preroll:%d",
+ buffer, GST_TIME_ARGS (GST_BUFFER_PTS(buffer)), GST_TIME_ARGS (GST_BUFFER_DURATION(buffer)),
+ buffer->pool, ((GstBaseSink *)sink)->need_preroll);
if (!sink_priv->render_device_handle)
{
@@ -612,13 +615,16 @@
if (sink_priv->is_flushing)
{
gst_buffer_unref(buffer);
- if (!render_flush(sink_priv->render_device_handle))
+ if (render_flush(sink_priv->render_device_handle) == 0)
+ {
+ GST_DEBUG_OBJECT(sink, "in flushing flow, release the buffer directly");
+ goto flushing;
+ }
+ else
{
GST_ERROR_OBJECT(sink, "render lib: flush error");
goto error;
}
- GST_DEBUG_OBJECT(sink, "in flushing flow, release the buffer directly");
- goto flushing;
}
if(sink_priv->window_set.window_change)
@@ -691,6 +697,7 @@
GST_INFO_OBJECT(sink, "flush start");
GST_OBJECT_LOCK(sink);
sink_priv->is_flushing = TRUE;
+ render_flush(sink_priv->render_device_handle);
GST_OBJECT_UNLOCK(sink);
break;
}