bool WebMBufferedState::GetOffsetForTime(uint64_t aTime, int64_t* aOffset) { ReentrantMonitorAutoEnter mon(mReentrantMonitor); uint64_t time = aTime; if (time > 0) { time = time - 1; } uint32_t idx = mTimeMapping.IndexOfFirstElementGt(time, TimeComparator()); if (idx == mTimeMapping.Length()) { return false; } *aOffset = mTimeMapping[idx].mSyncOffset; return true; }
bool WebMBufferedState::GetOffsetForTime(uint64_t aTime, int64_t* aOffset) { ReentrantMonitorAutoEnter mon(mReentrantMonitor); if(mTimeMapping.IsEmpty()) { return false; } uint64_t time = aTime; if (time > 0) { time = time - 1; } uint32_t idx = mTimeMapping.IndexOfFirstElementGt(time, TimeComparator()); if (idx == mTimeMapping.Length()) { // Clamp to end *aOffset = mTimeMapping[mTimeMapping.Length() - 1].mSyncOffset; } else { // Idx is within array or has been clamped to start *aOffset = mTimeMapping[idx].mSyncOffset; } return true; }