mssdemux: add a maximum error count for downloads
mssdemux will tolerate a few download errors before emitting an error message to the bus
This commit is contained in:
parent
255eb4b161
commit
bf0ea5d561
@ -84,6 +84,7 @@ GST_DEBUG_CATEGORY (mssdemux_debug);
|
|||||||
#define DEFAULT_BITRATE_LIMIT 0.8
|
#define DEFAULT_BITRATE_LIMIT 0.8
|
||||||
|
|
||||||
#define DOWNLOAD_RATE_MAX_HISTORY_LENGTH 5
|
#define DOWNLOAD_RATE_MAX_HISTORY_LENGTH 5
|
||||||
|
#define MAX_DOWNLOAD_ERROR_COUNT 3
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
@ -1223,6 +1224,8 @@ gst_mss_demux_download_loop (GstMssDemuxStream * stream)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stream->download_error_count = 0;
|
||||||
|
|
||||||
if (buffer) {
|
if (buffer) {
|
||||||
gst_mss_stream_advance_fragment (stream->manifest_stream);
|
gst_mss_stream_advance_fragment (stream->manifest_stream);
|
||||||
}
|
}
|
||||||
@ -1241,7 +1244,11 @@ eos:
|
|||||||
error:
|
error:
|
||||||
{
|
{
|
||||||
GST_WARNING_OBJECT (mssdemux, "Error while pushing fragment");
|
GST_WARNING_OBJECT (mssdemux, "Error while pushing fragment");
|
||||||
gst_task_pause (stream->download_task);
|
if (++stream->download_error_count >= DOWNLOAD_RATE_MAX_HISTORY_LENGTH) {
|
||||||
|
GST_ELEMENT_ERROR (mssdemux, RESOURCE, NOT_FOUND,
|
||||||
|
(_("Couldn't download fragments")),
|
||||||
|
("fragment downloading has failed too much consecutive times"));
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -74,6 +74,8 @@ struct _GstMssDemuxStream {
|
|||||||
gboolean have_data;
|
gboolean have_data;
|
||||||
|
|
||||||
GstDownloadRate download_rate;
|
GstDownloadRate download_rate;
|
||||||
|
|
||||||
|
guint download_error_count;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GstMssDemux {
|
struct _GstMssDemux {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user