mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-30 12:49:40 +00:00
decklinkaudiosrc: Don't accept packets without timestamps after a discont
We have no idea which timestamps they are supposed to have so the only thing we can do at this point is to drop them. Packets without timestamps happen if audio was captured but no corresponding video, which shouldn't happen under normal circumstances. https://bugzilla.gnome.org/show_bug.cgi?id=747633
This commit is contained in:
parent
0004920c83
commit
f06647fd0c
1 changed files with 10 additions and 1 deletions
|
@ -411,7 +411,8 @@ 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, gboolean discont)
|
||||
IDeckLinkAudioInputPacket * packet, GstClockTime capture_time,
|
||||
gboolean discont)
|
||||
{
|
||||
GstDecklinkAudioSrc *self = GST_DECKLINK_AUDIO_SRC_CAST (element);
|
||||
GstDecklinkVideoSrc *videosrc = NULL;
|
||||
|
@ -470,6 +471,7 @@ gst_decklink_audio_src_create (GstPushSrc * bsrc, GstBuffer ** buffer)
|
|||
guint64 start_offset, end_offset;
|
||||
gboolean discont = FALSE;
|
||||
|
||||
retry:
|
||||
g_mutex_lock (&self->lock);
|
||||
while (g_queue_is_empty (&self->current_packets) && !self->flushing) {
|
||||
g_cond_wait (&self->cond, &self->lock);
|
||||
|
@ -489,6 +491,13 @@ gst_decklink_audio_src_create (GstPushSrc * bsrc, GstBuffer ** buffer)
|
|||
sample_count = p->packet->GetSampleFrameCount ();
|
||||
data_size = self->info.bpf * sample_count;
|
||||
|
||||
if (p->capture_time == GST_CLOCK_TIME_NONE && self->next_offset == (guint64) - 1) {
|
||||
GST_DEBUG_OBJECT (self, "Got packet without timestamp before initial "
|
||||
"timestamp after discont - dropping");
|
||||
capture_packet_free (p);
|
||||
goto retry;
|
||||
}
|
||||
|
||||
ap = (AudioPacket *) g_malloc0 (sizeof (AudioPacket));
|
||||
|
||||
*buffer =
|
||||
|
|
Loading…
Reference in a new issue