avwait: Fix sending of dropping=true messages
authorVivia Nikolaidou <vivia@ahiru.eu>
Thu, 4 Oct 2018 09:07:31 +0000 (12:07 +0300)
committerVivia Nikolaidou <vivia@ahiru.eu>
Thu, 4 Oct 2018 09:40:45 +0000 (12:40 +0300)
If the first audio buffer to be dropped started right between two video
buffers (after the end of the first but before the start of the second,
as is often the case with N/1001 video frame rates), we would miss
sending the dropping=true message.

https://bugzilla.gnome.org/show_bug.cgi?id=797248

gst/timecode/gstavwait.c

index ba02aa7..4ab5a4d 100644 (file)
@@ -1074,6 +1074,12 @@ gst_avwait_asink_chain (GstPad * pad, GstObject * parent, GstBuffer * inbuf)
         esign, GST_TIME_ARGS (running_time_at_end));
     gst_buffer_unref (inbuf);
     inbuf = NULL;
+    if (current_running_time >= self->audio_running_time_to_end_at &&
+        (self->must_send_end_message & END_MESSAGE_STREAM_ENDED) &&
+        !(self->must_send_end_message & END_MESSAGE_AUDIO_PUSHED)) {
+      send_element_message = TRUE;
+    }
+
   } else if (gst_avwait_compare_guint64_with_signs (esign, running_time_at_end,
           1, self->audio_running_time_to_wait_for) >= 0
       && gst_avwait_compare_guint64_with_signs (esign, running_time_at_end, 1,