Fixed real-time playback of VoD streams that do not start at a zero timestamp

This commit is contained in:
Thulinma 2016-07-07 22:31:11 +02:00
parent 5c5ab6c058
commit c78cbc22ea

View file

@ -455,7 +455,6 @@ namespace Mist {
/// Prepares all tracks from selectedTracks for seeking to the specified ms position. /// Prepares all tracks from selectedTracks for seeking to the specified ms position.
void Output::seek(unsigned long long pos){ void Output::seek(unsigned long long pos){
sought = true; sought = true;
firstTime = Util::getMS() - pos;
if (!isInitialized){ if (!isInitialized){
initialize(); initialize();
} }
@ -471,6 +470,7 @@ namespace Mist {
seek(*it, pos); seek(*it, pos);
} }
} }
firstTime = Util::getMS() - buffer.begin()->time;
} }
bool Output::seek(unsigned int tid, unsigned long long pos, bool getNextKey){ bool Output::seek(unsigned int tid, unsigned long long pos, bool getNextKey){
@ -603,7 +603,7 @@ namespace Mist {
//slow down processing, if real time speed is wanted //slow down processing, if real time speed is wanted
if (realTime){ if (realTime){
while (thisPacket.getTime() > (((Util::getMS() - firstTime)*1000)+maxSkipAhead)/realTime) { while (thisPacket.getTime() > (((Util::getMS() - firstTime)*1000)+maxSkipAhead)/realTime && config->is_active && myConn) {
Util::sleep(std::min(thisPacket.getTime() - (((Util::getMS() - firstTime)*1000)+minSkipAhead)/realTime, 1000llu)); Util::sleep(std::min(thisPacket.getTime() - (((Util::getMS() - firstTime)*1000)+minSkipAhead)/realTime, 1000llu));
stats(); stats();
} }