summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Olbrich <m.olbrich@pengutronix.de>2016-10-28 10:05:20 +0200
committerSebastian Dröge <sebastian@centricular.com>2016-10-31 14:03:06 +0200
commitc2920ec3eab4fff2c6c11b9b0027f5b9b3581aa0 (patch)
tree0e98133596dc7968e3f0f4d9733ddcf00f0e547d
parentae2a5f1ba928dfb61712d073b49d4cd37b5d6aa7 (diff)
downloadgstreamer-plugins-bad-c2920ec3eab4fff2c6c11b9b0027f5b9b3581aa0.tar.gz
hlsdemux: don't try to access non-existant iframe variant
If the playlist does not contain any iframe variants then demux->master->iframe_variants is NULL. If the previous variant is an iframe variant then there is at least one iframe variant and demux->master->iframe_variants->data can be safely used. https://bugzilla.gnome.org/show_bug.cgi?id=773635
-rw-r--r--ext/hls/gsthlsdemux.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/ext/hls/gsthlsdemux.c b/ext/hls/gsthlsdemux.c
index a4eaacd69..bb91f307a 100644
--- a/ext/hls/gsthlsdemux.c
+++ b/ext/hls/gsthlsdemux.c
@@ -1574,14 +1574,16 @@ retry_failover_protection:
GST_M3U8_CLIENT_UNLOCK (demux->client);
gst_hls_demux_set_current_variant (demux, previous_variant);
/* Try a lower bitrate (or stop if we just tried the lowest) */
- lowest_variant = demux->master->variants->data;
- lowest_ivariant = demux->master->iframe_variants->data;
- if (previous_variant->iframe && new_bandwidth == lowest_ivariant->bandwidth)
- return FALSE;
- if (!previous_variant->iframe && new_bandwidth == lowest_variant->bandwidth)
- return FALSE;
- else
- return gst_hls_demux_change_playlist (demux, new_bandwidth - 1, changed);
+ if (previous_variant->iframe) {
+ lowest_ivariant = demux->master->iframe_variants->data;
+ if (new_bandwidth == lowest_ivariant->bandwidth)
+ return FALSE;
+ } else {
+ lowest_variant = demux->master->variants->data;
+ if (new_bandwidth == lowest_variant->bandwidth)
+ return FALSE;
+ }
+ return gst_hls_demux_change_playlist (demux, new_bandwidth - 1, changed);
}
return TRUE;