aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjsamain <jsamain@cisco.com>2019-05-27 18:59:35 +0200
committerjsamain <jsamain@cisco.com>2019-05-27 18:59:35 +0200
commit2a876fc0d7986dc1ecb169bdc41972fe0f33d0dd (patch)
tree4a907472bfbe31e3fa75e3291282af27d6ba6956
parent6dd3a9e9f88d7ef36707dad09f16685944aa182c (diff)
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 <jsamain@cisco.com>
-rw-r--r--Common/Config.cpp17
-rw-r--r--Common/Config.h4
-rw-r--r--Input/DASHManager.cpp23
-rw-r--r--Input/DASHManager.h3
-rw-r--r--Input/DASHReceiver.cpp7
-rw-r--r--Input/DASHReceiver.h3
-rw-r--r--Input/ICNConnectionConsumerApi.cpp7
-rw-r--r--Input/ICNConnectionConsumerApi.h3
-rw-r--r--Managers/MultimediaManager.cpp11
-rw-r--r--Managers/MultimediaManager.h2
-rw-r--r--Managers/MultimediaStream.cpp7
-rw-r--r--Managers/MultimediaStream.h3
-rw-r--r--UI/DASHPlayer.cpp30
-rw-r--r--UI/DASHPlayer.h5
-rw-r--r--main.cpp2
-rwxr-xr-xqml/Viper/Options.qml33
-rwxr-xr-xqml/Viper/main.qml7
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<MediaObject>(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<MediaObject> *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<double, std::ratio<1, 1> >;
-DASHReceiver::DASHReceiver (viper::managers::StreamType type, MPDWrapper *mpdWrapper, IDASHReceiverObserver *obs, Buffer<MediaObject> *buffer, uint32_t bufferSize, bool icnEnabled, double icnAlpha, float beta, float drop) :
+DASHReceiver::DASHReceiver (viper::managers::StreamType type, MPDWrapper *mpdWrapper, IDASHReceiverObserver *obs, Buffer<MediaObject> *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<MediaObject> *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<MediaObject> *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<std::string, MediaObject*> 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<double, std::ratio<1, 1> >;
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<IStreamObserver *> 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<QObject*>(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