summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2015-06-13 11:40:14 +0200
committerSebastian Dröge <sebastian@centricular.com>2015-06-13 11:41:33 +0200
commite3aaff400a98e7fd9d8f3040c0def6f1d9dd42a4 (patch)
treeda5c9211945716651c0556a64ed12aa72822e075 /sys
parent4796cef882569c772e497584a3472dfce6e66a70 (diff)
downloadgstreamer-plugins-bad-e3aaff400a98e7fd9d8f3040c0def6f1d9dd42a4.tar.gz
decklinkvideosink: Remove late frame-dropping workaround for basesink bug
This was fixed by https://bugzilla.gnome.org/show_bug.cgi?id=749258 in basesink, and is not necessary to duplicate here anymore.
Diffstat (limited to 'sys')
-rw-r--r--sys/decklink/gstdecklinkvideosink.cpp43
-rw-r--r--sys/decklink/gstdecklinkvideosink.h1
2 files changed, 0 insertions, 44 deletions
diff --git a/sys/decklink/gstdecklinkvideosink.cpp b/sys/decklink/gstdecklinkvideosink.cpp
index b7a132da2..9a7c6d42e 100644
--- a/sys/decklink/gstdecklinkvideosink.cpp
+++ b/sys/decklink/gstdecklinkvideosink.cpp
@@ -417,7 +417,6 @@ gst_decklink_video_sink_prepare (GstBaseSink * bsink, GstBuffer * buffer)
GstClockTime timestamp, duration;
GstClockTime running_time, running_time_duration;
gint i;
- GstClock *clock;
GST_DEBUG_OBJECT (self, "Preparing buffer %p", buffer);
@@ -440,47 +439,6 @@ gst_decklink_video_sink_prepare (GstBaseSink * bsink, GstBuffer * buffer)
gst_segment_to_running_time (&GST_BASE_SINK_CAST (self)->segment,
GST_FORMAT_TIME, timestamp + duration) - running_time;
- // FIXME: https://bugzilla.gnome.org/show_bug.cgi?id=742916
- // We need to drop late buffers here immediately instead of
- // potentially overflowing the internal queue of the hardware
- clock = gst_element_get_clock (GST_ELEMENT_CAST (self));
- if (clock) {
- GstClockTime clock_running_time, base_time, clock_time, latency,
- max_lateness;
-
- base_time = gst_element_get_base_time (GST_ELEMENT_CAST (self));
- clock_time = gst_clock_get_time (clock);
- if (base_time != GST_CLOCK_TIME_NONE && clock_time != GST_CLOCK_TIME_NONE) {
- clock_running_time = clock_time - base_time;
- latency = gst_base_sink_get_latency (GST_BASE_SINK_CAST (self));
- max_lateness = gst_base_sink_get_max_lateness (GST_BASE_SINK_CAST (self));
-
- if (clock_running_time >
- running_time + running_time_duration + latency + max_lateness) {
- GST_DEBUG_OBJECT (self,
- "Late buffer: %" GST_TIME_FORMAT " > %" GST_TIME_FORMAT,
- GST_TIME_ARGS (clock_running_time),
- GST_TIME_ARGS (running_time + running_time_duration));
-
- if (self->last_render_time == GST_CLOCK_TIME_NONE
- || (self->last_render_time < clock_running_time
- && clock_running_time - self->last_render_time >= GST_SECOND)) {
- GST_DEBUG_OBJECT (self,
- "Rendering frame nonetheless because we had none for more than 1s");
- running_time = clock_running_time;
- running_time_duration = 0;
- } else {
- GST_WARNING_OBJECT (self, "Dropping frame");
- gst_object_unref (clock);
- return GST_FLOW_OK;
- }
- }
- }
-
- gst_object_unref (clock);
- }
- self->last_render_time = running_time;
-
ret = self->output->output->CreateVideoFrame (self->info.width,
self->info.height, self->info.stride[0], bmdFormat8BitYUV,
bmdFrameFlagDefault, &frame);
@@ -691,7 +649,6 @@ gst_decklink_video_sink_change_state (GstElement * element,
gst_element_post_message (element,
gst_message_new_clock_provide (GST_OBJECT_CAST (element),
self->output->clock, TRUE));
- self->last_render_time = GST_CLOCK_TIME_NONE;
break;
case GST_STATE_CHANGE_PAUSED_TO_PLAYING:{
GstClock *clock, *audio_clock;
diff --git a/sys/decklink/gstdecklinkvideosink.h b/sys/decklink/gstdecklinkvideosink.h
index 04d5c972e..16b2fbb3f 100644
--- a/sys/decklink/gstdecklinkvideosink.h
+++ b/sys/decklink/gstdecklinkvideosink.h
@@ -56,7 +56,6 @@ struct _GstDecklinkVideoSink
GstClockTime internal_base_time;
GstClockTime external_base_time;
- GstClockTime last_render_time;
GstDecklinkOutput *output;
};