Speed optimizes:
- MP4 output optimizations - DTSC::Meta::getPageNumberForTime speedup - RelAccX class speedup - Generic output optimizations
This commit is contained in:
parent
b8ba101a55
commit
027bd5f9da
8 changed files with 339 additions and 169 deletions
11
lib/dtsc.cpp
11
lib/dtsc.cpp
|
@ -2964,10 +2964,13 @@ namespace DTSC{
|
|||
/// If the timestamp is not available, returns the closest page number that is.
|
||||
size_t Meta::getPageNumberForTime(uint32_t idx, uint64_t time) const{
|
||||
const Util::RelAccX &pages = tracks.at(idx).pages;
|
||||
size_t res = pages.getStartPos();
|
||||
for (size_t i = pages.getStartPos(); i < pages.getEndPos(); ++i){
|
||||
if (pages.getInt("avail", i) == 0){continue;}
|
||||
if (pages.getInt("firsttime", i) > time){break;}
|
||||
Util::RelAccXFieldData avail = pages.getFieldData("avail");
|
||||
Util::RelAccXFieldData firsttime = pages.getFieldData("firsttime");
|
||||
uint32_t res = pages.getStartPos();
|
||||
uint64_t endPos = pages.getEndPos();
|
||||
for (uint64_t i = res; i < endPos; ++i){
|
||||
if (pages.getInt(avail, i) == 0){continue;}
|
||||
if (pages.getInt(firsttime, i) > time){break;}
|
||||
res = i;
|
||||
}
|
||||
return pages.getInt("firstkey", res);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue