]> git.sesse.net Git - vlc/blobdiff - modules/stream_filter/dash/mpd/BasicCMManager.cpp
stream_filter: dash: deduplicate code
[vlc] / modules / stream_filter / dash / mpd / BasicCMManager.cpp
index b8c6f887665f6395fb8e949b7adc0386230055b5..bf45a2f2a48e278724a75b333ef1eed63c8530ef 100644 (file)
@@ -7,19 +7,19 @@
  * Authors: Christopher Mueller <christopher.mueller@itec.uni-klu.ac.at>
  *          Christian Timmerer  <christian.timmerer@itec.uni-klu.ac.at>
  *
- * 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
+ * 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 General Public License for more details.
+ * 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.
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 #ifdef HAVE_CONFIG_H
 # include "config.h"
 
 #include "BasicCMManager.h"
 
-#include <cassert>
-
 using namespace dash::mpd;
 
-BasicCMManager::BasicCMManager  (MPD *mpd)
-{
-    this->mpd = mpd;
-}
-BasicCMManager::~BasicCMManager ()
+BasicCMManager::BasicCMManager(MPD *mpd) :
+    IMPDManager(mpd)
 {
-    delete this->mpd;
+
 }
 
 std::vector<Segment*>   BasicCMManager::getSegments( const Representation *rep )
@@ -52,89 +47,8 @@ std::vector<Segment*>   BasicCMManager::getSegments( const Representation *rep )
                                             info->getSegments().end() );
     return retSegments;
 }
-const std::vector<Period*>&    BasicCMManager::getPeriods              () const
-{
-    return this->mpd->getPeriods();
-}
-
-Representation*         BasicCMManager::getBestRepresentation   (Period *period)
-{
-    std::vector<Group *> groups = period->getGroups();
-
-    int             bitrate  = 0;
-    Representation  *best    = NULL;
-
-    for(size_t i = 0; i < groups.size(); i++)
-    {
-        std::vector<Representation *> reps = groups.at(i)->getRepresentations();
-        for(size_t j = 0; j < reps.size(); j++)
-        {
-            int currentBitrate = reps.at(j)->getBandwidth();
-            assert( currentBitrate != -1 );
-
-            if( currentBitrate > bitrate)
-            {
-                bitrate = currentBitrate;
-                best    = reps.at(j);
-            }
-        }
-    }
-    return best;
-}
-Period*                 BasicCMManager::getFirstPeriod          ()
-{
-    std::vector<Period *> periods = this->mpd->getPeriods();
-
-    if(periods.size() == 0)
-        return NULL;
-
-    return periods.at(0);
-}
-
-Representation*         BasicCMManager::getRepresentation(Period *period, int bitrate ) const
-{
-    std::vector<Group *>    groups = period->getGroups();
-
-    Representation  *best = NULL;
-    std::cout << "Sarching for best representation with bitrate: " << bitrate << std::endl;
-
-    for(size_t i = 0; i < groups.size(); i++)
-    {
-        std::vector<Representation *> reps = groups.at(i)->getRepresentations();
-        for( size_t j = 0; j < reps.size(); j++ )
-        {
-            int     currentBitrate = reps.at(j)->getBandwidth();
-            assert( currentBitrate != -1 );
-
-            if ( best == NULL ||
-                 ( currentBitrate > best->getBandwidth() &&
-                   currentBitrate < bitrate ) )
-            {
-                std::cout << "Found a better Representation (#" << j << ") in group #" << i << std::endl;
-                best = reps.at( j );
-            }
-        }
-    }
-    return best;
-}
-Period*                 BasicCMManager::getNextPeriod           (Period *period)
-{
-    std::vector<Period *> periods = this->mpd->getPeriods();
 
-    for(size_t i = 0; i < periods.size(); i++)
-    {
-        if(periods.at(i) == period && (i + 1) < periods.size())
-            return periods.at(i + 1);
-    }
-
-    return NULL;
-}
-
-const MPD*      BasicCMManager::getMPD() const
-{
-    return this->mpd;
-}
-Representation*         BasicCMManager::getRepresentation (Period *period, int bitrate, int width, int height) const
+Representation*         BasicCMManager::getRepresentation (Period *period, uint64_t bitrate, int, int ) const
 {
-    return this->getRepresentation(period, bitrate);
+    return IMPDManager::getRepresentation(period, bitrate);
 }