[vlc-commits] dash: Adding a SegmentInfoCommon class.

Hugo Beauzée-Luyssen git at videolan.org
Fri Dec 30 18:15:39 CET 2011


vlc | branch: master | Hugo Beauzée-Luyssen <beauze.h at gmail.com> | Fri Dec 30 13:08:33 2011 +0100| [752a29f300592e6ebc32f7b659d2f42ea15554fb] | committer: Jean-Baptiste Kempf

dash: Adding a SegmentInfoCommon class.

This holds common property for both SegmentInfo and SegmentInfoDefault.

Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>

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

 modules/stream_filter/dash/Modules.am              |    2 +
 modules/stream_filter/dash/mpd/SegmentInfo.cpp     |   23 +-----
 modules/stream_filter/dash/mpd/SegmentInfo.h       |    8 +--
 .../stream_filter/dash/mpd/SegmentInfoCommon.cpp   |   86 ++++++++++++++++++++
 modules/stream_filter/dash/mpd/SegmentInfoCommon.h |   63 ++++++++++++++
 5 files changed, 154 insertions(+), 28 deletions(-)

diff --git a/modules/stream_filter/dash/Modules.am b/modules/stream_filter/dash/Modules.am
index cdf7feb..eea53ed 100644
--- a/modules/stream_filter/dash/Modules.am
+++ b/modules/stream_filter/dash/Modules.am
@@ -45,6 +45,8 @@ SOURCES_stream_filter_dash = \
     mpd/Segment.h \
     mpd/SegmentInfo.cpp \
     mpd/SegmentInfo.h \
+    mpd/SegmentInfoCommon.cpp \
+    mpd/SegmentInfoCommon.h \
     mpd/SegmentTimeline.cpp \
     mpd/SegmentTimeline.h \
     mpd/TrickModeType.cpp \
diff --git a/modules/stream_filter/dash/mpd/SegmentInfo.cpp b/modules/stream_filter/dash/mpd/SegmentInfo.cpp
index 1b6ec9c..1bfec26 100644
--- a/modules/stream_filter/dash/mpd/SegmentInfo.cpp
+++ b/modules/stream_filter/dash/mpd/SegmentInfo.cpp
@@ -30,8 +30,7 @@
 using namespace dash::mpd;
 
 SegmentInfo::SegmentInfo() :
-    initSeg( NULL ),
-    duration( -1 )
+    initSeg( NULL )
 {
 }
 
@@ -43,16 +42,6 @@ SegmentInfo::~SegmentInfo   ()
     delete(this->initSeg);
 }
 
-Segment*            SegmentInfo::getInitSegment() const
-{
-    return this->initSeg;
-}
-
-void                    SegmentInfo::setInitSegment( Segment *initSeg )
-{
-    this->initSeg = initSeg;
-}
-
 const std::vector<Segment*>&   SegmentInfo::getSegments        () const
 {
     return this->segments;
@@ -63,13 +52,3 @@ void                    SegmentInfo::addSegment         (Segment *seg)
     this->segments.push_back(seg);
 }
 
-time_t      SegmentInfo::getDuration() const
-{
-    return this->duration;
-}
-
-void        SegmentInfo::setDuration( time_t duration )
-{
-    if ( duration >= 0 )
-        this->duration = duration;
-}
diff --git a/modules/stream_filter/dash/mpd/SegmentInfo.h b/modules/stream_filter/dash/mpd/SegmentInfo.h
index fd778b7..c208add 100644
--- a/modules/stream_filter/dash/mpd/SegmentInfo.h
+++ b/modules/stream_filter/dash/mpd/SegmentInfo.h
@@ -30,27 +30,23 @@
 #include <map>
 
 #include "mpd/Segment.h"
+#include "mpd/SegmentInfoCommon.h"
 
 namespace dash
 {
     namespace mpd
     {
-        class SegmentInfo
+        class SegmentInfo : public SegmentInfoCommon
         {
             public:
                 SegmentInfo             ();
                 virtual ~SegmentInfo    ();
 
-                Segment*                getInitSegment() const;
-                void                    setInitSegment( Segment *seg );
-                time_t                  getDuration() const;
-                void                    setDuration( time_t duration );
                 const std::vector<Segment *>&   getSegments() const;
                 void                    addSegment(Segment *seg);
 
             private:
                 Segment                             *initSeg;
-                time_t                              duration;
                 std::vector<Segment *>              segments;
         };
     }
diff --git a/modules/stream_filter/dash/mpd/SegmentInfoCommon.cpp b/modules/stream_filter/dash/mpd/SegmentInfoCommon.cpp
new file mode 100644
index 0000000..0d7c26b
--- /dev/null
+++ b/modules/stream_filter/dash/mpd/SegmentInfoCommon.cpp
@@ -0,0 +1,86 @@
+/*****************************************************************************
+ * SegmentInfoCommon.cpp: Implement the common part for both SegmentInfoDefault
+ *                        and SegmentInfo
+ *****************************************************************************
+ * Copyright (C) 1998-2007 VLC authors and VideoLAN
+ * $Id$
+ *
+ * Authors: Hugo Beauzée-Luyssen <beauze.h at gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#include "SegmentInfoCommon.h"
+
+using namespace dash::mpd;
+
+SegmentInfoCommon::SegmentInfoCommon() :
+    duration( -1 )
+{
+}
+
+time_t      SegmentInfoCommon::getDuration() const
+{
+    return this->duration;
+}
+
+void        SegmentInfoCommon::setDuration( time_t duration )
+{
+    if ( duration >= 0 )
+        this->duration = duration;
+}
+
+int         SegmentInfoCommon::getStartIndex() const
+{
+    return this->startIndex;
+}
+
+void        SegmentInfoCommon::setStartIndex(int startIndex)
+{
+    if ( startIndex >= 0 )
+        this->startIndex = startIndex;
+}
+
+const Segment*  SegmentInfoCommon::getInitialisationSegment() const
+{
+    return this->initialisationSegment;
+}
+
+void SegmentInfoCommon::setInitialisationSegment(const Segment *seg)
+{
+    if ( seg != NULL )
+        this->initialisationSegment = seg;
+}
+
+const std::list<std::string>&   SegmentInfoCommon::getBaseURL() const
+{
+    return this->baseURLs;
+}
+
+void SegmentInfoCommon::appendBaseURL(const std::string &url)
+{
+    this->baseURLs.push_back( url );
+}
+
+const SegmentTimeline *SegmentInfoCommon::getSegmentTimeline() const
+{
+    return this->segmentTimeline;
+}
+
+void SegmentInfoCommon::setSegmentTimeline( const SegmentTimeline *segTl )
+{
+    if ( segTl != NULL )
+        this->segmentTimeline = segTl;
+}
diff --git a/modules/stream_filter/dash/mpd/SegmentInfoCommon.h b/modules/stream_filter/dash/mpd/SegmentInfoCommon.h
new file mode 100644
index 0000000..654ebfc
--- /dev/null
+++ b/modules/stream_filter/dash/mpd/SegmentInfoCommon.h
@@ -0,0 +1,63 @@
+/*****************************************************************************
+ * SegmentInfoCommon.h: Implement the common part for both SegmentInfoDefault
+ *                      and SegmentInfo
+ *****************************************************************************
+ * Copyright (C) 1998-2007 VLC authors and VideoLAN
+ * $Id$
+ *
+ * Authors: Hugo Beauzée-Luyssen <beauze.h at gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#ifndef SEGMENTINFOCOMMON_H
+#define SEGMENTINFOCOMMON_H
+
+#include <string>
+#include <list>
+
+namespace dash
+{
+    namespace mpd
+    {
+        class Segment;
+        class SegmentTimeline;
+
+        class SegmentInfoCommon
+        {
+            public:
+                SegmentInfoCommon();
+                time_t                  getDuration() const;
+                void                    setDuration( time_t duration );
+                int                     getStartIndex() const;
+                void                    setStartIndex( int startIndex );
+                const Segment*          getInitialisationSegment() const;
+                void                    setInitialisationSegment( const Segment* seg );
+                const std::list<std::string>&   getBaseURL() const;
+                void                    appendBaseURL( const std::string& url );
+                const SegmentTimeline*  getSegmentTimeline() const;
+                void                    setSegmentTimeline( const SegmentTimeline *segTl );
+
+            private:
+                time_t                  duration;
+                int                     startIndex;
+                const Segment*          initialisationSegment;
+                std::list<std::string>  baseURLs;
+                const SegmentTimeline*  segmentTimeline;
+        };
+    }
+}
+
+#endif // SEGMENTINFOCOMMON_H



More information about the vlc-commits mailing list