aboutsummaryrefslogtreecommitdiffstats
path: root/Adaptation/AdaptationLogicFactory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Adaptation/AdaptationLogicFactory.cpp')
-rw-r--r--Adaptation/AdaptationLogicFactory.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/Adaptation/AdaptationLogicFactory.cpp b/Adaptation/AdaptationLogicFactory.cpp
new file mode 100644
index 00000000..6901a597
--- /dev/null
+++ b/Adaptation/AdaptationLogicFactory.cpp
@@ -0,0 +1,48 @@
+/*
+ * AdaptationLogicFactory.cpp
+ *****************************************************************************
+ * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved
+ *
+ * Email: libdash-dev@vicky.bitmovin.net
+ *
+ * This source code and its use and distribution, is subject to the terms
+ * and conditions of the applicable license agreement.
+ *****************************************************************************/
+
+#include "AdaptationLogicFactory.h"
+#include<stdio.h>
+
+using namespace libdash::framework::adaptation;
+using namespace dash::mpd;
+
+IAdaptationLogic* AdaptationLogicFactory::create(LogicType logic, IMPD *mpd, IPeriod *period, IAdaptationSet *adaptationSet,bool isVid, struct AdaptationParameters* paramsForAdaptation)
+{
+ Debug("Adaptation Logic for %s: ", isVid ? "video" : "audio");
+ switch(logic)
+ {
+ case AlwaysLowest:
+ Debug("Always lowest\n");
+ return new AlwaysLowestLogic(mpd, period, adaptationSet, isVid, paramsForAdaptation);
+ case RateBased:
+ Debug("Rate based\n");
+ return new RateBasedAdaptation(mpd,period,adaptationSet, isVid, paramsForAdaptation);
+ case BufferBased:
+ Debug("Buffer based\n");
+ return new BufferBasedAdaptation(mpd,period,adaptationSet, isVid, paramsForAdaptation);
+ case BufferRateBased:
+ Debug("Buffer Rate based\n");
+ return new BufferBasedAdaptationWithRateBased(mpd,period,adaptationSet, isVid, paramsForAdaptation);
+ case BufferBasedThreeThreshold:
+ Debug("Buffer based 3 threshold\n");
+ return new BufferBasedThreeThresholdAdaptation(mpd,period,adaptationSet, isVid, paramsForAdaptation);
+ case Panda:
+ Debug("Panda\n");
+ return new PandaAdaptation(mpd, period, adaptationSet, isVid, paramsForAdaptation);
+ case Bola:
+ Debug("Bola\n");
+ return new BolaAdaptation(mpd, period, adaptationSet, isVid, paramsForAdaptation);
+ default:
+ Debug("default => return Always Lowest\n");
+ return new AlwaysLowestLogic(mpd, period, adaptationSet, isVid, paramsForAdaptation);
+ }
+}