Fixed live track deletion on viewer timeout.

This commit is contained in:
ozzay 2014-08-25 13:32:43 +02:00 committed by Thulinma
parent 1a91c743db
commit 98e2583b4e

View file

@ -107,7 +107,7 @@ namespace Mist {
} }
int bufConnOffset = trackMap.size(); int bufConnOffset = trackMap.size();
DEBUG_MSG(DLVL_DEVEL, "Starting negotiation for incoming track %d, at offset %d", tid, bufConnOffset); DEBUG_MSG(DLVL_DEVEL, "Starting negotiation for incoming track %d, at offset %d", tid, bufConnOffset);
memset(tmp + 6 * bufConnOffset, 0, 6); memset(tmp + 6 * bufConnOffset, 0, 4);
tmp[6 * bufConnOffset] = 0x80; tmp[6 * bufConnOffset] = 0x80;
tmp[6 * bufConnOffset + 4] = 0xFF; tmp[6 * bufConnOffset + 4] = 0xFF;
tmp[6 * bufConnOffset + 5] = 0xFF; tmp[6 * bufConnOffset + 5] = 0xFF;
@ -215,7 +215,6 @@ namespace Mist {
bookKeeping[tNum].curOffset += tmp.size(); bookKeeping[tNum].curOffset += tmp.size();
DEBUG_MSG(DLVL_WARN, "Can't buffer frame on page %d, track %llu, time %lld, keyNum %d, offset %llu", pageNum, tNum, pack["time"].asInt(), bookKeeping[tNum].pageNum + bookKeeping[tNum].keyNum, bookKeeping[tNum].curOffset); DEBUG_MSG(DLVL_WARN, "Can't buffer frame on page %d, track %llu, time %lld, keyNum %d, offset %llu", pageNum, tNum, pack["time"].asInt(), bookKeeping[tNum].pageNum + bookKeeping[tNum].keyNum, bookKeeping[tNum].curOffset);
} }
playerConn.keepAlive();
} }
@ -635,7 +634,7 @@ namespace Mist {
} }
buffer.insert(nxt); buffer.insert(nxt);
} }
playerConn.keepAlive(); stats();
} }
void Output::stats(){ void Output::stats(){
@ -671,22 +670,32 @@ namespace Mist {
return; return;
} }
} }
for (std::set<unsigned long>::iterator it = selectedTracks.begin(); it != selectedTracks.end() && tNum < 5; it++){ if (trackMap.size()){
int tId = *it; for (std::map<int, int>::iterator it = trackMap.begin(); it != trackMap.end() && tNum < 5; it++){
if (trackMap.count(tId)){ int tId = it->second;
tId = trackMap[tId]; char * thisData = playerConn.getData() + (6 * tNum);
thisData[0] = ((tId >> 24) & 0xFF);
thisData[1] = ((tId >> 16) & 0xFF);
thisData[2] = ((tId >> 8) & 0xFF);
thisData[3] = ((tId) & 0xFF);
thisData[4] = 0xFF;
thisData[5] = 0xFF;
tNum ++;
}
}else{
for (std::set<unsigned long>::iterator it = selectedTracks.begin(); it != selectedTracks.end() && tNum < 5; it++){
int tId = *it;
char * thisData = playerConn.getData() + (6 * tNum);
thisData[0] = ((tId >> 24) & 0xFF);
thisData[1] = ((tId >> 16) & 0xFF);
thisData[2] = ((tId >> 8) & 0xFF);
thisData[3] = ((tId) & 0xFF);
thisData[4] = ((nxtKeyNum[tId] >> 8) & 0xFF);
thisData[5] = ((nxtKeyNum[tId]) & 0xFF);
tNum ++;
} }
char thisData[6];
thisData[0] = ((tId >> 24) & 0xFF);
thisData[1] = ((tId >> 16) & 0xFF);
thisData[2] = ((tId >> 8) & 0xFF);
thisData[3] = ((tId) & 0xFF);
thisData[4] = ((nxtKeyNum[tId] >> 8) & 0xFF);
thisData[5] = ((nxtKeyNum[tId]) & 0xFF);
memcpy(playerConn.getData() + (6 * tNum), thisData, 6);
tNum ++;
playerConn.keepAlive();
} }
playerConn.keepAlive();
if (tNum >= 5){ if (tNum >= 5){
DEBUG_MSG(DLVL_WARN, "Too many tracks selected, using only first 5"); DEBUG_MSG(DLVL_WARN, "Too many tracks selected, using only first 5");
} }