aboutsummaryrefslogtreecommitdiffstats
path: root/Managers
diff options
context:
space:
mode:
authorJacques SAMAIN <jsamain+fdio@cisco.com>2018-06-01 19:56:33 +0200
committerJacques SAMAIN <jsamain+fdio@cisco.com>2018-06-04 12:16:30 +0000
commit872b2e96a111d6da5f821a6dc61b923f9913b3f3 (patch)
tree9dbae9fb4cf3ed4a35a0698e0cf7f4b446ffeedb /Managers
parent6120adcbd955c072f560ba3918ed566088374fa0 (diff)
Several corrections:
*effectively take into account live MPD *Fix several bugs Change-Id: I9b925f222653d2d196b09b4e96cb15119ec8af44 Signed-off-by: Jacques SAMAIN <jsamain+fdio@cisco.com>
Diffstat (limited to 'Managers')
-rw-r--r--Managers/IStreamObserver.h1
-rw-r--r--Managers/MultimediaManager.cpp37
-rw-r--r--Managers/MultimediaManager.h2
-rw-r--r--Managers/MultimediaStream.cpp8
-rw-r--r--Managers/MultimediaStream.h1
5 files changed, 11 insertions, 38 deletions
diff --git a/Managers/IStreamObserver.h b/Managers/IStreamObserver.h
index 31baca68..1d628d51 100644
--- a/Managers/IStreamObserver.h
+++ b/Managers/IStreamObserver.h
@@ -38,6 +38,7 @@ public:
virtual void notifyQualityDownloading(uint32_t quality) = 0;
virtual bool canPush() = 0;
virtual int getBufferLevel() = 0;
+ virtual void fetchMPD() = 0;
};
}
}
diff --git a/Managers/MultimediaManager.cpp b/Managers/MultimediaManager.cpp
index 1b759f4b..30f8427a 100644
--- a/Managers/MultimediaManager.cpp
+++ b/Managers/MultimediaManager.cpp
@@ -41,8 +41,7 @@ MultimediaManager::MultimediaManager(ViperGui *viperGui, int segBufSize, std::st
eos (false),
playing (false),
noDecoding (nodecoding),
- mpdWrapper (NULL),
- mpdFetcherThread (NULL)
+ mpdWrapper (NULL)
{
InitializeCriticalSection (&this->monitorMutex);
InitializeCriticalSection (&this->monitorBufferMutex);
@@ -239,14 +238,6 @@ void MultimediaManager::start(bool icnEnabled, double icnAlpha, uint32_t nextOff
this->started = true;
this->playing = true;
- if(!strcmp(this->mpdWrapper->getType().c_str(), "dynamic"))
- {
- this->mpdFetcherThread = createThreadPortable(DoMPDFetching, this);
- if(this->mpdFetcherThread == NULL)
- {
- std::cout << "mpd Fetcher thread is NULL. Need to think of how to handle this?" << std::endl;
- }
- }
LeaveCriticalSection(&this->monitorMutex);
}
@@ -265,11 +256,6 @@ void MultimediaManager::stop()
Debug("VIDEO STOPPED\n");
this->mpdWrapper->reInit(viper::managers::StreamType::VIDEO);
this->mpdWrapper->reInit(viper::managers::StreamType::AUDIO);
- if(this->mpdFetcherThread != NULL)
- {
- JoinThread(this->mpdFetcherThread);
- destroyThreadPortable(this->mpdFetcherThread);
- }
}
void MultimediaManager::stopVideo()
@@ -706,24 +692,3 @@ float MultimediaManager::getSegmentDuration()
return this->segmentDuration;
}
-void* MultimediaManager::DoMPDFetching (void* data)
-{
- MultimediaManager *manager = (MultimediaManager*) data;
- uint32_t currTime = TimeResolver::getCurrentTimeInSec();
- uint32_t publishedTime = manager->mpdWrapper->getFetchTime();
-// To avoid clock synchronisation issues: using fetching time instead of publish time
-// uint32_t publishedTime = TimeResolver::getUTCDateTimeInSec(dashReceiver->mpdWrapper->getPublishTime());
- uint32_t periodUpdate = TimeResolver::getDurationInSec(manager->mpdWrapper->getMinimumUpdatePeriod());
- while(manager->isStarted())
- {
- while(manager->isStarted() && currTime < publishedTime + periodUpdate)
- {
- usleep(((publishedTime + periodUpdate) - currTime) * 1000000);
- currTime = TimeResolver::getCurrentTimeInSec();
- }
- manager->fetchMPD();
- publishedTime = manager->mpdWrapper->getFetchTime();
-// publishedTime = TimeResolver::getUTCDateTimeInSec(dashReceiver->mpdWrapper->getPublishTime());
- periodUpdate = TimeResolver::getDurationInSec(manager->mpdWrapper->getMinimumUpdatePeriod());
- }
-}
diff --git a/Managers/MultimediaManager.h b/Managers/MultimediaManager.h
index c00ff866..ade2b767 100644
--- a/Managers/MultimediaManager.h
+++ b/Managers/MultimediaManager.h
@@ -106,7 +106,6 @@ private:
double frameRate;
THREAD_HANDLE videoRendererHandle;
THREAD_HANDLE audioRendererHandle;
- THREAD_HANDLE mpdFetcherThread;
bool isVideoRendering;
bool isAudioRendering;
bool eos;
@@ -137,7 +136,6 @@ private:
void notifyAudioSegmentBufferObservers (uint32_t fillstateInPercent);
void updateMPD ();
void updateMPDICN ();
- static void* DoMPDFetching (void* manager);
};
}
}
diff --git a/Managers/MultimediaStream.cpp b/Managers/MultimediaStream.cpp
index f70eabfb..86cde35d 100644
--- a/Managers/MultimediaStream.cpp
+++ b/Managers/MultimediaStream.cpp
@@ -198,3 +198,11 @@ void MultimediaStream::notifyBufferChange(uint32_t bufferfill, int maxC)
{
this->dashManager->onBufferStateChanged(libdash::framework::buffer::VIDEO, bufferfill, maxC);
}
+
+void MultimediaStream::fetchMPD()
+{
+ for(size_t i=0; i < this->observers.size(); i++)
+ {
+ this->observers.at(i)->fetchMPD();
+ }
+}
diff --git a/Managers/MultimediaStream.h b/Managers/MultimediaStream.h
index 52a7ac9d..454cca23 100644
--- a/Managers/MultimediaStream.h
+++ b/Managers/MultimediaStream.h
@@ -75,6 +75,7 @@ public:
bool isICN();
void shouldAbort();
void setTargetDownloadingTime(double);
+ void fetchMPD();
private:
float beta;