| 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 |
| |