blob: 94e57b0c4f5c6542fc5421ec48aa9e49136ee275 [file] [log] [blame]
From bdbe225a9c826bd9ecd44af48f957c131e8ce22a Mon Sep 17 00:00:00 2001
From: Yuan Fang <yuan.fang@mediatek.com>
Date: Wed, 14 Aug 2019 15:30:04 +0800
Subject: [PATCH] upgrade-gst-to-1_14_4
---
gst/gstallocator.c | 6 ++++++
libs/gst/base/gstbaseparse.c | 5 +++++
plugins/elements/gstfakesink.c | 36 ++++++++++++++++++++++++++++++++++++
3 files changed, 47 insertions(+)
diff --git a/gst/gstallocator.c b/gst/gstallocator.c
index 4b78a33..2b7fb27 100644
--- a/gst/gstallocator.c
+++ b/gst/gstallocator.c
@@ -592,6 +592,12 @@ _priv_gst_allocator_initialize (void)
GST_CAT_DEBUG (GST_CAT_MEMORY, "memory alignment: %" G_GSIZE_FORMAT,
gst_memory_alignment);
+ if (gst_memory_alignment < 127)
+ {
+ gst_memory_alignment = 127;
+ }
+ GST_CAT_DEBUG (GST_CAT_MEMORY, "Adjusted memory alignment: %" G_GSIZE_FORMAT,gst_memory_alignment);
+
_sysmem_allocator = g_object_new (gst_allocator_sysmem_get_type (), NULL);
/* Clear floating flag */
diff --git a/libs/gst/base/gstbaseparse.c b/libs/gst/base/gstbaseparse.c
index 9a8f986..1630af1 100644
--- a/libs/gst/base/gstbaseparse.c
+++ b/libs/gst/base/gstbaseparse.c
@@ -2522,6 +2522,11 @@ gst_base_parse_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
}
}
+ if (frame->flags & GST_BASE_PARSE_FRAME_FLAG_DROP) {
+ GST_LOG_OBJECT (parse, "frame with drop flag");
+ ret = GST_BASE_PARSE_FLOW_DROPPED;
+ }
+
if (ret == GST_BASE_PARSE_FLOW_DROPPED) {
GST_LOG_OBJECT (parse, "frame (%" G_GSIZE_FORMAT " bytes) dropped", size);
if (GST_BUFFER_FLAG_IS_SET (buffer, GST_BUFFER_FLAG_DISCONT))
diff --git a/plugins/elements/gstfakesink.c b/plugins/elements/gstfakesink.c
index b71f20f..d8fa7d6 100644
--- a/plugins/elements/gstfakesink.c
+++ b/plugins/elements/gstfakesink.c
@@ -37,6 +37,11 @@
# include "config.h"
#endif
+#define DEBUG_SINK_PERFORMANCE
+#ifdef DEBUG_SINK_PERFORMANCE
+#include <sys/time.h>
+#endif
+
#include "gstelements_private.h"
#include "gstfakesink.h"
#include <string.h>
@@ -435,6 +440,33 @@ eos:
}
}
+#ifdef DEBUG_SINK_PERFORMANCE
+static void
+gst_fake_sink_debug_performance(GstFakeSink * sink)
+{
+ static gfloat costTime=0.0;
+ gfloat avgTimeOnce=0.0;
+
+ static guint count=0;
+
+ static struct timeval tpStart;
+ struct timeval tpEnd;
+
+ count++;
+ if (count == 1) {
+ gettimeofday(&tpStart,NULL);
+ }
+
+ if(count % 100 == 0) {
+ gettimeofday(&tpEnd,NULL);
+
+ costTime = 1000000*(tpEnd.tv_sec-tpStart.tv_sec)+(tpEnd.tv_usec-tpStart.tv_usec);
+ avgTimeOnce = costTime/count; //us
+ GST_INFO_OBJECT (sink, "FPS info: total %d frames,costTime=%fus,avg=%fms,fps=%f",count,costTime,avgTimeOnce/1000,1*1000/(avgTimeOnce/1000));
+ }
+}
+#endif
+
static GstFlowReturn
gst_fake_sink_render (GstBaseSink * bsink, GstBuffer * buf)
{
@@ -443,6 +475,10 @@ gst_fake_sink_render (GstBaseSink * bsink, GstBuffer * buf)
if (sink->num_buffers_left == 0)
goto eos;
+#ifdef DEBUG_SINK_PERFORMANCE
+ gst_fake_sink_debug_performance (sink);
+#endif
+
if (sink->num_buffers_left != -1)
sink->num_buffers_left--;
--
1.9.1