From aff4155325a95f0e1dce85426c18592b22062cfa Mon Sep 17 00:00:00 2001 From: Jacques Samain Date: Wed, 3 Jan 2018 14:21:23 +0100 Subject: Refactoring adaptation logic Refactoring GUI: removed prefix/suffix to have only one video URI Change-Id: Ie0add7c1d8ace89410917ab7cc414c668c528394 Signed-off-by: Jacques Samain --- Adaptation/AdapTech.cpp | 210 ++++++++++++++++++++++ Adaptation/AdapTech.h | 73 ++++++++ Adaptation/AdaptationLogicFactory.cpp | 6 +- Adaptation/AdaptationLogicFactory.h | 2 +- Adaptation/BufferBasedAdaptationWithRateBased.cpp | 210 ---------------------- Adaptation/BufferBasedAdaptationWithRateBased.h | 73 -------- Adaptation/IAdaptationLogic.h | 2 +- Common/Config.cpp | 88 +-------- Common/Config.h | 24 +-- UI/DASHPlayer.cpp | 67 +------ UI/DASHPlayer.h | 19 +- UI/DASHPlayerNoGUI.cpp | 2 +- main.cpp | 1 - qml/Viper/ControlPanel.qml | 7 +- qml/Viper/OpenMpd.qml | 123 ------------- qml/Viper/Options.qml | 122 ++----------- qml/Viper/main.qml | 69 +------ viper.pro | 4 +- viper.qrc | 3 - 19 files changed, 336 insertions(+), 769 deletions(-) create mode 100644 Adaptation/AdapTech.cpp create mode 100644 Adaptation/AdapTech.h delete mode 100644 Adaptation/BufferBasedAdaptationWithRateBased.cpp delete mode 100644 Adaptation/BufferBasedAdaptationWithRateBased.h delete mode 100755 qml/Viper/OpenMpd.qml diff --git a/Adaptation/AdapTech.cpp b/Adaptation/AdapTech.cpp new file mode 100644 index 00000000..dc88fae6 --- /dev/null +++ b/Adaptation/AdapTech.cpp @@ -0,0 +1,210 @@ +/* + * Copyright (c) 2017 Cisco and/or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "AdapTech.h" +#include + +using namespace dash::mpd; +using namespace libdash::framework::adaptation; +using namespace libdash::framework::input; +using namespace libdash::framework::mpd; + +AdapTechAdaptation::AdapTechAdaptation(viper::managers::StreamType type, MPDWrapper *mpdWrapper, struct AdaptationParameters *params) : + AbstractAdaptationLogic(type, mpdWrapper) +{ + this->alphaRate = params->Adaptech_Alpha; + this->reservoirThreshold = params->Adaptech_FirstThreshold; + this->maxThreshold = params->Adaptech_SecondThreshold; + this->switchUpThreshold = params->Adaptech_SwitchUpThreshold; + this->slackParam = params->Adaptech_SlackParameter; + + this->m_count = 0; + this->instantBw = 0; + this->averageBw = 0; +// this->representation = this->adaptationSet->GetRepresentation().at(0); + + this->multimediaManager = NULL; + this->lastBufferFill = 0; + this->bufferEOS = false; + this->shouldAbort = false; + this->isCheckedForReceiver = false; + this->myQuality = 0; + this->currentBitrate = 0; + Debug("BufferRateBasedParams:\talpha:%f\tfirst threshold: %f\tsecond threshold: %f\tswitch-up margin: %d\tSlack: %f\n",this->alphaRate, (double)reservoirThreshold/100, (double)maxThreshold/100, this->switchUpThreshold, this->slackParam); + Debug("Buffer Adaptation: STARTED\n"); +} +AdapTechAdaptation::~AdapTechAdaptation() +{ +} + +LogicType AdapTechAdaptation::getType() +{ + return adaptation::BufferBased; +} + +bool AdapTechAdaptation::isUserDependent() +{ + return false; +} + +bool AdapTechAdaptation::isRateBased() +{ + return true; +} +bool AdapTechAdaptation::isBufferBased() +{ + return true; +} + +void AdapTechAdaptation::setMultimediaManager(viper::managers::IMultimediaManagerBase *_mmManager) +{ + this->multimediaManager = _mmManager; +} + +void AdapTechAdaptation::notifyBitrateChange() +{ + this->mpdWrapper->setRepresentation(this->type, this->representation); + if(this->multimediaManager) + if(this->multimediaManager->isStarted() && !this->multimediaManager->isStopping()) + if(this->type==viper::managers::StreamType::VIDEO) + this->multimediaManager->setVideoQuality(); + else + this->multimediaManager->setAudioQuality(); + //Should Abort is done here to avoid race condition with DASHReceiver::DoBuffering() +// if(this->shouldAbort) +// { +// this->multimediaManager->shouldAbort((this->type == viper::managers::StreamType::VIDEO)); +// } +// this->shouldAbort = false; +} + +uint64_t AdapTechAdaptation::getBitrate() +{ + return this->currentBitrate; +} + +void AdapTechAdaptation::setBitrate(uint32_t bufferFill) +{ + uint32_t phi1, phi2; + std::vector representations; + representations = this->mpdWrapper->getRepresentations(this->type); + size_t i = 0; + + Debug("bufferlevel: %u, instant rate %lu, average rate %lu\n", bufferFill, this->instantBw, this->averageBw); + phi1 = 0; + phi2 = 0; + while(i < representations.size()) + { + if(phi1 == 0 && representations.at(i)->GetBandwidth() > slackParam * this->instantBw) + { + phi1 = representations.at((i == 0) ? i : i -1)->GetBandwidth(); + } + if(phi2 == 0 && representations.at(i)->GetBandwidth() > slackParam * this->averageBw) + { + phi2 = representations.at((i == 0) ? i : i -1)->GetBandwidth(); + } + i++; + } + + if(!phi1) + phi1 = representations.at(representations.size() - 1)->GetBandwidth(); + + if(!phi2) + phi2 = representations.at(representations.size() - 1)->GetBandwidth(); + + if(bufferFill < this->reservoirThreshold) + { + this->m_count = 0; + this->myQuality = 0; + } + else + { + if(bufferFill < this->maxThreshold) + { + this->m_count = 0; + if(this->currentBitrate > phi1) + { + if(this->myQuality > 0) + { + this->myQuality--; + } + } + else + { + if(this->currentBitrate < phi1) + { + if(this->myQuality < representations.size() - 1) + { + this->myQuality++; + } + } + } + } + else + { // bufferFill > this->maxThreshold + if(this->currentBitrate < phi2) + { + m_count++; + + if(m_count >= switchUpThreshold && this->myQuality < representations.size() - 1) + { + this->m_count = 0; + this->myQuality++; + } + } + } + } + this->representation = representations.at(this->myQuality); + this->currentBitrate = (uint64_t) this->representation->GetBandwidth(); + Debug("ADAPTATION_LOGIC:\tFor %s:\tlast_buffer: %f\tbuffer_level: %f, instantaneousBw: %lu, AverageBW: %lu, choice: %d\n",(this->type == viper::managers::StreamType::VIDEO) ? "video" : "audio",(double)lastBufferFill/100 , (double)bufferFill/100, this->instantBw, this->averageBw , this->myQuality); +} + +void AdapTechAdaptation::bitrateUpdate(uint64_t bps, uint32_t segNum) +{ + Debug("rate estimation: %lu\n", bps); + this->instantBw = bps; + if(this->averageBw == 0) + { + this->averageBw = bps; + } + else + { + this->averageBw = this->alphaRate*this->averageBw + (1 - this->alphaRate)*bps; + } +} + +void AdapTechAdaptation::onEOS(bool value) +{ + this->bufferEOS = value; +} + +void AdapTechAdaptation::checkedByDASHReceiver() +{ + this->isCheckedForReceiver = false; +} +void AdapTechAdaptation::bufferUpdate(uint32_t bufferFill, int maxC) +{ + Debug("buffer update: %u\n", bufferFill); + EnterCriticalSection(&this->monitorLock); + this->setBitrate(bufferFill); + this->notifyBitrateChange(); + LeaveCriticalSection(&this->monitorLock); +} + +void AdapTechAdaptation::dLTimeUpdate(double time) +{ +} + + diff --git a/Adaptation/AdapTech.h b/Adaptation/AdapTech.h new file mode 100644 index 00000000..c7f4e33c --- /dev/null +++ b/Adaptation/AdapTech.h @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2017 Cisco and/or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef LIBDASH_FRAMEWORK_ADAPTATION_ADAPTECH_H_ +#define LIBDASH_FRAMEWORK_ADAPTATION_ADAPTECH_H_ + +#include "AbstractAdaptationLogic.h" +#include "../MPD/AdaptationSetStream.h" +#include "../Input/IDASHReceiverObserver.h" + +namespace libdash +{ +namespace framework +{ +namespace adaptation +{ +class AdapTechAdaptation : public AbstractAdaptationLogic +{ +public: +// AdapTech(dash::mpd::IMPD *mpd, dash::mpd::IPeriod *period, dash::mpd::IAdaptationSet *adaptationSet, bool isVid, struct AdaptationParameters *params); + AdapTechAdaptation(viper::managers::StreamType type, libdash::framework::mpd::MPDWrapper *mpdWrapper, struct AdaptationParameters *params); + virtual ~AdapTechAdaptation(); + + virtual LogicType getType(); + virtual bool isUserDependent(); + virtual bool isRateBased(); + virtual bool isBufferBased(); + virtual void bitrateUpdate(uint64_t bps, uint32_t segNum); + virtual void bufferUpdate(uint32_t bufferFill, int maxC); + virtual void dLTimeUpdate(double time); + void setBitrate(uint32_t bufferFill); + uint64_t getBitrate(); + virtual void setMultimediaManager(viper::managers::IMultimediaManagerBase *_mmManager); + void notifyBitrateChange(); + void onEOS(bool value); + void checkedByDASHReceiver(); + +private: + uint64_t currentBitrate; + std::vector availableBitrates; + viper::managers::IMultimediaManagerBase *multimediaManager; + dash::mpd::IRepresentation *representation; + uint32_t reservoirThreshold; + uint32_t maxThreshold; + uint32_t lastBufferFill; + int m_count; + int switchUpThreshold; + bool bufferEOS; + bool shouldAbort; + double alphaRate; + uint64_t averageBw; + uint64_t instantBw; + int myQuality; + double slackParam; + bool isCheckedForReceiver; +}; +} +} +} + +#endif /* LIBDASH_FRAMEWORK_ADAPTATION_ADAPTECH_H_ */ diff --git a/Adaptation/AdaptationLogicFactory.cpp b/Adaptation/AdaptationLogicFactory.cpp index b2cae9c1..f2029b5d 100644 --- a/Adaptation/AdaptationLogicFactory.cpp +++ b/Adaptation/AdaptationLogicFactory.cpp @@ -29,9 +29,9 @@ IAdaptationLogic* AdaptationLogicFactory::create(LogicType logic, viper::manager case BufferBased: Debug("Buffer based\n"); return new BufferBasedAdaptation(type, mpdWrapper, paramsForAdaptation); - case BufferRateBased: - Debug("Buffer Rate based\n"); - return new BufferBasedAdaptationWithRateBased(type, mpdWrapper, paramsForAdaptation); + case AdapTech: + Debug("AdapTech\n"); + return new AdapTechAdaptation(type, mpdWrapper, paramsForAdaptation); case BufferBasedThreeThreshold: Debug("Buffer based 3 threshold\n"); return new BufferBasedThreeThresholdAdaptation(type, mpdWrapper, paramsForAdaptation); diff --git a/Adaptation/AdaptationLogicFactory.h b/Adaptation/AdaptationLogicFactory.h index e78d2865..62d59360 100644 --- a/Adaptation/AdaptationLogicFactory.h +++ b/Adaptation/AdaptationLogicFactory.h @@ -16,7 +16,7 @@ #include "AlwaysLowestLogic.h" #include "RateBasedAdaptation.h" #include "BufferBasedAdaptation.h" -#include "BufferBasedAdaptationWithRateBased.h" +#include "AdapTech.h" #include "BufferBasedThreeThresholdAdaptation.h" #include "Panda.h" #include "Bola.h" diff --git a/Adaptation/BufferBasedAdaptationWithRateBased.cpp b/Adaptation/BufferBasedAdaptationWithRateBased.cpp deleted file mode 100644 index 3df1cf84..00000000 --- a/Adaptation/BufferBasedAdaptationWithRateBased.cpp +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Copyright (c) 2017 Cisco and/or its affiliates. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at: - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "BufferBasedAdaptationWithRateBased.h" -#include - -using namespace dash::mpd; -using namespace libdash::framework::adaptation; -using namespace libdash::framework::input; -using namespace libdash::framework::mpd; - -BufferBasedAdaptationWithRateBased::BufferBasedAdaptationWithRateBased(viper::managers::StreamType type, MPDWrapper *mpdWrapper, struct AdaptationParameters *params) : - AbstractAdaptationLogic(type, mpdWrapper) -{ - this->alphaRate = params->Adaptech_Alpha; - this->reservoirThreshold = params->Adaptech_FirstThreshold; - this->maxThreshold = params->Adaptech_SecondThreshold; - this->switchUpThreshold = params->Adaptech_SwitchUpThreshold; - this->slackParam = params->Adaptech_SlackParameter; - - this->m_count = 0; - this->instantBw = 0; - this->averageBw = 0; -// this->representation = this->adaptationSet->GetRepresentation().at(0); - - this->multimediaManager = NULL; - this->lastBufferFill = 0; - this->bufferEOS = false; - this->shouldAbort = false; - this->isCheckedForReceiver = false; - this->myQuality = 0; - this->currentBitrate = 0; - Debug("BufferRateBasedParams:\talpha:%f\tfirst threshold: %f\tsecond threshold: %f\tswitch-up margin: %d\tSlack: %f\n",this->alphaRate, (double)reservoirThreshold/100, (double)maxThreshold/100, this->switchUpThreshold, this->slackParam); - Debug("Buffer Adaptation: STARTED\n"); -} -BufferBasedAdaptationWithRateBased::~BufferBasedAdaptationWithRateBased () -{ -} - -LogicType BufferBasedAdaptationWithRateBased::getType() -{ - return adaptation::BufferBased; -} - -bool BufferBasedAdaptationWithRateBased::isUserDependent() -{ - return false; -} - -bool BufferBasedAdaptationWithRateBased::isRateBased() -{ - return true; -} -bool BufferBasedAdaptationWithRateBased::isBufferBased() -{ - return true; -} - -void BufferBasedAdaptationWithRateBased::setMultimediaManager(viper::managers::IMultimediaManagerBase *_mmManager) -{ - this->multimediaManager = _mmManager; -} - -void BufferBasedAdaptationWithRateBased::notifyBitrateChange() -{ - this->mpdWrapper->setRepresentation(this->type, this->representation); - if(this->multimediaManager) - if(this->multimediaManager->isStarted() && !this->multimediaManager->isStopping()) - if(this->type==viper::managers::StreamType::VIDEO) - this->multimediaManager->setVideoQuality(); - else - this->multimediaManager->setAudioQuality(); - //Should Abort is done here to avoid race condition with DASHReceiver::DoBuffering() -// if(this->shouldAbort) -// { -// this->multimediaManager->shouldAbort((this->type == viper::managers::StreamType::VIDEO)); -// } -// this->shouldAbort = false; -} - -uint64_t BufferBasedAdaptationWithRateBased::getBitrate() -{ - return this->currentBitrate; -} - -void BufferBasedAdaptationWithRateBased::setBitrate(uint32_t bufferFill) -{ - uint32_t phi1, phi2; - std::vector representations; - representations = this->mpdWrapper->getRepresentations(this->type); - size_t i = 0; - - Debug("bufferlevel: %u, instant rate %lu, average rate %lu\n", bufferFill, this->instantBw, this->averageBw); - phi1 = 0; - phi2 = 0; - while(i < representations.size()) - { - if(phi1 == 0 && representations.at(i)->GetBandwidth() > slackParam * this->instantBw) - { - phi1 = representations.at((i == 0) ? i : i -1)->GetBandwidth(); - } - if(phi2 == 0 && representations.at(i)->GetBandwidth() > slackParam * this->averageBw) - { - phi2 = representations.at((i == 0) ? i : i -1)->GetBandwidth(); - } - i++; - } - - if(!phi1) - phi1 = representations.at(representations.size() - 1)->GetBandwidth(); - - if(!phi2) - phi2 = representations.at(representations.size() - 1)->GetBandwidth(); - - if(bufferFill < this->reservoirThreshold) - { - this->m_count = 0; - this->myQuality = 0; - } - else - { - if(bufferFill < this->maxThreshold) - { - this->m_count = 0; - if(this->currentBitrate > phi1) - { - if(this->myQuality > 0) - { - this->myQuality--; - } - } - else - { - if(this->currentBitrate < phi1) - { - if(this->myQuality < representations.size() - 1) - { - this->myQuality++; - } - } - } - } - else - { // bufferFill > this->maxThreshold - if(this->currentBitrate < phi2) - { - m_count++; - - if(m_count >= switchUpThreshold && this->myQuality < representations.size() - 1) - { - this->m_count = 0; - this->myQuality++; - } - } - } - } - this->representation = representations.at(this->myQuality); - this->currentBitrate = (uint64_t) this->representation->GetBandwidth(); - Debug("ADAPTATION_LOGIC:\tFor %s:\tlast_buffer: %f\tbuffer_level: %f, instantaneousBw: %lu, AverageBW: %lu, choice: %d\n",(this->type == viper::managers::StreamType::VIDEO) ? "video" : "audio",(double)lastBufferFill/100 , (double)bufferFill/100, this->instantBw, this->averageBw , this->myQuality); -} - -void BufferBasedAdaptationWithRateBased::bitrateUpdate(uint64_t bps, uint32_t segNum) -{ - Debug("rate estimation: %lu\n", bps); - this->instantBw = bps; - if(this->averageBw == 0) - { - this->averageBw = bps; - } - else - { - this->averageBw = this->alphaRate*this->averageBw + (1 - this->alphaRate)*bps; - } -} - -void BufferBasedAdaptationWithRateBased::onEOS(bool value) -{ - this->bufferEOS = value; -} - -void BufferBasedAdaptationWithRateBased::checkedByDASHReceiver() -{ - this->isCheckedForReceiver = false; -} -void BufferBasedAdaptationWithRateBased::bufferUpdate(uint32_t bufferFill, int maxC) -{ - Debug("buffer update: %u\n", bufferFill); - EnterCriticalSection(&this->monitorLock); - this->setBitrate(bufferFill); - this->notifyBitrateChange(); - LeaveCriticalSection(&this->monitorLock); -} - -void BufferBasedAdaptationWithRateBased::dLTimeUpdate(double time) -{ -} - - diff --git a/Adaptation/BufferBasedAdaptationWithRateBased.h b/Adaptation/BufferBasedAdaptationWithRateBased.h deleted file mode 100644 index 45147ed2..00000000 --- a/Adaptation/BufferBasedAdaptationWithRateBased.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2017 Cisco and/or its affiliates. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at: - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef LIBDASH_FRAMEWORK_ADAPTATION_BUFFERBASEDADAPTATIONRATE_H_ -#define LIBDASH_FRAMEWORK_ADAPTATION_BUFFERBASEDADAPTATIONRATE_H_ - -#include "AbstractAdaptationLogic.h" -#include "../MPD/AdaptationSetStream.h" -#include "../Input/IDASHReceiverObserver.h" - -namespace libdash -{ -namespace framework -{ -namespace adaptation -{ -class BufferBasedAdaptationWithRateBased : public AbstractAdaptationLogic -{ -public: -// BufferBasedAdaptationWithRateBased(dash::mpd::IMPD *mpd, dash::mpd::IPeriod *period, dash::mpd::IAdaptationSet *adaptationSet, bool isVid, struct AdaptationParameters *params); - BufferBasedAdaptationWithRateBased(viper::managers::StreamType type, libdash::framework::mpd::MPDWrapper *mpdWrapper, struct AdaptationParameters *params); - virtual ~BufferBasedAdaptationWithRateBased(); - - virtual LogicType getType(); - virtual bool isUserDependent(); - virtual bool isRateBased(); - virtual bool isBufferBased(); - virtual void bitrateUpdate(uint64_t bps, uint32_t segNum); - virtual void bufferUpdate(uint32_t bufferFill, int maxC); - virtual void dLTimeUpdate(double time); - void setBitrate(uint32_t bufferFill); - uint64_t getBitrate(); - virtual void setMultimediaManager(viper::managers::IMultimediaManagerBase *_mmManager); - void notifyBitrateChange(); - void onEOS(bool value); - void checkedByDASHReceiver(); - -private: - uint64_t currentBitrate; - std::vector availableBitrates; - viper::managers::IMultimediaManagerBase *multimediaManager; - dash::mpd::IRepresentation *representation; - uint32_t reservoirThreshold; - uint32_t maxThreshold; - uint32_t lastBufferFill; - int m_count; - int switchUpThreshold; - bool bufferEOS; - bool shouldAbort; - double alphaRate; - uint64_t averageBw; - uint64_t instantBw; - int myQuality; - double slackParam; - bool isCheckedForReceiver; -}; -} -} -} - -#endif /* LIBDASH_FRAMEWORK_ADAPTATION_BUFFERBASEDADAPTATIONRATE_H_ */ diff --git a/Adaptation/IAdaptationLogic.h b/Adaptation/IAdaptationLogic.h index 081366dd..a8d885c1 100644 --- a/Adaptation/IAdaptationLogic.h +++ b/Adaptation/IAdaptationLogic.h @@ -32,7 +32,7 @@ namespace adaptation ADAPTATIONLOGIC(AlwaysLowest) \ ADAPTATIONLOGIC(RateBased) \ ADAPTATIONLOGIC(BufferBased) \ - ADAPTATIONLOGIC(BufferRateBased) \ + ADAPTATIONLOGIC(AdapTech) \ ADAPTATIONLOGIC(BufferBasedThreeThreshold) \ ADAPTATIONLOGIC(Panda) \ ADAPTATIONLOGIC(Bola) \ diff --git a/Common/Config.cpp b/Common/Config.cpp index 85278251..70b67765 100644 --- a/Common/Config.cpp +++ b/Common/Config.cpp @@ -157,10 +157,7 @@ public: settings.endGroup(); settings.beginGroup(QString::fromLatin1("backend")); - settings.setValue(QString::fromLatin1("icn_prefix"), icn_prefix); - settings.setValue(QString::fromLatin1("http_prefix"), http_prefix); - settings.setValue(QString::fromLatin1("icn_suffix"), icn_suffix); - settings.setValue(QString::fromLatin1("http_suffix"), http_suffix); + settings.setValue(QString::fromLatin1("video_uri"), video_uri); settings.setValue(QString::fromLatin1("segment_buffer_size"), segment_buffer_size); settings.endGroup(); @@ -285,10 +282,7 @@ public: QString frag_header; QString frag_sample; QString frag_pp; - QString icn_prefix; - QString http_prefix; - QString icn_suffix; - QString http_suffix; + QString video_uri; qreal segment_buffer_size; QString last_played; QString adaptation_logic; @@ -527,16 +521,12 @@ void Config::reload() settings.endGroup(); settings.beginGroup(QString::fromLatin1("backend")); - setIcnPrefix(settings.value(QString::fromLatin1("icn_prefix"), QString::fromLatin1("http://webserver/")).toString()); - setHttpPrefix(settings.value(QString::fromLatin1("http_prefix"), QString::fromLatin1("http://10.60.17.153:8080/")).toString()); - setIcnSuffix(settings.value(QString::fromLatin1("icn_suffix"), QString::fromLatin1("/mpd")).toString()); - setHttpSuffix(settings.value(QString::fromLatin1("http_suffix"), QString::fromLatin1("/mpd")).toString()); + setVideoURI(settings.value(QString::fromLatin1("video_uri"), QString::fromLatin1("http://webserver/sintel/mpd")).toString()); setSegmentBufferSize(settings.value(QString::fromLatin1("segment_buffer_size"), 20).toReal()); settings.endGroup(); settings.beginGroup(QString::fromLatin1("playback")); - setLastPlayed(settings.value(QString::fromLatin1("last_played"), QString::fromLatin1("sintel")).toString()); setAdaptationLogic(settings.value(QString::fromLatin1("adaptation_logic"), QString::fromLatin1("Buffer Based")).toString()); setIcn(settings.value(QString::fromLatin1("icn"), true).toBool()); settings.endGroup(); @@ -1297,62 +1287,17 @@ Config& Config::setAbortOnTimeout(bool value) return *this; } -QString Config::icnPrefix() const +QString Config::videoURI() const { - return mpData->icn_prefix; + return mpData->video_uri; } -Config& Config::setIcnPrefix(const QString &text) +Config& Config::setVideoURI(const QString &text) { - if (mpData->icn_prefix == text) + if (mpData->video_uri == text) return *this; - mpData->icn_prefix = text; - Q_EMIT icnPrefixChanged(); - Q_EMIT changed(); - return *this; -} - -QString Config::icnSuffix() const -{ - return mpData->icn_suffix; -} - -Config& Config::setIcnSuffix(const QString &text) -{ - if (mpData->icn_suffix == text) - return *this; - mpData->icn_suffix = text; - Q_EMIT icnSuffixChanged(); - Q_EMIT changed(); - return *this; -} - -QString Config::httpPrefix() const -{ - return mpData->http_prefix; -} - -Config& Config::setHttpPrefix(const QString &text) -{ - if (mpData->http_prefix == text) - return *this; - mpData->http_prefix = text; - Q_EMIT httpPrefixChanged(); - Q_EMIT changed(); - return *this; -} - -QString Config::httpSuffix() const -{ - return mpData->http_suffix; -} - -Config& Config::setHttpSuffix(const QString &text) -{ - if (mpData->http_suffix == text) - return *this; - mpData->http_suffix = text; - Q_EMIT httpSuffixChanged(); + mpData->video_uri = text; + Q_EMIT videoURIChanged(); Q_EMIT changed(); return *this; } @@ -1372,21 +1317,6 @@ Config& Config::setSegmentBufferSize(qreal value) return *this; } -QString Config::lastPlayed() const -{ - return mpData->last_played; -} - -Config& Config::setLastPlayed(const QString &text) -{ - if (mpData->last_played == text) - return *this; - mpData->last_played = text; - Q_EMIT lastPlayedChanged(); - Q_EMIT changed(); - return *this; -} - QString Config::adaptationLogic() const { return mpData->adaptation_logic; diff --git a/Common/Config.h b/Common/Config.h index 018b757f..059c6771 100644 --- a/Common/Config.h +++ b/Common/Config.h @@ -69,13 +69,9 @@ class COMMON_EXPORT Config : public QObject Q_PROPERTY(QString fragHeader READ fragHeader WRITE setFragHeader NOTIFY fragHeaderChanged) Q_PROPERTY(QString fragSample READ fragSample WRITE setFragSample NOTIFY fragSampleChanged) Q_PROPERTY(QString fragPostProcess READ fragPostProcess WRITE setFragPostProcess NOTIFY fragPostProcessChanged) - Q_PROPERTY(QString icnPrefix READ icnPrefix WRITE setIcnPrefix NOTIFY icnPrefixChanged) - Q_PROPERTY(QString httpPrefix READ httpPrefix WRITE setHttpPrefix NOTIFY httpPrefixChanged) - Q_PROPERTY(QString icnSuffix READ icnSuffix WRITE setIcnSuffix NOTIFY icnSuffixChanged) - Q_PROPERTY(QString httpSuffix READ httpSuffix WRITE setHttpSuffix NOTIFY httpSuffixChanged) + Q_PROPERTY(QString videoURI READ videoURI WRITE setVideoURI NOTIFY videoURIChanged) Q_PROPERTY(qreal segmentBufferSize READ segmentBufferSize WRITE setSegmentBufferSize NOTIFY segmentBufferSizeChanged) - Q_PROPERTY(QString lastPlayed READ lastPlayed WRITE setLastPlayed NOTIFY lastPlayedChanged) Q_PROPERTY(QString adaptationLogic READ adaptationLogic WRITE setAdaptationLogic NOTIFY adaptationLogicChanged) Q_PROPERTY(bool icn READ icn WRITE setIcn NOTIFY icnChanged) Q_PROPERTY(qreal rateAlpha READ rateAlpha WRITE setRateAlpha NOTIFY rateAlphaChanged) @@ -268,18 +264,10 @@ public: QString fragSample() const; Config& setFragPostProcess(const QString& text); QString fragPostProcess() const; - Config& setIcnPrefix(const QString &value); - QString icnPrefix() const; - Config& setIcnSuffix(const QString &value); - QString icnSuffix() const; - Config& setHttpPrefix(const QString &value); - QString httpPrefix() const; - Config& setHttpSuffix(const QString &value); - QString httpSuffix() const; + Config& setVideoURI(const QString &value); + QString videoURI() const; Config& setSegmentBufferSize(qreal value); qreal segmentBufferSize() const; - Config& setLastPlayed(const QString &value); - QString lastPlayed() const; Config& setAdaptationLogic(const QString &value); QString adaptationLogic() const; Config& setIcn(bool value); @@ -403,12 +391,8 @@ public: Q_SIGNAL void logLevelChanged(); Q_SIGNAL void languageChanged(); Q_SIGNAL void historyChanged(); - Q_SIGNAL void icnSuffixChanged(); - Q_SIGNAL void httpSuffixChanged(); - Q_SIGNAL void icnPrefixChanged(); - Q_SIGNAL void httpPrefixChanged(); + Q_SIGNAL void videoURIChanged(); Q_SIGNAL void segmentBufferSizeChanged(); - Q_SIGNAL void lastPlayedChanged(); Q_SIGNAL void adaptationLogicChanged(); Q_SIGNAL void icnChanged(); Q_SIGNAL void rateAlphaChanged(); diff --git a/UI/DASHPlayer.cpp b/UI/DASHPlayer.cpp index 331748b5..e2910ea8 100644 --- a/UI/DASHPlayer.cpp +++ b/UI/DASHPlayer.cpp @@ -175,7 +175,7 @@ void DASHPlayer::setSettings(int period, int videoAdaptationSet, int videoRepres this->currentSettings.audioRepresentation = audioRepresentation; } -bool DASHPlayer::downloadMPD(const QString &url, const QString &adaptationLogic, bool icn) +bool DASHPlayer::downloadMPD(const QString &adaptationLogic, bool icn) { if (this->gui->getStop()) @@ -191,15 +191,9 @@ bool DASHPlayer::downloadMPD(const QString &url, const QString &adaptationLogic, this->gui->initVideoPlayer(); this->icn = icn; this->segment = 0; - std::string mUrl; - if(this->icn) - { - mUrl = this->icnPrefix + url.toStdString() + this->icnSuffix; - } - else - { - mUrl = this->httpPrefix + url.toStdString() + this->httpSuffix; - } + std::string mUrl = this->videoURI; + + Debug("MPD is: %s\n", mUrl.c_str()); if (!this->onDownloadMPDPressed(mUrl)) return false; @@ -420,10 +414,7 @@ void DASHPlayer::reloadParameters() { this->beta = config->beta(); this->drop = config->drop(); - this->icnPrefix = config->icnPrefix().toStdString(); - this->httpPrefix = config->httpPrefix().toStdString(); - this->icnSuffix = config->icnSuffix().toStdString(); - this->httpSuffix = config->httpSuffix().toStdString(); + this->videoURI = config->videoURI().toStdString(); this->alpha = config->alpha(); this->repeat = config->repeat(); this->parametersAdaptation = (struct AdaptationParameters *)malloc(sizeof(struct AdaptationParameters)); @@ -450,16 +441,6 @@ void DASHPlayer::reloadParameters() this->parametersAdaptation->Panda_Epsilon = config->pandaParamEpsilon(); } -QString DASHPlayer::getLastPlayed() -{ - return config->lastPlayed(); -} - -void DASHPlayer::setLastPlayed(QString lastPlayed) -{ - config->setLastPlayed(lastPlayed); -} - QString DASHPlayer::getAdaptationLogic() { return config->adaptationLogic(); @@ -480,44 +461,14 @@ void DASHPlayer::setIcn(bool icn) config->setIcn(icn); } -QString DASHPlayer::getIcnPrefix() -{ - return config->icnPrefix(); -} - -void DASHPlayer::setIcnPrefix(QString icnPrefix) -{ - config->setIcnPrefix(icnPrefix); -} - -QString DASHPlayer::getHttpPrefix() -{ - return config->httpPrefix(); -} - -void DASHPlayer::setHttpPrefix(QString httpPrefix) -{ - config->setHttpPrefix(httpPrefix); -} - -QString DASHPlayer::getIcnSuffix() -{ - return config->icnSuffix(); -} - -void DASHPlayer::setIcnSuffix(QString icnSuffix) -{ - config->setIcnSuffix(icnSuffix); -} - -QString DASHPlayer::getHttpSuffix() +QString DASHPlayer::getVideoURI() { - return config->httpSuffix(); + return config->videoURI(); } -void DASHPlayer::setHttpSuffix(QString httpSuffix) +void DASHPlayer::setVideoURI(QString videoURI) { - config->setHttpSuffix(httpSuffix); + config->setVideoURI(videoURI); } qreal DASHPlayer::getAlpha() diff --git a/UI/DASHPlayer.h b/UI/DASHPlayer.h index 6204f46a..c85c2351 100644 --- a/UI/DASHPlayer.h +++ b/UI/DASHPlayer.h @@ -62,27 +62,19 @@ public: virtual bool onDownloadMPDPressed(const std::string &url); void setMPDWrapper(libdash::framework::mpd::MPDWrapper* mpdWrapper); void setConfig(Config *config); - Q_INVOKABLE bool downloadMPD(const QString &url, const QString &adaptationLogic, bool icn); + Q_INVOKABLE bool downloadMPD(const QString &adaptationLogic, bool icn); Q_INVOKABLE void pause(); Q_INVOKABLE void seekVideo(float value); Q_INVOKABLE void repeatVideo(bool repeat); Q_INVOKABLE void onStopButtonPressed(); Q_INVOKABLE void play(); Q_INVOKABLE void onStopped(); - Q_INVOKABLE QString getLastPlayed(); - Q_INVOKABLE void setLastPlayed(QString lastPlayed); Q_INVOKABLE QString getAdaptationLogic(); Q_INVOKABLE void setAdaptationLogic(QString adaptationLogic); Q_INVOKABLE bool getIcn(); Q_INVOKABLE void setIcn(bool icn); - Q_INVOKABLE QString getIcnPrefix(); - Q_INVOKABLE void setIcnPrefix(QString icnPrefix); - Q_INVOKABLE QString getHttpPrefix(); - Q_INVOKABLE void setHttpPrefix(QString httpPrefix); - Q_INVOKABLE QString getIcnSuffix(); - Q_INVOKABLE void setIcnSuffix(QString icnSuffix); - Q_INVOKABLE QString getHttpSuffix(); - Q_INVOKABLE void setHttpSuffix(QString httpSuffix); + Q_INVOKABLE QString getVideoURI(); + Q_INVOKABLE void setVideoURI(QString videoURI); Q_INVOKABLE qreal getAlpha(); Q_INVOKABLE void setAlpha(qreal alpha); Q_INVOKABLE qreal getSegmentBufferSize(); @@ -181,10 +173,7 @@ private: CRITICAL_SECTION monitorMutex; const char *url; bool icn; - std::string icnPrefix; - std::string httpPrefix; - std::string icnSuffix; - std::string httpSuffix; + std::string videoURI; double alpha; struct libdash::framework::adaptation::AdaptationParameters *parametersAdaptation; libdash::framework::adaptation::LogicType adaptLogic; diff --git a/UI/DASHPlayerNoGUI.cpp b/UI/DASHPlayerNoGUI.cpp index c6670f13..17948336 100644 --- a/UI/DASHPlayerNoGUI.cpp +++ b/UI/DASHPlayerNoGUI.cpp @@ -210,7 +210,7 @@ void DASHPlayerNoGUI::parseArgs(int argc, char ** argv) } if(!strcmp(argv[i], "-br")) { - this->adaptLogic = LogicType::BufferRateBased; + this->adaptLogic = LogicType::AdapTech; this->parameterAdaptation->Adaptech_Alpha = atof(argv[i+1]); this->parameterAdaptation->Adaptech_FirstThreshold = atoi(argv[i+2]); this->parameterAdaptation->Adaptech_SecondThreshold = atoi(argv[i+3]); diff --git a/main.cpp b/main.cpp index a50e2e21..b91b2261 100644 --- a/main.cpp +++ b/main.cpp @@ -218,7 +218,6 @@ int main(int argc, char *argv[]) QMetaObject::invokeMethod(viewer.rootObject(), "initGraph", Q_ARG(QVariant, (&Config::instance())->graph())); QMetaObject::invokeMethod(viewer.rootObject(), "initRepeat", Q_ARG(QVariant, (&Config::instance())->repeat())); QMetaObject::invokeMethod(viewer.rootObject(), "initFullScreen", Q_ARG(QVariant, (&Config::instance())->fullScreen())); - QMetaObject::invokeMethod(viewer.rootObject(), "setLastPlayed", Q_ARG(QVariant, (&Config::instance())->lastPlayed())); QMetaObject::invokeMethod(viewer.rootObject(), "setAdaptationLogic", Q_ARG(QVariant, (&Config::instance())->adaptationLogic())); QMetaObject::invokeMethod(viewer.rootObject(), "setIcn", Q_ARG(QVariant, (&Config::instance())->icn())); return app.exec(); diff --git a/qml/Viper/ControlPanel.qml b/qml/Viper/ControlPanel.qml index 4f5848d7..d54bd67a 100755 --- a/qml/Viper/ControlPanel.qml +++ b/qml/Viper/ControlPanel.qml @@ -199,8 +199,7 @@ Rectangle { onClicked: { if (checked === true) { console.log(adaptationLogic) - console.log(lastPlayed) - dashPlayer.downloadMPD(lastPlayed, adaptationLogic, icn) + dashPlayer.downloadMPD(adaptationLogic, icn) } else { dashPlayer.pause(); } @@ -309,7 +308,7 @@ Rectangle { } } - Button { + /* Button { id: openBtn bgColor: "transparent" bgColorSelected: "transparent" @@ -322,7 +321,7 @@ Rectangle { if(checked) openMpd() } - } + } */ Button { id: repeatBtn bgColor: "transparent" diff --git a/qml/Viper/OpenMpd.qml b/qml/Viper/OpenMpd.qml deleted file mode 100755 index c32fb7d7..00000000 --- a/qml/Viper/OpenMpd.qml +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright (c) 2017 Cisco and/or its affiliates. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at: - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import QtQuick 2.5 -import QtQuick.Extras 1.4 -import QtQuick.Controls.Styles 1.4 -import QtQuick.Controls 2.0 -import QtQuick.Layouts 1.3 -import "utils.js" as Utils -Rectangle { - signal closeOpenMpd - signal saveAndPlayMpd(string newOpenMpd) - - id: root - color: "#88445566" - - opacity: 0 - radius: Utils.scaled(10) - height: Utils.scaled(100) - width: Utils.scaled(300) - enabled: false; - GridLayout { - id : grid - z: parent.z + 1 - anchors.fill: parent - rows : 2 - columns : 2 - anchors.leftMargin: Utils.scaled(12) - - anchors.rightMargin: Utils.scaled(12) - anchors.topMargin: Utils.scaled(12) - anchors.bottomMargin: Utils.scaled(12) - property double colMulti : grid.width / grid.columns - property double rowMulti : grid.height / grid.rows - - function prefWidth(item) - { - return colMulti * item.Layout.columnSpan - } - - function prefHeight(item) - { - return rowMulti * item.Layout.rowSpan - } - - TextInput { - - id: sourceTextInput - text: lastPlayed - Layout.rowSpan : 1 - Layout.columnSpan : 2 - Layout.preferredWidth : parent.colMulti * 2 + Utils.scaled(5) //grid.prefWidth(this) - Layout.preferredHeight : parent.rowMulti//grid.prefHeight(this) - color: "white" - } - // ComboBox { - // z: parent.z + 1 - // id: comboBoxList - // Layout.rowSpan : 1 - // Layout.columnSpan : 2 - // Layout.preferredWidth : parent.colMulti * 2 + Utils.scaled(5) //grid.prefWidth(this) - // Layout.preferredHeight : parent.rowMulti//grid.prefHeight(this) - // - // onCurrentIndexChanged: { - // } - - // model: ListModel { - // id: mpdItems - // ListElement { text: "gastown"; } - // ListElement { text: "sintel"; } - // } - // currentIndex: find(lastPlayed) - //} - - Button { - id: cancelBtn - z: parent.z + 1 - - text: "Cancel" - Layout.rowSpan : 1 - Layout.columnSpan: 1 - Layout.preferredWidth : grid.prefWidth(this) - Layout.preferredHeight : grid.prefHeight(this) - onClicked: { - - closeOpenMpd(); - } - } - - Button { - id: downloadBtn - z: parent.z + 1 - Layout.rowSpan : 1 - Layout.columnSpan: 1 - Layout.preferredWidth : grid.prefWidth(this) - Layout.preferredHeight : grid.prefHeight(this) - text: "Download" - onClicked: { - saveAndPlayMpd(sourceTextInput.text) - closeOpenMpd(); - } - - - } - - - - } - -} - diff --git a/qml/Viper/Options.qml b/qml/Viper/Options.qml index 82d3e3e7..f8ed0909 100755 --- a/qml/Viper/Options.qml +++ b/qml/Viper/Options.qml @@ -24,10 +24,7 @@ Rectangle { signal closeOptions signal saveAdaptationLogic(string selectedAdaptationLogic, int adaptationLogicKey) signal saveIcn(bool selectedIcn) - signal saveIcnPrefix(string selectedIcnPrefix) - signal saveHttpPrefix(string selectedHttpPrefix) - signal saveIcnSuffix(string selectedIcnSuffix) - signal saveHttpSuffix(string selectedHttpSuffix) + signal saveVideoURI(string selectedVideoURI) signal saveSegmentBufferSize(real selectedSegmentBufferSize) signal saveRateAlpha(real selectedRateAlpha) signal saveBufferReservoirThreshold(real selectedBufferReservoirThreshold) @@ -107,7 +104,7 @@ Rectangle { ListElement { text: "Always Lowest"; } ListElement { text: "Rate Based"; } ListElement { text: "Buffer Based"; } - ListElement { text: "Buffer Rate Based"; } + ListElement { text: "AdapTech"; } ListElement { text: "Buffer Based Three Threshold"; } ListElement { text: "Panda"; } ListElement { text: "Bola"; } @@ -407,128 +404,34 @@ Rectangle { } Item { - id: itemIcnPrefix + id: itemVideoURI anchors.top: parent.top anchors.left: parent.left anchors.right: parent.right anchors.rightMargin: parent.width/2 - anchors.topMargin: Utils.scaled(12) + heightRow + anchors.topMargin: Utils.scaled(18) + heightRow Label { - text: "ICN Prefix:" - id: labelIcnPrefix + text: "Video URI:" + id: labelVideoURI color: " white" anchors.top: parent.top - anchors.right: textInputIcnPrefix.left + anchors.right: textInputVideoURI.left anchors.rightMargin: Utils.scaled(5) - anchors.topMargin: (textInputIcnPrefix.height - height)/2 + anchors.topMargin: (textInputVideoURI.height - height)/2 font.bold: true font.pixelSize: Utils.scaled(10); } TextInput { width: parent.width/4*3 - id: textInputIcnPrefix + id: textInputVideoURI anchors.top: parent.top anchors.left: parent.left anchors.leftMargin: Utils.scaled(200) font.pixelSize: Utils.scaled(20) color: "white" - text: icnPrefix - } - } - - Item { - id: itemIcnSuffix - anchors.top: parent.top - anchors.left: parent.left - anchors.right: parent.right - anchors.leftMargin: parent.width/2 - anchors.topMargin: Utils.scaled(12) + heightRow - - Label { - text: "ICN Suffix:" - id: labelIcnSuffix - color: " white" - anchors.top: parent.top - anchors.right: textInputIcnSuffix.left - anchors.rightMargin: Utils.scaled(5) - anchors.topMargin: (textInputIcnSuffix.height - height)/2 - font.bold: true - font.pixelSize: Utils.scaled(10); - } - - TextInput { - width: parent.width/4*3 - id: textInputIcnSuffix - anchors.top: parent.top - anchors.right: parent.right - font.pixelSize: Utils.scaled(20) - color: "white" - text: icnSuffix - } - } - - Item { - id: itemHttpPrefix - anchors.top: parent.top - anchors.left: parent.left - anchors.right: parent.right - anchors.rightMargin: parent.width/2 - anchors.topMargin: Utils.scaled(12) + 2*heightRow - - Label { - text: "TCP Prefix:" - id: labelHttpPrefix - color: " white" - anchors.top: parent.top - anchors.right: textInputHttpPrefix.left - anchors.rightMargin: Utils.scaled(5) - anchors.topMargin: (textInputHttpPrefix.height - height)/2 - font.bold: true - font.pixelSize: Utils.scaled(10); - } - - TextInput { - width: parent.width/4*3 - id: textInputHttpPrefix - anchors.top: parent.top - anchors.left: parent.left - anchors.leftMargin: Utils.scaled(200) - font.pixelSize: Utils.scaled(20) - color: "white" - text: httpPrefix - } - } - - Item { - id: itemHttpSuffix - anchors.top: parent.top - anchors.left: parent.left - anchors.right: parent.right - anchors.leftMargin: parent.width/2 - anchors.topMargin: Utils.scaled(12) + 2*heightRow - - Label { - text: "TCP Suffix:" - id: labelHttpSuffix - color: " white" - anchors.top: parent.top - anchors.right: textInputHttpSuffix.left - anchors.rightMargin: Utils.scaled(5) - anchors.topMargin: (textInputHttpSuffix.height - height)/2 - font.bold: true - font.pixelSize: Utils.scaled(10); - } - - TextInput { - width: parent.width/4*3 - id: textInputHttpSuffix - anchors.top: parent.top - anchors.right: parent.right - font.pixelSize: Utils.scaled(20) - color: "white" - text: httpSuffix + text: videoURI } } @@ -1678,10 +1581,7 @@ Rectangle { onClicked: { saveAdaptationLogic(adaptationLogicModel.get(comboAdaptationSetList.currentIndex).text, comboAdaptationSetList.currentIndex); saveIcn(switchIcn.checked) - saveIcnPrefix(textInputIcnPrefix.text) - saveHttpPrefix(textInputHttpPrefix.text) - saveIcnSuffix(textInputIcnSuffix.text) - saveHttpSuffix(textInputHttpSuffix.text) + saveVideoURI(textInputVideoURI.text) saveSegmentBufferSize(spinboxSegmentBufferSize.value/100) saveRateAlpha(spinboxRateAlpha.value/100) saveBufferReservoirThreshold(spinboxBufferReservoirThreshold.value/100) diff --git a/qml/Viper/main.qml b/qml/Viper/main.qml index bd90103a..e170931b 100755 --- a/qml/Viper/main.qml +++ b/qml/Viper/main.qml @@ -35,12 +35,8 @@ Rectangle { property bool pause: false property bool stop: true property bool buffering: false - property string lastPlayed: "" property string adaptationLogic: "" - property string icnPrefix: "" - property string httpPrefix: "" - property string icnSuffix: "" - property string httpSuffix: "" + property string videoURI: "" property real alpha: 0 property real segmentBufferSize: 0 property bool icn: false @@ -122,11 +118,6 @@ Rectangle { buffering = false } - function setLastPlayed(initLastPlayed) - { - lastPlayed = initLastPlayed - } - function setAdaptationLogic(initAdaptationLogic) { adaptationLogic = initAdaptationLogic @@ -416,23 +407,11 @@ Rectangle { onPauseGraph:graphPanel.pauseTimer() onDownloadMPD: mpdList.downloadMpd() - onOpenMpd: { - lastPlayed = dashPlayer.getLastPlayed() - icn = dashPlayer.getIcn() - adaptationLogic = dashPlayer.getAdaptationLogic() - openMpd.enabled = true; - openMpd.opacity = 0.9 - enabled = false - } onOpenOptions: { - lastPlayed = dashPlayer.getLastPlayed() icn = dashPlayer.getIcn() adaptationLogic = dashPlayer.getAdaptationLogic() - icnPrefix = dashPlayer.getIcnPrefix() - httpPrefix = dashPlayer.getHttpPrefix() - icnSuffix = dashPlayer.getIcnSuffix() - httpSuffix = dashPlayer.getHttpSuffix() + videoURI = dashPlayer.getVideoURI() segmentBufferSize = dashPlayer.getSegmentBufferSize() rateAlpha = dashPlayer.getRateAlpha() bufferReservoirThreshold = dashPlayer.getBufferReservoirThreshold() @@ -555,30 +534,6 @@ Rectangle { } } - OpenMpd { - id: openMpd - enabled: false - objectName: "openMpd" - - - anchors.centerIn: root - - onCloseOpenMpd: { - control.uncheckOpenBtn(); - control.enabled = true; - enabled = false; - opacity = 0 - } - - onSaveAndPlayMpd: { - dashPlayer.setLastPlayed(newOpenMpd) - lastPlayed = newOpenMpd - console.log("SAVE AND PLAY THE MPD QUEEN\n") - console.log(adaptationLogic) - dashPlayer.downloadMPD(newOpenMpd, adaptationLogic, icn) - } - } - Options { id: options enabled: false @@ -614,23 +569,9 @@ Rectangle { icn = selectedIcn } - onSaveIcnPrefix: { - dashPlayer.setIcnPrefix(selectedIcnPrefix) - icnPrefix = selectedIcnPrefix - } - - onSaveHttpPrefix: { - dashPlayer.setHttpPrefix(selectedHttpPrefix) - httpPrefix = selectedHttpPrefix - } - onSaveIcnSuffix: { - dashPlayer.setIcnSuffix(selectedIcnSuffix) - icnSuffix = selectedIcnSuffix - } - - onSaveHttpSuffix: { - dashPlayer.setHttpSuffix(selectedHttpSuffix) - httpSuffix = selectedHttpSuffix + onSaveVideoURI: { + dashPlayer.setVideoURI(selectedVideoURI) + videoURI = selectedVideoURI } onSaveSegmentBufferSize: { diff --git a/viper.pro b/viper.pro index 257a0770..25ebd493 100644 --- a/viper.pro +++ b/viper.pro @@ -38,7 +38,7 @@ SOURCES += \ Adaptation/AdaptationLogicFactory.cpp \ Adaptation/AlwaysLowestLogic.cpp \ Adaptation/BufferBasedAdaptation.cpp \ - Adaptation/BufferBasedAdaptationWithRateBased.cpp \ + Adaptation/AdapTech.cpp \ Adaptation/BufferBasedThreeThresholdAdaptation.cpp \ Adaptation/Panda.cpp \ Adaptation/Bola.cpp \ @@ -119,7 +119,7 @@ HEADERS *= \ Adaptation/AdaptationLogicFactory.h \ Adaptation/AlwaysLowestLogic.h \ Adaptation/BufferBasedAdaptation.h \ - Adaptation/BufferBasedAdaptationWithRateBased.h \ + Adaptation/AdapTech.h \ Adaptation/BufferBasedThreeThresholdAdaptation.h \ Adaptation/IAdaptationLogic.h \ Adaptation/Panda.h \ diff --git a/viper.qrc b/viper.qrc index 31b73a2d..8fb26e79 100644 --- a/viper.qrc +++ b/viper.qrc @@ -20,9 +20,6 @@ qml/images/repeat-selected.png qml/images/fullscreen.png qml/images/fullscreen-selected.png - qml/images/open-selected.png - qml/images/open.png - qml/Viper/OpenMpd.qml qml/Viper/Options.qml qml/images/options-selected.png qml/images/options.png -- cgit 1.2.3-korg