[vlc-commits] demux: adaptive: set lang as adaptset property only

Francois Cartegnie git at videolan.org
Mon Mar 30 16:15:28 CEST 2020


vlc/vlc-3.0 | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Tue May 14 10:33:39 2019 +0200| [64b3883753ce3aa7a4da9007d7e9390a1715b3b0] | committer: Francois Cartegnie

demux: adaptive: set lang as adaptset property only

(cherry picked from commit 823c06d10e125a798ba2f7da84cee505c27af204)

> http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commit;h=64b3883753ce3aa7a4da9007d7e9390a1715b3b0
---

 modules/demux/adaptive/PlaylistManager.cpp                 | 12 +-----------
 modules/demux/adaptive/playlist/BaseAdaptationSet.cpp      | 14 ++++++++++++++
 modules/demux/adaptive/playlist/BaseAdaptationSet.h        |  3 +++
 .../demux/adaptive/playlist/CommonAttributesElements.cpp   | 11 -----------
 modules/demux/adaptive/playlist/CommonAttributesElements.h |  4 ----
 modules/demux/dash/mpd/IsoffMainParser.cpp                 |  9 +--------
 modules/demux/hls/playlist/Parser.cpp                      |  9 +--------
 modules/demux/smooth/playlist/Parser.cpp                   |  4 ++--
 8 files changed, 22 insertions(+), 44 deletions(-)

diff --git a/modules/demux/adaptive/PlaylistManager.cpp b/modules/demux/adaptive/PlaylistManager.cpp
index c9466597c0..83257e6367 100644
--- a/modules/demux/adaptive/PlaylistManager.cpp
+++ b/modules/demux/adaptive/PlaylistManager.cpp
@@ -133,18 +133,8 @@ bool PlaylistManager::setupPeriod()
             streams.push_back(st);
 
             /* Generate stream description */
-            std::list<std::string> languages;
             if(!set->getLang().empty())
-            {
-                languages = set->getLang();
-            }
-            else if(!set->getRepresentations().empty())
-            {
-                languages = set->getRepresentations().front()->getLang();
-            }
-
-            if(!languages.empty())
-                st->setLanguage(languages.front());
+                st->setLanguage(set->getLang());
 
             if(!set->description.Get().empty())
                 st->setDescription(set->description.Get());
diff --git a/modules/demux/adaptive/playlist/BaseAdaptationSet.cpp b/modules/demux/adaptive/playlist/BaseAdaptationSet.cpp
index 89d87f6834..64e9cfbdab 100644
--- a/modules/demux/adaptive/playlist/BaseAdaptationSet.cpp
+++ b/modules/demux/adaptive/playlist/BaseAdaptationSet.cpp
@@ -89,6 +89,20 @@ void BaseAdaptationSet::addRepresentation(BaseRepresentation *rep)
     childs.push_back(rep);
 }
 
+const std::string & BaseAdaptationSet::getLang() const
+{
+    return lang;
+}
+
+void BaseAdaptationSet::setLang( const std::string &lang_ )
+{
+    std::size_t pos = lang.find_first_of('-');
+    if(pos != std::string::npos && pos > 0)
+        lang = lang_.substr(0, pos);
+    else if(lang_.size() < 4)
+        lang = lang_;
+}
+
 void BaseAdaptationSet::setSegmentAligned(bool b)
 {
     segmentAligned = b ? TRIBOOL_TRUE : TRIBOOL_FALSE;
diff --git a/modules/demux/adaptive/playlist/BaseAdaptationSet.h b/modules/demux/adaptive/playlist/BaseAdaptationSet.h
index c1688280f3..da795bac37 100644
--- a/modules/demux/adaptive/playlist/BaseAdaptationSet.h
+++ b/modules/demux/adaptive/playlist/BaseAdaptationSet.h
@@ -56,11 +56,14 @@ namespace adaptive
                 void                            setBitswitchAble(bool);
                 bool                            isBitSwitchable() const;
                 void                            addRepresentation( BaseRepresentation *rep );
+                const std::string&              getLang() const;
+                void                            setLang( const std::string &lang );
                 void                            debug(vlc_object_t *,int = 0) const;
                 Property<std::string>           description;
 
             protected:
                 std::vector<BaseRepresentation *>   representations;
+                std::string                     lang;
                 Tribool                         segmentAligned;
                 Tribool                         bitswitchAble;
         };
diff --git a/modules/demux/adaptive/playlist/CommonAttributesElements.cpp b/modules/demux/adaptive/playlist/CommonAttributesElements.cpp
index 4fbfa6e1c7..1448de8152 100644
--- a/modules/demux/adaptive/playlist/CommonAttributesElements.cpp
+++ b/modules/demux/adaptive/playlist/CommonAttributesElements.cpp
@@ -73,14 +73,3 @@ void    CommonAttributesElements::setHeight( int height )
     if ( height > 0 )
         this->height = height;
 }
-
-const std::list<std::string>& CommonAttributesElements::getLang() const
-{
-    return lang;
-}
-
-void    CommonAttributesElements::addLang( const std::string &lang )
-{
-    if ( lang.empty() == false )
-        this->lang.push_back( lang );
-}
diff --git a/modules/demux/adaptive/playlist/CommonAttributesElements.h b/modules/demux/adaptive/playlist/CommonAttributesElements.h
index 8ff1576b75..3ba41d06c4 100644
--- a/modules/demux/adaptive/playlist/CommonAttributesElements.h
+++ b/modules/demux/adaptive/playlist/CommonAttributesElements.h
@@ -24,7 +24,6 @@
 #ifndef COMMONATTRIBUTESELEMENTS_H
 #define COMMONATTRIBUTESELEMENTS_H
 
-#include <list>
 #include <string>
 
 namespace adaptive
@@ -42,14 +41,11 @@ namespace adaptive
                 void                            setWidth( int width );
                 int                             getHeight() const;
                 void                            setHeight( int height );
-                const std::list<std::string>&   getLang() const;
-                void                            addLang( const std::string &lang );
 
             protected:
                 std::string                         mimeType;
                 int                                 width;
                 int                                 height;
-                std::list<std::string>              lang;
         };
     }
 }
diff --git a/modules/demux/dash/mpd/IsoffMainParser.cpp b/modules/demux/dash/mpd/IsoffMainParser.cpp
index 4739157ae9..24d7dc092a 100644
--- a/modules/demux/dash/mpd/IsoffMainParser.cpp
+++ b/modules/demux/dash/mpd/IsoffMainParser.cpp
@@ -229,14 +229,7 @@ void    IsoffMainParser::parseAdaptationSets  (Node *periodNode, Period *period)
             adaptationSet->setMimeType((*it)->getAttributeValue("mimeType"));
 
         if((*it)->hasAttribute("lang"))
-        {
-            std::string lang = (*it)->getAttributeValue("lang");
-            std::size_t pos = lang.find_first_of('-');
-            if(pos != std::string::npos && pos > 0)
-                adaptationSet->addLang(lang.substr(0, pos));
-            else if (lang.size() < 4)
-                adaptationSet->addLang(lang);
-        }
+            adaptationSet->setLang((*it)->getAttributeValue("lang"));
 
         if((*it)->hasAttribute("bitstreamSwitching"))
             adaptationSet->setBitswitchAble((*it)->getAttributeValue("bitstreamSwitching") == "true");
diff --git a/modules/demux/hls/playlist/Parser.cpp b/modules/demux/hls/playlist/Parser.cpp
index aed2c20466..ceba18c13c 100644
--- a/modules/demux/hls/playlist/Parser.cpp
+++ b/modules/demux/hls/playlist/Parser.cpp
@@ -468,14 +468,7 @@ M3U8 * M3U8Parser::parse(vlc_object_t *p_object, stream_t *p_stream, const std::
                 }
 
                 if(pair.second->getAttributeByName("LANGUAGE"))
-                {
-                    std::string lang = pair.second->getAttributeByName("LANGUAGE")->quotedString();
-                    std::size_t pos = lang.find_first_of('-');
-                    if(pos != std::string::npos && pos > 0)
-                        altAdaptSet->addLang(lang.substr(0, pos));
-                    else if (lang.size() < 4)
-                        altAdaptSet->addLang(lang);
-                }
+                    altAdaptSet->setLang(pair.second->getAttributeByName("LANGUAGE")->quotedString());
 
                 if(!altAdaptSet->getRepresentations().empty())
                     period->addAdaptationSet(altAdaptSet);
diff --git a/modules/demux/smooth/playlist/Parser.cpp b/modules/demux/smooth/playlist/Parser.cpp
index fd14bcbd20..502afdc61c 100644
--- a/modules/demux/smooth/playlist/Parser.cpp
+++ b/modules/demux/smooth/playlist/Parser.cpp
@@ -174,7 +174,7 @@ static void ParseQualityLevel(BaseAdaptationSet *adaptSet, Node *qualNode, const
                 initSegment->setTrackID(trackid);
 
                 if(!adaptSet->getLang().empty())
-                    initSegment->setLanguage(adaptSet->getLang().front());
+                    initSegment->setLanguage(adaptSet->getLang());
 
                 if(rep->getWidth() > 0 && rep->getHeight() > 0)
                     initSegment->setVideoSize(rep->getWidth(), rep->getHeight());
@@ -220,7 +220,7 @@ static void ParseStreamIndex(BasePeriod *period, Node *streamIndexNode, unsigned
     {
         adaptSet->setID(ID(id));
         if(streamIndexNode->hasAttribute("Language"))
-            adaptSet->addLang(streamIndexNode->getAttributeValue("Language"));
+            adaptSet->setLang(streamIndexNode->getAttributeValue("Language"));
 
         if(streamIndexNode->hasAttribute("Name"))
             adaptSet->description.Set(streamIndexNode->getAttributeValue("Name"));



More information about the vlc-commits mailing list