From 2a876fc0d7986dc1ecb169bdc41972fe0f33d0dd Mon Sep 17 00:00:00 2001 From: jsamain Date: Mon, 27 May 2019 18:59:35 +0200 Subject: Update to be compliant with [HICN-206] Customize first part of the name for HTTP. Added the -P option to set the IPv6 first word of the name. Change-Id: I321b22450d0efee713ddefef7405cf46ee381369 Signed-off-by: jsamain --- Common/Config.cpp | 17 +++++++++++++++++ Common/Config.h | 4 ++++ Input/DASHManager.cpp | 23 ++++++++++++----------- Input/DASHManager.h | 3 ++- Input/DASHReceiver.cpp | 7 ++++--- Input/DASHReceiver.h | 3 ++- Input/ICNConnectionConsumerApi.cpp | 7 ++++--- Input/ICNConnectionConsumerApi.h | 3 ++- Managers/MultimediaManager.cpp | 11 ++++++++--- Managers/MultimediaManager.h | 2 ++ Managers/MultimediaStream.cpp | 7 ++++--- Managers/MultimediaStream.h | 3 ++- UI/DASHPlayer.cpp | 30 +++++++++++++++++++++++++++++- UI/DASHPlayer.h | 5 ++++- main.cpp | 2 +- qml/Viper/Options.qml | 33 +++++++++++++++++++++++++++++++++ qml/Viper/main.qml | 7 +++++++ 17 files changed, 137 insertions(+), 30 deletions(-) diff --git a/Common/Config.cpp b/Common/Config.cpp index 70b67765..b1a2ddfd 100644 --- a/Common/Config.cpp +++ b/Common/Config.cpp @@ -158,6 +158,7 @@ public: settings.beginGroup(QString::fromLatin1("backend")); settings.setValue(QString::fromLatin1("video_uri"), video_uri); + settings.setValue(QString::fromLatin1("v6FirstWord"), v6FirstWord); settings.setValue(QString::fromLatin1("segment_buffer_size"), segment_buffer_size); settings.endGroup(); @@ -283,6 +284,7 @@ public: QString frag_sample; QString frag_pp; QString video_uri; + QString v6FirstWord; qreal segment_buffer_size; QString last_played; QString adaptation_logic; @@ -522,6 +524,7 @@ void Config::reload() settings.beginGroup(QString::fromLatin1("backend")); setVideoURI(settings.value(QString::fromLatin1("video_uri"), QString::fromLatin1("http://webserver/sintel/mpd")).toString()); + setV6FirstWord(settings.value(QString::fromLatin1("v6FirstWord"), QString::fromLatin1("b001")).toString()); setSegmentBufferSize(settings.value(QString::fromLatin1("segment_buffer_size"), 20).toReal()); settings.endGroup(); @@ -1291,6 +1294,10 @@ QString Config::videoURI() const { return mpData->video_uri; } +QString Config::v6FirstWord() const +{ + return mpData->v6FirstWord; +} Config& Config::setVideoURI(const QString &text) { @@ -1302,6 +1309,16 @@ Config& Config::setVideoURI(const QString &text) return *this; } +Config& Config::setV6FirstWord(const QString &text) +{ + if (mpData->v6FirstWord == text) + return *this; + mpData->v6FirstWord = text; + Q_EMIT v6FirstWordChanged(); + Q_EMIT changed(); + return *this; +} + qreal Config::segmentBufferSize() const { return mpData->segment_buffer_size; diff --git a/Common/Config.h b/Common/Config.h index 059c6771..7f2bfd97 100644 --- a/Common/Config.h +++ b/Common/Config.h @@ -70,6 +70,7 @@ class COMMON_EXPORT Config : public QObject Q_PROPERTY(QString fragSample READ fragSample WRITE setFragSample NOTIFY fragSampleChanged) Q_PROPERTY(QString fragPostProcess READ fragPostProcess WRITE setFragPostProcess NOTIFY fragPostProcessChanged) Q_PROPERTY(QString videoURI READ videoURI WRITE setVideoURI NOTIFY videoURIChanged) + Q_PROPERTY(QString v6FirstWord READ v6FirstWord WRITE setV6FirstWord NOTIFY v6FirstWordChanged) Q_PROPERTY(qreal segmentBufferSize READ segmentBufferSize WRITE setSegmentBufferSize NOTIFY segmentBufferSizeChanged) Q_PROPERTY(QString adaptationLogic READ adaptationLogic WRITE setAdaptationLogic NOTIFY adaptationLogicChanged) @@ -266,6 +267,8 @@ public: QString fragPostProcess() const; Config& setVideoURI(const QString &value); QString videoURI() const; + Config& setV6FirstWord(const QString &value); + QString v6FirstWord() const; Config& setSegmentBufferSize(qreal value); qreal segmentBufferSize() const; Config& setAdaptationLogic(const QString &value); @@ -392,6 +395,7 @@ public: Q_SIGNAL void languageChanged(); Q_SIGNAL void historyChanged(); Q_SIGNAL void videoURIChanged(); + Q_SIGNAL void v6FirstWordChanged(); Q_SIGNAL void segmentBufferSizeChanged(); Q_SIGNAL void adaptationLogicChanged(); Q_SIGNAL void icnChanged(); diff --git a/Input/DASHManager.cpp b/Input/DASHManager.cpp index b3ff8305..5317b207 100644 --- a/Input/DASHManager.cpp +++ b/Input/DASHManager.cpp @@ -19,22 +19,23 @@ using namespace dash::network; using namespace dash::mpd; using namespace libdash::framework::mpd; -DASHManager::DASHManager(viper::managers::StreamType type, uint32_t maxCapacity, IDASHManagerObserver* stream, MPDWrapper* mpdWrapper, bool icnEnabled, double icnAlpha, bool nodecoding, float beta, float drop) : - readSegmentCount (0), - receiver (NULL), - multimediaStream (stream), - isRunning (false), - icn (icnEnabled), - icnAlpha (icnAlpha), - noDecoding (nodecoding), - beta (beta), - drop (drop) +DASHManager::DASHManager(viper::managers::StreamType type, uint32_t maxCapacity, IDASHManagerObserver* stream, MPDWrapper* mpdWrapper, bool icnEnabled, double icnAlpha, bool nodecoding, float beta, float drop, std::string v6FirstWord) : + readSegmentCount (0), + receiver (NULL), + multimediaStream (stream), + isRunning (false), + icn (icnEnabled), + icnAlpha (icnAlpha), + noDecoding (nodecoding), + beta (beta), + drop (drop), + v6FirstWord (v6FirstWord) { this->buffer = new Buffer(maxCapacity,libdash::framework::buffer::VIDEO); this->buffer->attachObserver(this); - this->receiver = new DASHReceiver(type, mpdWrapper, this, this->buffer, maxCapacity, this->isICN(), this->icnAlpha, this->beta, this->drop); + this->receiver = new DASHReceiver(type, mpdWrapper, this, this->buffer, maxCapacity, this->isICN(), this->icnAlpha, this->beta, this->drop, this->v6FirstWord); } DASHManager::~DASHManager() { diff --git a/Input/DASHManager.h b/Input/DASHManager.h index 4bd301e7..62c4bff0 100644 --- a/Input/DASHManager.h +++ b/Input/DASHManager.h @@ -36,7 +36,7 @@ namespace input class DASHManager : public IDASHReceiverObserver, public IBufferObserver { public: - DASHManager (viper::managers::StreamType type, uint32_t maxCapacity, IDASHManagerObserver *multimediaStream, libdash::framework::mpd::MPDWrapper *mpdWrapper, bool icnEnabled, double icnAlpha, bool nodecoding, float beta, float drop); + DASHManager (viper::managers::StreamType type, uint32_t maxCapacity, IDASHManagerObserver *multimediaStream, libdash::framework::mpd::MPDWrapper *mpdWrapper, bool icnEnabled, double icnAlpha, bool nodecoding, float beta, float drop, std::string v6FirstWord); virtual ~DASHManager (); bool start(); @@ -66,6 +66,7 @@ public: private: float beta; float drop; + std::string v6FirstWord; buffer::Buffer *buffer; DASHReceiver *receiver; uint32_t readSegmentCount; diff --git a/Input/DASHReceiver.cpp b/Input/DASHReceiver.cpp index 0d77bdf2..c5769b16 100644 --- a/Input/DASHReceiver.cpp +++ b/Input/DASHReceiver.cpp @@ -19,7 +19,7 @@ using namespace dash::mpd; using duration_in_seconds = std::chrono::duration >; -DASHReceiver::DASHReceiver (viper::managers::StreamType type, MPDWrapper *mpdWrapper, IDASHReceiverObserver *obs, Buffer *buffer, uint32_t bufferSize, bool icnEnabled, double icnAlpha, float beta, float drop) : +DASHReceiver::DASHReceiver (viper::managers::StreamType type, MPDWrapper *mpdWrapper, IDASHReceiverObserver *obs, Buffer *buffer, uint32_t bufferSize, bool icnEnabled, double icnAlpha, float beta, float drop, std::string v6FirstWord) : type (type), mpdWrapper (mpdWrapper), adaptationSetStream (NULL), @@ -42,6 +42,7 @@ DASHReceiver::DASHReceiver (viper::managers::StreamType type, MPDWrappe isLooping (false), beta (beta), drop (drop), + v6FirstWord (v6FirstWord), bufferingThread (NULL), mpdFetcherThread (NULL) { @@ -57,8 +58,8 @@ DASHReceiver::DASHReceiver (viper::managers::StreamType type, MPDWrappe if(icn) { - this->conn = new ICNConnectionConsumerApi(this->icnAlpha, this->beta, this->drop); - this->initConn = new ICNConnectionConsumerApi(this->icnAlpha, this->beta, this->drop); + this->conn = new ICNConnectionConsumerApi(this->icnAlpha, this->beta, this->drop, this->v6FirstWord); + this->initConn = new ICNConnectionConsumerApi(this->icnAlpha, this->beta, this->drop, this->v6FirstWord); } InitializeCriticalSection(&this->monitorMutex); InitializeCriticalSection(&this->monitorPausedMutex); diff --git a/Input/DASHReceiver.h b/Input/DASHReceiver.h index e5b48adf..545ecb70 100644 --- a/Input/DASHReceiver.h +++ b/Input/DASHReceiver.h @@ -48,7 +48,7 @@ class MediaObject; class DASHReceiver { public: - DASHReceiver(viper::managers::StreamType type, libdash::framework::mpd::MPDWrapper *mpdWrapper, IDASHReceiverObserver *obs, buffer::Buffer *buffer, uint32_t bufferSize, bool icnEnabled, double icnAlpha, float beta, float drop); + DASHReceiver(viper::managers::StreamType type, libdash::framework::mpd::MPDWrapper *mpdWrapper, IDASHReceiverObserver *obs, buffer::Buffer *buffer, uint32_t bufferSize, bool icnEnabled, double icnAlpha, float beta, float drop, std::string v6FirstWord); virtual ~DASHReceiver(); bool Start(); @@ -84,6 +84,7 @@ public: private: float beta; float drop; + std::string v6FirstWord; bool withFeedBack; bool isBufferBased; std::map initSegments; diff --git a/Input/ICNConnectionConsumerApi.cpp b/Input/ICNConnectionConsumerApi.cpp index a7f52b44..c93e9ed4 100644 --- a/Input/ICNConnectionConsumerApi.cpp +++ b/Input/ICNConnectionConsumerApi.cpp @@ -36,14 +36,15 @@ using duration_in_seconds = std::chrono::duration >; namespace libdash { namespace framework { namespace input { -ICNConnectionConsumerApi::ICNConnectionConsumerApi(double alpha, float beta, float drop) : +ICNConnectionConsumerApi::ICNConnectionConsumerApi(double alpha, float beta, float drop, std::string v6FirstWord) : m_first(1), m_isFinished(false), sizeDownloaded (0), cumulativeBytesReceived(0), icnAlpha(alpha), beta(beta), - drop(drop) + drop(drop), + v6FirstWord(v6FirstWord) { gamma = 1; this->speed = 0.0; @@ -146,7 +147,7 @@ int ICNConnectionConsumerApi::Read(uint8_t *data, size_t len) {"User-Agent", "higet/1.0"}, {"Connection", "Keep-Alive"}}; std::string s(m_name.c_str()); - hTTPClientConnection->get(s, headers); + hTTPClientConnection->get(s, headers, {}, nullptr, nullptr, this->v6FirstWord); response = hTTPClientConnection->response(); this->res = true; this->dataPos = 0; diff --git a/Input/ICNConnectionConsumerApi.h b/Input/ICNConnectionConsumerApi.h index c05c5244..c12e215f 100644 --- a/Input/ICNConnectionConsumerApi.h +++ b/Input/ICNConnectionConsumerApi.h @@ -64,7 +64,7 @@ class ICNConnectionConsumerApi : public IICNConnection, public libl4::transport: public: - ICNConnectionConsumerApi(double alpha, float beta, float drop); + ICNConnectionConsumerApi(double alpha, float beta, float drop, std::string v6FirstWord); virtual ~ICNConnectionConsumerApi(); virtual void Init(dash::network::IChunk *chunk); @@ -95,6 +95,7 @@ private: libl4::http::HTTPResponse response; float beta; float drop; + std::string v6FirstWord; uint64_t i_chunksize; int i_lifetime; int i_missed_co; diff --git a/Managers/MultimediaManager.cpp b/Managers/MultimediaManager.cpp index 30f8427a..81c5514e 100644 --- a/Managers/MultimediaManager.cpp +++ b/Managers/MultimediaManager.cpp @@ -99,7 +99,7 @@ bool MultimediaManager::initICN(const std::string& url) { this->url = url; EnterCriticalSection(&this->monitorMutex); - this->icnConn = new libdash::framework::input::ICNConnectionConsumerApi(20.0, this->beta, this->drop); + this->icnConn = new libdash::framework::input::ICNConnectionConsumerApi(20.0, this->beta, this->drop, this->v6FirstWord); icnConn->InitForMPD(url); int ret = 0; char * data = (char *)malloc(4096); @@ -394,14 +394,14 @@ void MultimediaManager::notifyAudioBufferObservers(uint32_t fillstateInPercent) void MultimediaManager::initVideoRendering(uint32_t offset) { - this->videoStream = new MultimediaStream(viper::managers::VIDEO, this->mpdWrapper, this->segmentBufferSize, this->isICN(), this->icnAlpha, this->noDecoding, this->beta, this->drop); + this->videoStream = new MultimediaStream(viper::managers::VIDEO, this->mpdWrapper, this->segmentBufferSize, this->isICN(), this->icnAlpha, this->noDecoding, this->beta, this->drop, this->v6FirstWord); this->videoStream->attachStreamObserver(this); this->videoStream->setPosition(offset); } void MultimediaManager::initAudioPlayback(uint32_t offset) { - this->audioStream = new MultimediaStream(viper::managers::AUDIO, this->mpdWrapper, this->segmentBufferSize, this->isICN(), this->icnAlpha, this->noDecoding, this->beta, this->drop); + this->audioStream = new MultimediaStream(viper::managers::AUDIO, this->mpdWrapper, this->segmentBufferSize, this->isICN(), this->icnAlpha, this->noDecoding, this->beta, this->drop, this->v6FirstWord); this->audioStream->attachStreamObserver(this); this->audioStream->setPosition(offset); } @@ -673,6 +673,11 @@ void MultimediaManager::setDrop(float drop) this->drop = drop; } +void MultimediaManager::setV6FirstWord(std::string v6FirstWord) +{ + this->v6FirstWord = v6FirstWord; +} + void MultimediaManager::fetchMPD() { if(this->icn) diff --git a/Managers/MultimediaManager.h b/Managers/MultimediaManager.h index ade2b767..926261a1 100644 --- a/Managers/MultimediaManager.h +++ b/Managers/MultimediaManager.h @@ -73,6 +73,7 @@ public: void setOffset (int offset); void setBeta (float beta); void setDrop (float drop); + void setV6FirstWord (std::string v6FirstWord); bool canPush (); void fetchMPD (); @@ -85,6 +86,7 @@ public: private: float beta; float drop; + std::string v6FirstWord; std::string downloadPath; int segmentBufferSize; ViperGui *viperGui; diff --git a/Managers/MultimediaStream.cpp b/Managers/MultimediaStream.cpp index 86cde35d..4b11da8a 100644 --- a/Managers/MultimediaStream.cpp +++ b/Managers/MultimediaStream.cpp @@ -18,7 +18,7 @@ using namespace libdash::framework::buffer; using namespace libdash::framework::mpd; using namespace dash::mpd; -MultimediaStream::MultimediaStream(StreamType type, MPDWrapper *mpdWrapper, uint32_t bufferSize, bool icnEnabled, double icnAlpha, bool nodecoding, float beta, float drop) : +MultimediaStream::MultimediaStream(StreamType type, MPDWrapper *mpdWrapper, uint32_t bufferSize, bool icnEnabled, double icnAlpha, bool nodecoding, float beta, float drop, std::string v6FirstWord) : type (type), segmentBufferSize (bufferSize), dashManager (NULL), @@ -27,7 +27,8 @@ MultimediaStream::MultimediaStream(StreamType type, MPDWrapper *mpdWrapper, uint icnAlpha (icnAlpha), noDecoding (nodecoding), beta (beta), - drop (drop) + drop (drop), + v6FirstWord (v6FirstWord) { this->init(); } @@ -69,7 +70,7 @@ void MultimediaStream::setPositionInMsec(uint32_t milliSecs) void MultimediaStream::init() { - this->dashManager = new DASHManager(this->type, this->segmentBufferSize, this, this->mpdWrapper, this->isICN(), this->icnAlpha, this->noDecoding, this->beta, this->drop); + this->dashManager = new DASHManager(this->type, this->segmentBufferSize, this, this->mpdWrapper, this->isICN(), this->icnAlpha, this->noDecoding, this->beta, this->drop, this->v6FirstWord); } bool MultimediaStream::start() diff --git a/Managers/MultimediaStream.h b/Managers/MultimediaStream.h index 454cca23..e1ab22c1 100644 --- a/Managers/MultimediaStream.h +++ b/Managers/MultimediaStream.h @@ -44,7 +44,7 @@ namespace managers class MultimediaStream : public libdash::framework::input::IDASHManagerObserver, public libdash::framework::buffer::IBufferObserver { public: - MultimediaStream(StreamType type, libdash::framework::mpd::MPDWrapper *mpdWrapper, uint32_t segmentBufferSize, bool icnEnabled, double icnAlpha, bool nodecoding, float beta, float drop); + MultimediaStream(StreamType type, libdash::framework::mpd::MPDWrapper *mpdWrapper, uint32_t segmentBufferSize, bool icnEnabled, double icnAlpha, bool nodecoding, float beta, float drop, std::string v6FirstWord); virtual ~MultimediaStream(); bool start(); @@ -80,6 +80,7 @@ public: private: float beta; float drop; + std::string v6FirstWord; std::vector observers; libdash::framework::mpd::MPDWrapper *mpdWrapper; libdash::framework::adaptation::IAdaptationLogic *logic; diff --git a/UI/DASHPlayer.cpp b/UI/DASHPlayer.cpp index efb85620..c53cbed7 100644 --- a/UI/DASHPlayer.cpp +++ b/UI/DASHPlayer.cpp @@ -21,7 +21,7 @@ using namespace viper::managers; using namespace dash::mpd; using namespace std; -DASHPlayer::DASHPlayer(ViperGui &gui, Config *config) : +DASHPlayer::DASHPlayer(int argc, char* argv[], ViperGui &gui, Config *config) : gui (&gui), config (config) { @@ -36,12 +36,28 @@ DASHPlayer::DASHPlayer(ViperGui &gui, Config *config) : this->multimediaManager = new MultimediaManager(this->gui, this->parametersAdaptation->segmentBufferSize, config->getConfigPath().toStdString() + QString::fromLatin1("/").toStdString()); this->multimediaManager->setBeta(config->beta()); this->multimediaManager->setDrop(config->drop()); + this->multimediaManager->setV6FirstWord(config->v6FirstWord().toStdString()); connect(this->gui->getVideoPlayer(), SIGNAL(positionChanged(qint64)), SLOT(updateSlider(qint64))); connect(this->gui->getVideoPlayer(), SIGNAL(stateChanged(QtAV::AVPlayer::State)), SLOT(manageGraph(QtAV::AVPlayer::State))); connect(this->gui->getVideoPlayer(), SIGNAL(error(QtAV::AVError)), this, SLOT(error(QtAV::AVError))); this->multimediaManager->attachManagerObserver(this); this->mpdWrapper = new MPDWrapper(NULL); this->multimediaManager->setMPDWrapper(this->mpdWrapper); + + //TODO adding a proper parsing function to handle command line arguments + + int index = 1; + + while(index < argc) + { + if(!strcmp(argv[index], "-P") && index+1 < argc) + { + this->setV6FirstWord(argv[index+1]); + index += 2; + } + } + + } DASHPlayer::~DASHPlayer() @@ -416,6 +432,7 @@ void DASHPlayer::reloadParameters() this->beta = config->beta(); this->drop = config->drop(); this->videoURI = config->videoURI().toStdString(); + this->v6FirstWord = config->v6FirstWord().toStdString(); this->alpha = config->alpha(); this->repeat = config->repeat(); this->parametersAdaptation = (struct AdaptationParameters *)malloc(sizeof(struct AdaptationParameters)); @@ -467,11 +484,22 @@ QString DASHPlayer::getVideoURI() return config->videoURI(); } +QString DASHPlayer::getV6FirstWord() +{ + return config->v6FirstWord(); +} + void DASHPlayer::setVideoURI(QString videoURI) { config->setVideoURI(videoURI); } +void DASHPlayer::setV6FirstWord(QString v6FirstWord) +{ + config->setV6FirstWord(v6FirstWord); + this->multimediaManager->setV6FirstWord(v6FirstWord.toStdString()); +} + qreal DASHPlayer::getAlpha() { return config->alpha(); diff --git a/UI/DASHPlayer.h b/UI/DASHPlayer.h index c85c2351..7b6274f6 100644 --- a/UI/DASHPlayer.h +++ b/UI/DASHPlayer.h @@ -45,7 +45,7 @@ class DASHPlayer : public IDASHPlayerGuiObserver, public managers::IMultimediaMa Q_OBJECT public: - DASHPlayer(ViperGui& gui, Config *config); + DASHPlayer(int argc, char* argv[], ViperGui& gui, Config *config); virtual ~DASHPlayer(); virtual void onSettingsChanged(int period, int videoAdaptationSet, int videoRepresentation, int audioAdaptationSet, int audioRepresentation); @@ -74,7 +74,9 @@ public: Q_INVOKABLE bool getIcn(); Q_INVOKABLE void setIcn(bool icn); Q_INVOKABLE QString getVideoURI(); + Q_INVOKABLE QString getV6FirstWord(); Q_INVOKABLE void setVideoURI(QString videoURI); + Q_INVOKABLE void setV6FirstWord(QString v6FirstWord); Q_INVOKABLE qreal getAlpha(); Q_INVOKABLE void setAlpha(qreal alpha); Q_INVOKABLE qreal getSegmentBufferSize(); @@ -174,6 +176,7 @@ private: const char *url; bool icn; std::string videoURI; + std::string v6FirstWord; double alpha; struct libdash::framework::adaptation::AdaptationParameters *parametersAdaptation; libdash::framework::adaptation::LogicType adaptLogic; diff --git a/main.cpp b/main.cpp index b91b2261..a1f2969e 100644 --- a/main.cpp +++ b/main.cpp @@ -213,7 +213,7 @@ int main(int argc, char *argv[]) gui.setPlayButton(viewer.rootObject()->findChild(QStringLiteral("playBtn"))); gui.setGraphDataSource(&graphDataSource); gui.setRootObject(viewer.rootObject()); - DASHPlayer dashPlayer(gui, &Config::instance()); + DASHPlayer dashPlayer(argc, argv, gui, &Config::instance()); engine->rootContext()->setContextProperty("dashPlayer",&dashPlayer); QMetaObject::invokeMethod(viewer.rootObject(), "initGraph", Q_ARG(QVariant, (&Config::instance())->graph())); QMetaObject::invokeMethod(viewer.rootObject(), "initRepeat", Q_ARG(QVariant, (&Config::instance())->repeat())); diff --git a/qml/Viper/Options.qml b/qml/Viper/Options.qml index f8ed0909..3f8d7ab6 100755 --- a/qml/Viper/Options.qml +++ b/qml/Viper/Options.qml @@ -25,6 +25,7 @@ Rectangle { signal saveAdaptationLogic(string selectedAdaptationLogic, int adaptationLogicKey) signal saveIcn(bool selectedIcn) signal saveVideoURI(string selectedVideoURI) + signal saveV6FirstWord(string selectedV6FirstWord) signal saveSegmentBufferSize(real selectedSegmentBufferSize) signal saveRateAlpha(real selectedRateAlpha) signal saveBufferReservoirThreshold(real selectedBufferReservoirThreshold) @@ -434,6 +435,37 @@ Rectangle { text: videoURI } } + Item { + id: itemv6Prefix + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + anchors.rightMargin: parent.width/2 + anchors.topMargin: Utils.scaled(18) + 2*heightRow + Label { + text: "IPv6 First Word:" + id: labelv6Prefix + color: "white" + anchors.top: parent.top + anchors.right: textInputv6FirstWord.left + anchors.rightMargin: Utils.scaled(5) + anchors.topMargin: (textInputv6Prefix.height - height)/2 + font.bold: true + font.pixelSize: Utils.scaled(10); + } + + TextInput { + id: textInputv6FirstWord + z: parent.z + 1 + width: parent.width/4*3 + anchors.top: parent.bottom + anchors.left: parent.left + anchors.leftMargin: Utils.scaled(200) + font.pixelSize: Utils.scaled(20) + color: "white" + text: v6FirstWord + } + } Item { id: itemSegmentBufferSize @@ -1582,6 +1614,7 @@ Rectangle { saveAdaptationLogic(adaptationLogicModel.get(comboAdaptationSetList.currentIndex).text, comboAdaptationSetList.currentIndex); saveIcn(switchIcn.checked) saveVideoURI(textInputVideoURI.text) + saveV6FirstWord(textInputv6FirstWord.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 e170931b..1b645e35 100755 --- a/qml/Viper/main.qml +++ b/qml/Viper/main.qml @@ -37,6 +37,7 @@ Rectangle { property bool buffering: false property string adaptationLogic: "" property string videoURI: "" + property string v6FirstWord: "" property real alpha: 0 property real segmentBufferSize: 0 property bool icn: false @@ -412,6 +413,7 @@ Rectangle { icn = dashPlayer.getIcn() adaptationLogic = dashPlayer.getAdaptationLogic() videoURI = dashPlayer.getVideoURI() + v6FirstWord = dashPlayer.getV6FirstWord() segmentBufferSize = dashPlayer.getSegmentBufferSize() rateAlpha = dashPlayer.getRateAlpha() bufferReservoirThreshold = dashPlayer.getBufferReservoirThreshold() @@ -574,6 +576,11 @@ Rectangle { videoURI = selectedVideoURI } + onSaveV6FirstWord: { + dashPlayer.setV6FirstWord(selectedV6FirstWord) + v6FirstWord = selectedV6FirstWord + } + onSaveSegmentBufferSize: { dashPlayer.setSegmentBufferSize(selectedSegmentBufferSize) segmentBufferSize = selectedSegmentBufferSize -- cgit 1.2.3-korg