diff options
author | Michael Olbrich <m.olbrich@pengutronix.de> | 2016-10-28 10:05:20 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2016-10-31 14:03:06 +0200 |
commit | c2920ec3eab4fff2c6c11b9b0027f5b9b3581aa0 (patch) | |
tree | 0e98133596dc7968e3f0f4d9733ddcf00f0e547d /ext | |
parent | ae2a5f1ba928dfb61712d073b49d4cd37b5d6aa7 (diff) | |
download | gstreamer-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
Diffstat (limited to 'ext')
-rw-r--r-- | ext/hls/gsthlsdemux.c | 18 |
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; |