[vlc-devel] [PATCH 4/4] demux: adaptive: use a custom Matroska demuxer that trust Cues entries

Steve Lhomme robux4 at ycbcr.xyz
Fri Oct 2 13:19:38 CEST 2020


If the Cues we read in adaptive streaming are incorrect, then the adaptive
streaming cannot work at all with those streams.
---
 modules/demux/adaptive/plumbing/Demuxer.cpp | 12 ++++++++++++
 modules/demux/adaptive/plumbing/Demuxer.hpp |  7 +++++++
 modules/demux/dash/DASHStream.cpp           |  2 +-
 3 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/modules/demux/adaptive/plumbing/Demuxer.cpp b/modules/demux/adaptive/plumbing/Demuxer.cpp
index 43d3dafdc0f..ad6143f5e89 100644
--- a/modules/demux/adaptive/plumbing/Demuxer.cpp
+++ b/modules/demux/adaptive/plumbing/Demuxer.cpp
@@ -271,6 +271,18 @@ bool SlaveDemuxer::create()
     return false;
 }
 
+MkvDemuxer::MkvDemuxer(vlc_object_t *p_obj_,
+                       es_out_t *out, AbstractSourceStream *source)
+    : Demuxer(p_obj_, "mkv_trusted", out, source)
+{
+
+}
+
+MkvDemuxer::~MkvDemuxer()
+{
+
+}
+
 AbstractDemuxer::Status SlaveDemuxer::demux(vlc_tick_t nz_deadline)
 {
     /* Always call with increment or buffering will get slow stuck */
diff --git a/modules/demux/adaptive/plumbing/Demuxer.hpp b/modules/demux/adaptive/plumbing/Demuxer.hpp
index 0f16180178c..67dbdf14bd8 100644
--- a/modules/demux/adaptive/plumbing/Demuxer.hpp
+++ b/modules/demux/adaptive/plumbing/Demuxer.hpp
@@ -109,6 +109,13 @@ namespace adaptive
             vlc_tick_t length;
     };
 
+    class MkvDemuxer : public Demuxer
+    {
+        public:
+            MkvDemuxer(vlc_object_t *, es_out_t *, AbstractSourceStream *);
+            virtual ~MkvDemuxer();
+    };
+
     class DemuxerFactoryInterface
     {
         public:
diff --git a/modules/demux/dash/DASHStream.cpp b/modules/demux/dash/DASHStream.cpp
index 6d83213c8a6..c5f4f5bb3c6 100644
--- a/modules/demux/dash/DASHStream.cpp
+++ b/modules/demux/dash/DASHStream.cpp
@@ -47,7 +47,7 @@ AbstractDemuxer *DASHStream::newDemux(vlc_object_t *p_obj, const StreamFormat &f
             break;
 
         case StreamFormat::WEBM:
-            ret = new Demuxer(p_obj, "mkv", out, source);
+            ret = new MkvDemuxer(p_obj, out, source);
             break;
 
         case StreamFormat::WEBVTT:
-- 
2.26.2



More information about the vlc-devel mailing list