Commit f02f6199 authored by Jean-Paul Saman's avatar Jean-Paul Saman

stream_filter/httplive.c: debugging for live streams

Add extensive debugging information for detecting issues in HLS live streams.
parent b73c6998
...@@ -530,6 +530,7 @@ static void parse_MediaSequence(stream_t *s, hls_stream_t *hls, char *p_read) ...@@ -530,6 +530,7 @@ static void parse_MediaSequence(stream_t *s, hls_stream_t *hls, char *p_read)
if (hls->sequence > 0) if (hls->sequence > 0)
msg_Err(s, "EXT-X-MEDIA-SEQUENCE already present in playlist"); msg_Err(s, "EXT-X-MEDIA-SEQUENCE already present in playlist");
msg_Info(s, "#EXT-X-MEDIA-SEQUENCE:%d", sequence);
hls->sequence = sequence; hls->sequence = sequence;
} }
...@@ -982,7 +983,7 @@ static int parse_HTTPLiveStreaming(stream_t *s) ...@@ -982,7 +983,7 @@ static int parse_HTTPLiveStreaming(stream_t *s)
} }
/* Reload playlist */ /* Reload playlist */
static int hls_UpdatePlaylist(hls_stream_t *hls_new, hls_stream_t **hls) static int hls_UpdatePlaylist(stream_t *s, hls_stream_t *hls_new, hls_stream_t **hls)
{ {
int count = vlc_array_count(hls_new->segments); int count = vlc_array_count(hls_new->segments);
...@@ -1001,7 +1002,13 @@ static int hls_UpdatePlaylist(hls_stream_t *hls_new, hls_stream_t **hls) ...@@ -1001,7 +1002,13 @@ static int hls_UpdatePlaylist(hls_stream_t *hls_new, hls_stream_t **hls)
if ((p->sequence != segment->sequence) || if ((p->sequence != segment->sequence) ||
(p->duration != segment->duration) || (p->duration != segment->duration) ||
(strcmp(p->url.psz_path, segment->url.psz_path) != 0)) (strcmp(p->url.psz_path, segment->url.psz_path) != 0))
goto fail_and_unlock; {
msg_Err(s, "existing segment %d found with different content",
p->sequence);
msg_Err(s, "- sequence: new=%d, old=%d", p->sequence, segment->sequence);
msg_Err(s, "- duration: new=%d, old=%d", p->duration, segment->duration);
msg_Err(s, "- file: new=%s, old=%s", p->url.psz_path, segment->url.psz_path);
}
} }
else else
{ {
...@@ -1009,6 +1016,8 @@ static int hls_UpdatePlaylist(hls_stream_t *hls_new, hls_stream_t **hls) ...@@ -1009,6 +1016,8 @@ static int hls_UpdatePlaylist(hls_stream_t *hls_new, hls_stream_t **hls)
segment_t *l = segment_GetSegment(*hls, last); segment_t *l = segment_GetSegment(*hls, last);
if (l == NULL) goto fail_and_unlock; if (l == NULL) goto fail_and_unlock;
msg_Info(s, "adding segment %d after %d",
p->sequence, l->sequence);
if ((l->sequence + 1) == p->sequence) if ((l->sequence + 1) == p->sequence)
{ {
vlc_array_append((*hls)->segments, p); vlc_array_append((*hls)->segments, p);
...@@ -1038,6 +1047,7 @@ static int hls_ReloadPlaylist(stream_t *s) ...@@ -1038,6 +1047,7 @@ static int hls_ReloadPlaylist(stream_t *s)
if (hls_streams == NULL) if (hls_streams == NULL)
return VLC_ENOMEM; return VLC_ENOMEM;
msg_Info(s, "Reloading HLS live meta playlist");
if (get_HTTPLiveMetaPlaylist(s, &hls_streams) != VLC_SUCCESS) if (get_HTTPLiveMetaPlaylist(s, &hls_streams) != VLC_SUCCESS)
goto fail; goto fail;
...@@ -1051,7 +1061,7 @@ static int hls_ReloadPlaylist(stream_t *s) ...@@ -1051,7 +1061,7 @@ static int hls_ReloadPlaylist(stream_t *s)
hls_stream_t *hls = hls_Get(hls_streams, n); hls_stream_t *hls = hls_Get(hls_streams, n);
if (hls == NULL) goto fail; if (hls == NULL) goto fail;
msg_Dbg(s, "parsing %s", hls->url.psz_path); msg_Info(s, "parsing %s", hls->url.psz_path);
if (get_HTTPLivePlaylist(s, hls) != VLC_SUCCESS) if (get_HTTPLivePlaylist(s, hls) != VLC_SUCCESS)
{ {
msg_Err(s, "could not parse playlist file from meta index." ); msg_Err(s, "could not parse playlist file from meta index." );
...@@ -1061,6 +1071,7 @@ static int hls_ReloadPlaylist(stream_t *s) ...@@ -1061,6 +1071,7 @@ static int hls_ReloadPlaylist(stream_t *s)
} }
/* merge playlists */ /* merge playlists */
msg_Info(s, "Merging playlist");
for (int n = 0; n < count; n++) for (int n = 0; n < count; n++)
{ {
hls_stream_t *hls_new = hls_Get(hls_streams, n); hls_stream_t *hls_new = hls_Get(hls_streams, n);
...@@ -1070,8 +1081,10 @@ static int hls_ReloadPlaylist(stream_t *s) ...@@ -1070,8 +1081,10 @@ static int hls_ReloadPlaylist(stream_t *s)
if (hls_old == NULL) if (hls_old == NULL)
{ /* new hls stream - append */ { /* new hls stream - append */
vlc_array_append(p_sys->hls_stream, hls_new); vlc_array_append(p_sys->hls_stream, hls_new);
msg_Info(s, "New HLS stream appended (id=%d, bandwidth=%"PRIu64")",
hls_new->id, hls_new->bandwidth);
} }
else if (hls_UpdatePlaylist(hls_new, &hls_old) != VLC_SUCCESS) else if (hls_UpdatePlaylist(s, hls_new, &hls_old) != VLC_SUCCESS)
goto fail; goto fail;
} }
...@@ -1079,6 +1092,7 @@ static int hls_ReloadPlaylist(stream_t *s) ...@@ -1079,6 +1092,7 @@ static int hls_ReloadPlaylist(stream_t *s)
return VLC_SUCCESS; return VLC_SUCCESS;
fail: fail:
msg_Err(s, "reloading playlist failed");
vlc_array_destroy(hls_streams); vlc_array_destroy(hls_streams);
return VLC_EGENERIC; return VLC_EGENERIC;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment