[vlc-commits] demux: adaptive: move mime to format conversion

Francois Cartegnie git at videolan.org
Wed Feb 21 13:59:02 CET 2018


vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Wed Feb 21 10:43:06 2018 +0100| [8f0953011bb2945f42ed3878cfe646a259601685] | committer: Francois Cartegnie

demux: adaptive: move mime to format conversion

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=8f0953011bb2945f42ed3878cfe646a259601685
---

 modules/demux/adaptive/StreamFormat.cpp     | 21 +++++++++++++++++++++
 modules/demux/adaptive/StreamFormat.hpp     |  1 +
 modules/demux/adaptive/plumbing/Demuxer.cpp |  1 +
 modules/demux/dash/mpd/AdaptationSet.cpp    |  2 +-
 modules/demux/dash/mpd/MPD.cpp              | 18 ------------------
 modules/demux/dash/mpd/MPD.h                |  2 --
 modules/demux/dash/mpd/Representation.cpp   |  4 ++--
 7 files changed, 26 insertions(+), 23 deletions(-)

diff --git a/modules/demux/adaptive/StreamFormat.cpp b/modules/demux/adaptive/StreamFormat.cpp
index 27364dc7fd..11cee69dac 100644
--- a/modules/demux/adaptive/StreamFormat.cpp
+++ b/modules/demux/adaptive/StreamFormat.cpp
@@ -23,6 +23,7 @@
 #endif
 
 #include "StreamFormat.hpp"
+#include <algorithm>
 
 using namespace adaptive;
 
@@ -58,6 +59,26 @@ StreamFormat::StreamFormat( unsigned formatid_ )
     formatid = formatid_;
 }
 
+StreamFormat::StreamFormat( const std::string &mimetype )
+{
+    std::string mime = mimetype;
+    std::transform(mime.begin(), mime.end(), mime.begin(), ::tolower);
+    std::string::size_type pos = mime.find("/");
+    formatid = UNSUPPORTED;
+    if(pos != std::string::npos)
+    {
+        std::string tail = mime.substr(pos + 1);
+        if(tail == "mp4")
+            formatid = StreamFormat::MP4;
+        else if (tail == "mp2t")
+            formatid = StreamFormat::MPEG2TS;
+        else if (tail == "vtt")
+            formatid = StreamFormat::WEBVTT;
+        else if (tail == "ttml+xml")
+            formatid = StreamFormat::TTML;
+    }
+}
+
 StreamFormat::~StreamFormat()
 {
 
diff --git a/modules/demux/adaptive/StreamFormat.hpp b/modules/demux/adaptive/StreamFormat.hpp
index b4a978feab..7b3d49e1b4 100644
--- a/modules/demux/adaptive/StreamFormat.hpp
+++ b/modules/demux/adaptive/StreamFormat.hpp
@@ -37,6 +37,7 @@ namespace adaptive
             static const unsigned UNKNOWN     = 0xFF; /* will probe */
 
             StreamFormat( unsigned = UNSUPPORTED );
+            explicit StreamFormat( const std::string &mime );
             ~StreamFormat();
             operator unsigned() const;
             std::string str() const;
diff --git a/modules/demux/adaptive/plumbing/Demuxer.cpp b/modules/demux/adaptive/plumbing/Demuxer.cpp
index 5eca5df527..e05061aa37 100644
--- a/modules/demux/adaptive/plumbing/Demuxer.cpp
+++ b/modules/demux/adaptive/plumbing/Demuxer.cpp
@@ -27,6 +27,7 @@
 #include <vlc_stream.h>
 #include <vlc_demux.h>
 #include "SourceStream.hpp"
+#include "../StreamFormat.hpp"
 #include "CommandsQueue.hpp"
 #include "../ChunksSource.hpp"
 
diff --git a/modules/demux/dash/mpd/AdaptationSet.cpp b/modules/demux/dash/mpd/AdaptationSet.cpp
index c755503f53..ece9592cd8 100644
--- a/modules/demux/dash/mpd/AdaptationSet.cpp
+++ b/modules/demux/dash/mpd/AdaptationSet.cpp
@@ -46,7 +46,7 @@ AdaptationSet::~AdaptationSet()
 StreamFormat AdaptationSet::getStreamFormat() const
 {
     if(!getMimeType().empty())
-        return MPD::mimeToFormat(getMimeType());
+        return StreamFormat(getMimeType());
     else
         return BaseAdaptationSet::getStreamFormat();
 }
diff --git a/modules/demux/dash/mpd/MPD.cpp b/modules/demux/dash/mpd/MPD.cpp
index 16ec834905..accd752138 100644
--- a/modules/demux/dash/mpd/MPD.cpp
+++ b/modules/demux/dash/mpd/MPD.cpp
@@ -65,24 +65,6 @@ Profile MPD::getProfile() const
     return profile;
 }
 
-StreamFormat MPD::mimeToFormat(const std::string &mime)
-{
-    std::string::size_type pos = mime.find("/");
-    if(pos != std::string::npos)
-    {
-        std::string tail = mime.substr(pos + 1);
-        if(tail == "mp4")
-            return StreamFormat(StreamFormat::MP4);
-        else if (tail == "mp2t")
-            return StreamFormat(StreamFormat::MPEG2TS);
-        else if (tail == "vtt")
-            return StreamFormat(StreamFormat::WEBVTT);
-        else if (tail == "ttml+xml")
-            return StreamFormat(StreamFormat::TTML);
-    }
-    return StreamFormat();
-}
-
 void MPD::debug()
 {
     msg_Dbg(p_object, "MPD profile=%s mediaPresentationDuration=%" PRId64
diff --git a/modules/demux/dash/mpd/MPD.h b/modules/demux/dash/mpd/MPD.h
index 18415401f3..a515798d0e 100644
--- a/modules/demux/dash/mpd/MPD.h
+++ b/modules/demux/dash/mpd/MPD.h
@@ -48,8 +48,6 @@ namespace dash
                 virtual bool                    isLive() const;
                 virtual void                    debug();
 
-                static StreamFormat             mimeToFormat(const std::string &);
-
                 Property<ProgramInformation *>      programInfo;
 
             private:
diff --git a/modules/demux/dash/mpd/Representation.cpp b/modules/demux/dash/mpd/Representation.cpp
index 710901102c..d49af4df28 100644
--- a/modules/demux/dash/mpd/Representation.cpp
+++ b/modules/demux/dash/mpd/Representation.cpp
@@ -51,9 +51,9 @@ Representation::~Representation ()
 StreamFormat Representation::getStreamFormat() const
 {
     if(getMimeType().empty())
-        return MPD::mimeToFormat(adaptationSet->getMimeType());
+        return StreamFormat(adaptationSet->getMimeType());
     else
-        return MPD::mimeToFormat(getMimeType());
+        return StreamFormat(getMimeType());
 }
 
 TrickModeType*      Representation::getTrickModeType        () const



More information about the vlc-commits mailing list