Fixes for DTSC metadata handling

This commit is contained in:
Thulinma 2021-01-22 01:02:40 +01:00
parent f862263354
commit 63acbb1ddb
12 changed files with 235 additions and 71 deletions

View file

@ -1063,6 +1063,9 @@ namespace Mist{
for (uint32_t j = 0; j < endKey; j++){
uint64_t keyTime = keys.getTime(j);
if (newData){
if ((tPages.getEndPos() - tPages.getDeleted()) >= tPages.getRCount()){
meta.resizeTrack(*it, M.fragments(*it).getRCount(), M.keys(*it).getRCount(), M.parts(*it).getRCount(), tPages.getRCount() * 2, "not enough pages");
}
tPages.addRecords(1);
++pageNum;
tPages.setInt("firsttime", keyTime, pageNum);

View file

@ -366,8 +366,7 @@ namespace Mist{
}
}
// Alright, everything looks good, let's delete the key and possibly also fragment
meta.removeFirstKey(tid);
return true;
return meta.removeFirstKey(tid);
}
void inputBuffer::finish(){
@ -399,7 +398,7 @@ namespace Mist{
curPageNum.erase(tid);
INFO_MSG("Should remove track %zu", tid);
meta.refresh();
meta.reloadReplacedPagesIfNeeded();
meta.removeTrack(tid);
/*LTS-START*/
if (!M.getValidTracks().size()){
@ -412,7 +411,7 @@ namespace Mist{
}
void inputBuffer::removeUnused(){
meta.refresh();
meta.reloadReplacedPagesIfNeeded();
// first remove all tracks that have not been updated for too long
bool changed = true;
while (changed){
@ -456,7 +455,7 @@ namespace Mist{
streamName.c_str(), i, type.c_str(), codec.c_str(), firstms / 1000,
lastms / 1000, compareFirst / 1000, compareLast / 1000, bufferTime / 1000);
}
meta.refresh();
meta.reloadReplacedPagesIfNeeded();
removeTrack(i);
changed = true;
break;
@ -500,7 +499,7 @@ namespace Mist{
}
void inputBuffer::userLeadIn(){
meta.refresh();
meta.reloadReplacedPagesIfNeeded();
/*LTS-START*/
// Reload the configuration to make sure we stay up to date with changes through the api
if (Util::epoch() - lastReTime > 4){preRun();}
@ -529,7 +528,7 @@ namespace Mist{
void inputBuffer::userOnDisconnect(size_t id){
if (sourcePids.count(id)){
INFO_MSG("Disconnected track %zu", sourcePids[id]);
meta.refresh();
meta.reloadReplacedPagesIfNeeded();
removeTrack(sourcePids[id]);
sourcePids.erase(id);
}