int64_t MediaSourceReader::LastSampleTime(MediaData::Type aType) { ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor()); TrackBuffer* trackBuffer = aType == MediaData::AUDIO_DATA ? mAudioTrack : mVideoTrack; media::TimeIntervals buffered = trackBuffer->Buffered(); return buffered.GetEnd().ToMicroseconds() - 1; }
int64_t MediaSourceReader::LastSampleTime(MediaData::Type aType) { ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor()); TrackBuffer* trackBuffer = aType == MediaData::AUDIO_DATA ? mAudioTrack : mVideoTrack; nsRefPtr<dom::TimeRanges> buffered = new dom::TimeRanges(); trackBuffer->Buffered(buffered); return buffered->GetEndTime() * USECS_PER_S - 1; }
bool MediaSourceReader::IsNearEnd(MediaData::Type aType, int64_t aTime) { ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor()); if (!mEnded) { return false; } TrackBuffer* trackBuffer = aType == MediaData::AUDIO_DATA ? mAudioTrack : mVideoTrack; media::TimeIntervals buffered = trackBuffer->Buffered(); return aTime >= buffered.GetEnd().ToMicroseconds() - EOS_FUZZ_US; }
bool MediaSourceReader::IsNearEnd(MediaData::Type aType, int64_t aTime) { ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor()); if (!mEnded) { return false; } TrackBuffer* trackBuffer = aType == MediaData::AUDIO_DATA ? mAudioTrack : mVideoTrack; nsRefPtr<dom::TimeRanges> buffered = new dom::TimeRanges(); trackBuffer->Buffered(buffered); return aTime >= (buffered->GetEndTime() * USECS_PER_S - EOS_FUZZ_US); }