flvmux: Don't wake up the muxer unless there is data
authorOlivier Crête <olivier.crete@collabora.com>
Mon, 23 Apr 2018 15:26:12 +0000 (11:26 -0400)
committerOlivier Crête <olivier.crete@collabora.com>
Thu, 26 Apr 2018 19:41:54 +0000 (15:41 -0400)
https://bugzilla.gnome.org/show_bug.cgi?id=795332

gst/flv/gstflvmux.c

index b241bcd..516d45c 100644 (file)
@@ -1819,12 +1819,18 @@ static GstClockTime
 gst_flv_mux_get_next_time (GstAggregator * aggregator)
 {
   GstFlvMux *mux = GST_FLV_MUX (aggregator);
+  GstAggregatorPad *agg_audio_pad = GST_AGGREGATOR_PAD_CAST (mux->audio_pad);
+  GstAggregatorPad *agg_video_pad = GST_AGGREGATOR_PAD_CAST (mux->video_pad);
 
   GST_OBJECT_LOCK (aggregator);
   if (mux->state == GST_FLV_MUX_STATE_HEADER &&
       ((mux->audio_pad && mux->audio_pad->codec == G_MAXUINT) ||
           (mux->video_pad && mux->video_pad->codec == G_MAXUINT)))
     goto wait_for_data;
+
+  if (!((agg_audio_pad && gst_aggregator_pad_has_buffer (agg_audio_pad)) ||
+          (agg_video_pad && gst_aggregator_pad_has_buffer (agg_video_pad))))
+    goto wait_for_data;
   GST_OBJECT_UNLOCK (aggregator);
 
   return gst_flv_mux_get_next_time_for_segment (aggregator,