Fixed various live issues.
This commit is contained in:
parent
a3ae7c365f
commit
a001feafca
2 changed files with 11 additions and 4 deletions
|
@ -421,8 +421,9 @@ void Controller::parseStatistics(char * data, size_t len, unsigned int id){
|
||||||
/// Returns true if this stream has at least one connected client.
|
/// Returns true if this stream has at least one connected client.
|
||||||
bool Controller::hasViewers(std::string streamName){
|
bool Controller::hasViewers(std::string streamName){
|
||||||
if (sessions.size()){
|
if (sessions.size()){
|
||||||
|
long long currTime = Util::epoch();
|
||||||
for (std::map<sessIndex, statSession>::iterator it = sessions.begin(); it != sessions.end(); it++){
|
for (std::map<sessIndex, statSession>::iterator it = sessions.begin(); it != sessions.end(); it++){
|
||||||
if (it->first.streamName == streamName){
|
if (it->first.streamName == streamName && it->second.hasDataFor(currTime)){
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -390,7 +390,7 @@ namespace Mist {
|
||||||
long amountKey = ntohl((((long long int*)indexPages[trackId].mapped)[i]) & 0xFFFFFFFF);
|
long amountKey = ntohl((((long long int*)indexPages[trackId].mapped)[i]) & 0xFFFFFFFF);
|
||||||
if (amountKey == 0){continue;}
|
if (amountKey == 0){continue;}
|
||||||
long tmpKey = ntohl(((((long long int*)indexPages[trackId].mapped)[i]) >> 32) & 0xFFFFFFFF);
|
long tmpKey = ntohl(((((long long int*)indexPages[trackId].mapped)[i]) >> 32) & 0xFFFFFFFF);
|
||||||
if (tmpKey <= keyNum && (tmpKey + amountKey) > keyNum){
|
if (tmpKey <= keyNum && ((tmpKey?tmpKey:1) + amountKey) > keyNum){
|
||||||
return tmpKey;
|
return tmpKey;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -629,7 +629,7 @@ namespace Mist {
|
||||||
buffer.insert(nxt);
|
buffer.insert(nxt);
|
||||||
}else{
|
}else{
|
||||||
//after ~10 seconds, give up and drop the track.
|
//after ~10 seconds, give up and drop the track.
|
||||||
DEBUG_MSG(DLVL_DEVEL, "Empty packet on track %u - could not reload, dropping track.", nxt.tid);
|
DEBUG_MSG(DLVL_DEVEL, "Empty packet on track %u @ key %lu (next=%d) - could not reload, dropping track.", nxt.tid, nxtKeyNum[nxt.tid]+1, nextPage);
|
||||||
}
|
}
|
||||||
//keep updating the metadata at 250ms intervals while waiting for more data
|
//keep updating the metadata at 250ms intervals while waiting for more data
|
||||||
Util::sleep(250);
|
Util::sleep(250);
|
||||||
|
@ -661,7 +661,13 @@ namespace Mist {
|
||||||
if (currentPacket.getTime() != nxt.time && nxt.time){
|
if (currentPacket.getTime() != nxt.time && nxt.time){
|
||||||
DEBUG_MSG(DLVL_MEDIUM, "ACTUALLY Loaded track %ld (next=%lu), %llu ms", currentPacket.getTrackId(), nxtKeyNum[nxt.tid], currentPacket.getTime());
|
DEBUG_MSG(DLVL_MEDIUM, "ACTUALLY Loaded track %ld (next=%lu), %llu ms", currentPacket.getTrackId(), nxtKeyNum[nxt.tid], currentPacket.getTime());
|
||||||
}
|
}
|
||||||
nxtKeyNum[nxt.tid] = getKeyForTime(nxt.tid, currentPacket.getTime());
|
if (currentPacket.getFlag("keyframe")){
|
||||||
|
if (myMeta.live){
|
||||||
|
updateMeta();
|
||||||
|
}
|
||||||
|
nxtKeyNum[nxt.tid] = getKeyForTime(nxt.tid, currentPacket.getTime());
|
||||||
|
DEBUG_MSG(DLVL_VERYHIGH, "Track %u @ %llums = key %lu", nxt.tid, currentPacket.getTime(), nxtKeyNum[nxt.tid]);
|
||||||
|
}
|
||||||
emptyCount = 0;
|
emptyCount = 0;
|
||||||
}
|
}
|
||||||
nxt.offset += currentPacket.getDataLen();
|
nxt.offset += currentPacket.getDataLen();
|
||||||
|
|
Loading…
Add table
Reference in a new issue