Bug 1350815 - Replace use of int64_t for microseconds by TimeUnit in AudioSinkWrapper. r=kikuo

MozReview-Commit-ID: HBh4B6HXbCq

--HG--
extra : rebase_source : 6c9afb5e9ff8ea66539a28dc81548a77d41b3bc3
extra : source : e6ffb031e737b743d3ee115f13c094469f742bc1
This commit is contained in:
JW Wang 2017-03-27 14:34:21 +08:00
Родитель 03a5b0fc19
Коммит 24fdfb8a84
2 изменённых файлов: 13 добавлений и 13 удалений

Просмотреть файл

@ -63,15 +63,15 @@ AudioSinkWrapper::GetEndTime(TrackType aType) const
return 0;
}
int64_t
TimeUnit
AudioSinkWrapper::GetVideoPosition(TimeStamp aNow) const
{
AssertOwnerThread();
MOZ_ASSERT(!mPlayStartTime.IsNull());
// Time elapsed since we started playing.
int64_t delta = (aNow - mPlayStartTime).ToMicroseconds();
double delta = (aNow - mPlayStartTime).ToSeconds();
// Take playback rate into account.
return mPlayDuration + delta * mParams.mPlaybackRate;
return mPlayDuration + TimeUnit::FromSeconds(delta * mParams.mPlaybackRate);
}
int64_t
@ -80,12 +80,12 @@ AudioSinkWrapper::GetPosition(TimeStamp* aTimeStamp) const
AssertOwnerThread();
MOZ_ASSERT(mIsStarted, "Must be called after playback starts.");
int64_t pos = -1;
TimeUnit pos;
TimeStamp t = TimeStamp::Now();
if (!mAudioEnded) {
// Rely on the audio sink to report playback position when it is not ended.
pos = mAudioSink->GetPosition().ToMicroseconds();
pos = mAudioSink->GetPosition();
} else if (!mPlayStartTime.IsNull()) {
// Calculate playback position using system clock if we are still playing.
pos = GetVideoPosition(t);
@ -98,7 +98,7 @@ AudioSinkWrapper::GetPosition(TimeStamp* aTimeStamp) const
*aTimeStamp = t;
}
return pos;
return pos.ToMicroseconds();
}
bool
@ -169,7 +169,7 @@ AudioSinkWrapper::SetPlaying(bool aPlaying)
mPlayStartTime = TimeStamp::Now();
} else {
// Remember how long we've played.
mPlayDuration = GetPosition();
mPlayDuration = TimeUnit::FromMicroseconds(GetPosition());
// mPlayStartTime must be updated later since GetPosition()
// depends on the value of mPlayStartTime.
mPlayStartTime = TimeStamp();
@ -183,7 +183,7 @@ AudioSinkWrapper::Start(int64_t aStartTime, const MediaInfo& aInfo)
MOZ_ASSERT(!mIsStarted, "playback already started.");
mIsStarted = true;
mPlayDuration = aStartTime;
mPlayDuration = TimeUnit::FromMicroseconds(aStartTime);
mPlayStartTime = TimeStamp::Now();
// no audio is equivalent to audio ended before video starts.
@ -237,7 +237,7 @@ AudioSinkWrapper::OnAudioEnded()
{
AssertOwnerThread();
mAudioSinkPromise.Complete();
mPlayDuration = GetPosition();
mPlayDuration = TimeUnit::FromMicroseconds(GetPosition());
if (!mPlayStartTime.IsNull()) {
mPlayStartTime = TimeStamp::Now();
}

Просмотреть файл

@ -51,8 +51,8 @@ public:
: mOwnerThread(aOwnerThread)
, mCreator(new CreatorImpl<Function>(aFunc))
, mIsStarted(false)
// Give an insane value to facilitate debug if used before playback starts.
, mPlayDuration(INT64_MAX)
// Give an invalid value to facilitate debug if used before playback starts.
, mPlayDuration(TimeUnit::Invalid())
, mAudioEnded(true)
{}
@ -83,7 +83,7 @@ private:
MOZ_ASSERT(mOwnerThread->IsCurrentThreadIn());
}
int64_t GetVideoPosition(TimeStamp aNow) const;
TimeUnit GetVideoPosition(TimeStamp aNow) const;
void OnAudioEnded();
@ -96,7 +96,7 @@ private:
PlaybackParams mParams;
TimeStamp mPlayStartTime;
int64_t mPlayDuration;
TimeUnit mPlayDuration;
bool mAudioEnded;
MozPromiseRequestHolder<GenericPromise> mAudioSinkPromise;