From 03c58f11afbce4d74b717266b678eac0f50d5a08 Mon Sep 17 00:00:00 2001 From: CastagnaIT Date: Sat, 26 Aug 2023 09:13:53 +0200 Subject: [PATCH] [HLSTree] Check for already add uri variant/rendition --- src/parser/HLSTree.cpp | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/parser/HLSTree.cpp b/src/parser/HLSTree.cpp index a6d1facc1..41eb8b5b3 100644 --- a/src/parser/HLSTree.cpp +++ b/src/parser/HLSTree.cpp @@ -16,6 +16,7 @@ #include "../utils/log.h" #include "kodi/tools/StringUtils.h" +#include #include #include @@ -959,6 +960,20 @@ bool adaptive::CHLSTree::ParseMultivariantPlaylist(const std::string& data) else continue; // Skip, other types are not supported + std::string uri = attribs["URI"]; + + if (!uri.empty()) + { + // Check if this uri has been already added + if (std::any_of(pl.m_audioRenditions.cbegin(), pl.m_audioRenditions.cend(), + [&uri](const Rendition& v) { return v.m_uri == uri; }) || + std::any_of(pl.m_subtitleRenditions.cbegin(), pl.m_subtitleRenditions.cend(), + [&uri](const Rendition& v) { return v.m_uri == uri; })) + { + continue; + } + } + Rendition rend; rend.m_type = attribs["TYPE"]; rend.m_groupId = attribs["GROUP-ID"]; @@ -973,7 +988,7 @@ bool adaptive::CHLSTree::ParseMultivariantPlaylist(const std::string& data) rend.m_isDefault = attribs["DEFAULT"] == "YES"; rend.m_isForced = attribs["FORCED"] == "YES"; rend.m_characteristics = attribs["CHARACTERISTICS"]; - rend.m_uri = attribs["URI"]; + rend.m_uri = uri; if (streamType == StreamType::AUDIO) pl.m_audioRenditions.emplace_back(rend); @@ -1003,6 +1018,13 @@ bool adaptive::CHLSTree::ParseMultivariantPlaylist(const std::string& data) continue; } + // Check if this uri has been already added + if (std::any_of(pl.m_variants.cbegin(), pl.m_variants.cend(), + [&uri](const Variant& v) { return v.m_uri == uri; })) + { + continue; + } + Variant var; var.m_bandwidth = STRING::ToUint32(attribs["BANDWIDTH"]); var.m_codecs = attribs["CODECS"];