diff options
Diffstat (limited to 'sys/decklink/gstdecklinkaudiosrc.cpp')
-rw-r--r-- | sys/decklink/gstdecklinkaudiosrc.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/decklink/gstdecklinkaudiosrc.cpp b/sys/decklink/gstdecklinkaudiosrc.cpp index 1171ff368..6360c2a72 100644 --- a/sys/decklink/gstdecklinkaudiosrc.cpp +++ b/sys/decklink/gstdecklinkaudiosrc.cpp @@ -57,6 +57,7 @@ typedef struct { IDeckLinkAudioInputPacket *packet; GstClockTime capture_time; + gboolean discont; } CapturePacket; static void @@ -411,7 +412,7 @@ gst_decklink_audio_src_get_caps (GstBaseSrc * bsrc, GstCaps * filter) static void gst_decklink_audio_src_got_packet (GstElement * element, - IDeckLinkAudioInputPacket * packet, GstClockTime capture_time) + IDeckLinkAudioInputPacket * packet, GstClockTime capture_time, gboolean discont) { GstDecklinkAudioSrc *self = GST_DECKLINK_AUDIO_SRC_CAST (element); GstDecklinkVideoSrc *videosrc = NULL; @@ -447,6 +448,7 @@ gst_decklink_audio_src_got_packet (GstElement * element, p = (CapturePacket *) g_malloc0 (sizeof (CapturePacket)); p->packet = packet; p->capture_time = capture_time; + p->discont = discont; packet->AddRef (); g_queue_push_tail (&self->current_packets, p); g_cond_signal (&self->cond); @@ -501,6 +503,7 @@ gst_decklink_audio_src_create (GstPushSrc * bsrc, GstBuffer ** buffer) ap->input->AddRef (); timestamp = p->capture_time; + discont = p->discont; // Jitter and discontinuity handling, based on audiobasesrc start_time = timestamp; @@ -515,7 +518,7 @@ gst_decklink_audio_src_create (GstPushSrc * bsrc, GstBuffer ** buffer) duration = end_time - start_time; - if (self->next_offset == (guint64) - 1) { + if (discont || self->next_offset == (guint64) - 1) { discont = TRUE; } else { guint64 diff, max_sample_diff; |