mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-08 19:04:45 +00:00
Bug 1817997
- Limit time resolution to microsecond on values exposed to script. r=alwu
Differential Revision: https://phabricator.services.mozilla.com/D176041
This commit is contained in:
parent
0113177c03
commit
8de71980b4
@ -3094,11 +3094,11 @@ bool HTMLMediaElement::Seeking() const {
|
||||
|
||||
double HTMLMediaElement::CurrentTime() const {
|
||||
if (mMediaStreamRenderer) {
|
||||
return mMediaStreamRenderer->CurrentTime();
|
||||
return ToMicrosecondResolution(mMediaStreamRenderer->CurrentTime());
|
||||
}
|
||||
|
||||
if (mDefaultPlaybackStartPosition == 0.0 && mDecoder) {
|
||||
return mDecoder->GetCurrentTime();
|
||||
return std::clamp(mDecoder->GetCurrentTime(), 0.0, mDecoder->GetDuration());
|
||||
}
|
||||
|
||||
return mDefaultPlaybackStartPosition;
|
||||
@ -3202,7 +3202,7 @@ void HTMLMediaElement::Seek(double aTime, SeekTarget::Type aSeekType,
|
||||
if (mCurrentPlayRangeStart != rangeEndTime) {
|
||||
// Don't round the left of the interval: it comes from script and needs
|
||||
// to be exact.
|
||||
mPlayed->Add(mCurrentPlayRangeStart, ToMicrosecondResolution(rangeEndTime));
|
||||
mPlayed->Add(mCurrentPlayRangeStart, rangeEndTime);
|
||||
}
|
||||
// Reset the current played range start time. We'll re-set it once
|
||||
// the seek completes.
|
||||
@ -3302,7 +3302,8 @@ double HTMLMediaElement::Duration() const {
|
||||
already_AddRefed<TimeRanges> HTMLMediaElement::Seekable() const {
|
||||
media::TimeIntervals seekable =
|
||||
mDecoder ? mDecoder->GetSeekable() : media::TimeIntervals();
|
||||
RefPtr<TimeRanges> ranges = new TimeRanges(ToSupports(OwnerDoc()), seekable);
|
||||
RefPtr<TimeRanges> ranges = new TimeRanges(
|
||||
ToSupports(OwnerDoc()), seekable.ToMicrosecondResolution());
|
||||
return ranges.forget();
|
||||
}
|
||||
|
||||
@ -3324,7 +3325,7 @@ already_AddRefed<TimeRanges> HTMLMediaElement::Played() {
|
||||
if (mCurrentPlayRangeStart != now) {
|
||||
// Don't round the left of the interval: it comes from script and needs
|
||||
// to be exact.
|
||||
ranges->Add(mCurrentPlayRangeStart, ToMicrosecondResolution(now));
|
||||
ranges->Add(mCurrentPlayRangeStart, now);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -391,7 +391,8 @@ void MediaSource::EndOfStream(
|
||||
SetReadyState(MediaSourceReadyState::Ended);
|
||||
mSourceBuffers->Ended();
|
||||
if (!aError.WasPassed()) {
|
||||
DurationChange(mSourceBuffers->GetHighestBufferedEndTime(), aRv);
|
||||
DurationChange(mSourceBuffers->GetHighestBufferedEndTime().ToBase(1000000),
|
||||
aRv);
|
||||
// Notify reader that all data is now available.
|
||||
mDecoder->Ended(true);
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user