media::TimeIntervals SourceBufferDecoder::GetBuffered() { media::TimeIntervals buffered = mReader->GetBuffered(); if (buffered.IsInvalid()) { return buffered; } // Adjust buffered range according to timestamp offset. buffered.Shift(media::TimeUnit::FromMicroseconds(mTimestampOffset)); if (!WasTrimmed()) { return buffered; } media::TimeInterval filter(media::TimeUnit::FromSeconds(0), media::TimeUnit::FromSeconds(mTrimmedOffset)); return buffered.Intersection(filter); }
nsresult SourceBufferDecoder::GetBuffered(dom::TimeRanges* aBuffered) { nsresult rv = mReader->GetBuffered(aBuffered); if (NS_FAILED(rv)) { return rv; } // Adjust buffered range according to timestamp offset. aBuffered->Shift((double)mTimestampOffset / USECS_PER_S); if (!WasTrimmed()) { return NS_OK; } nsRefPtr<dom::TimeRanges> tr = new dom::TimeRanges(); tr->Add(0, mTrimmedOffset); aBuffered->Intersection(tr); return NS_OK; }