summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorEdward Hervey <bilboed@bilboed.com>2014-10-22 16:43:43 +0200
committerEdward Hervey <bilboed@bilboed.com>2015-02-26 07:52:05 +0100
commitc1d2254b23c1ca631c28ebe14dea2f0e1c9bc1a2 (patch)
treebab9c81a7a08ea54febd57d1e64a4a2183d3ba43 /libs
parent075def0f9771dd89503808e7d18f0569f7a76690 (diff)
baseparse: Don't emit errors on EOS if we saw GAP events
If we saw GAP events (meaning the streams is advancing) before we get EOS, we should not post an ERROR, since it is not fatal. https://bugzilla.gnome.org/show_bug.cgi?id=745143
Diffstat (limited to 'libs')
-rw-r--r--libs/gst/base/gstbaseparse.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/libs/gst/base/gstbaseparse.c b/libs/gst/base/gstbaseparse.c
index 9605e3850..3ea05e94c 100644
--- a/libs/gst/base/gstbaseparse.c
+++ b/libs/gst/base/gstbaseparse.c
@@ -262,6 +262,7 @@ struct _GstBaseParsePrivate
gboolean discont;
gboolean flushing;
gboolean drain;
+ gboolean saw_gaps;
gint64 offset;
gint64 sync_offset;
@@ -794,6 +795,7 @@ gst_base_parse_reset (GstBaseParse * parse)
parse->priv->min_frame_size = 1;
parse->priv->discont = TRUE;
parse->priv->flushing = FALSE;
+ parse->priv->saw_gaps = FALSE;
parse->priv->offset = 0;
parse->priv->sync_offset = 0;
parse->priv->update_interval = -1;
@@ -1172,14 +1174,15 @@ gst_base_parse_sink_event_default (GstBaseParse * parse, GstEvent * event)
gst_base_parse_finish_fragment (parse, TRUE);
/* If we STILL have zero frames processed, fire an error */
- if (parse->priv->framecount == 0) {
+ if (parse->priv->framecount == 0 && !parse->priv->saw_gaps) {
GST_ELEMENT_ERROR (parse, STREAM, WRONG_TYPE,
("No valid frames found before end of stream"), (NULL));
}
/* newsegment and other serialized events before eos */
gst_base_parse_push_pending_events (parse);
- if (parse->priv->framecount < MIN_FRAMES_TO_POST_BITRATE) {
+ if (!parse->priv->saw_gaps
+ && parse->priv->framecount < MIN_FRAMES_TO_POST_BITRATE) {
/* We've not posted bitrate tags yet - do so now */
gst_base_parse_post_bitrates (parse, TRUE, TRUE, TRUE);
}
@@ -1220,6 +1223,7 @@ gst_base_parse_sink_event_default (GstBaseParse * parse, GstEvent * event)
else
gst_base_parse_finish_fragment (parse, TRUE);
forward_immediate = TRUE;
+ parse->priv->saw_gaps = TRUE;
break;
}
case GST_EVENT_TAG: