Bug 589626 - Backed out changeset 757b7a43aad0 a=backout

This commit is contained in:
Chris Pearce 2010-09-11 14:08:12 +12:00
parent 8441595dcc
commit a146561fe9
2 changed files with 6 additions and 17 deletions

View File

@ -164,7 +164,7 @@ PRBool nsBuiltinDecoderStateMachine::HasFutureAudio() const {
mDecoder->GetMonitor().AssertCurrentThreadIn(); mDecoder->GetMonitor().AssertCurrentThreadIn();
PRBool aboveLowAudioThreshold = PR_FALSE; PRBool aboveLowAudioThreshold = PR_FALSE;
if (mAudioEndTime != -1) { if (mAudioEndTime != -1) {
aboveLowAudioThreshold = mAudioEndTime - GetMediaTime() > LOW_AUDIO_MS; aboveLowAudioThreshold = mAudioEndTime - mCurrentFrameTime + mStartTime > LOW_AUDIO_MS;
} }
return HasAudio() && return HasAudio() &&
!mAudioCompleted && !mAudioCompleted &&
@ -259,7 +259,7 @@ void nsBuiltinDecoderStateMachine::DecodeLoop()
PRInt64 audioDecoded = 0; PRInt64 audioDecoded = 0;
{ {
MonitorAutoEnter mon(mDecoder->GetMonitor()); MonitorAutoEnter mon(mDecoder->GetMonitor());
currentTime = GetMediaTime(); currentTime = mCurrentFrameTime + mStartTime;
audioDecoded = mReader->mAudioQueue.Duration(); audioDecoded = mReader->mAudioQueue.Duration();
if (mAudioEndTime != -1) { if (mAudioEndTime != -1) {
audioDecoded += mAudioEndTime - currentTime; audioDecoded += mAudioEndTime - currentTime;
@ -466,7 +466,7 @@ void nsBuiltinDecoderStateMachine::AudioLoop()
break; break;
} }
PRInt64 audioAhead = mAudioEndTime - GetMediaTime(); PRInt64 audioAhead = mAudioEndTime - mCurrentFrameTime - mStartTime;
if (audioAhead > AMPLE_AUDIO_MS) { if (audioAhead > AMPLE_AUDIO_MS) {
// We've pushed enough audio onto the hardware that we've queued up a // We've pushed enough audio onto the hardware that we've queued up a
// significant amount ahead of the playback position. The decode // significant amount ahead of the playback position. The decode
@ -668,7 +668,7 @@ void nsBuiltinDecoderStateMachine::UpdatePlaybackPosition(PRInt64 aTime)
} }
// Notify DOM of any queued up audioavailable events // Notify DOM of any queued up audioavailable events
mEventManager.DispatchPendingEvents(GetMediaTime()); mEventManager.DispatchPendingEvents(mCurrentFrameTime + mStartTime);
} }
void nsBuiltinDecoderStateMachine::ClearPositionChangeFlag() void nsBuiltinDecoderStateMachine::ClearPositionChangeFlag()
@ -996,7 +996,6 @@ nsresult nsBuiltinDecoderStateMachine::Run()
StopPlayback(AUDIO_SHUTDOWN); StopPlayback(AUDIO_SHUTDOWN);
StopDecodeThreads(); StopDecodeThreads();
ResetPlayback(); ResetPlayback();
PRInt64 currentTime = GetMediaTime();
nsresult res; nsresult res;
{ {
MonitorAutoExit exitMon(mDecoder->GetMonitor()); MonitorAutoExit exitMon(mDecoder->GetMonitor());
@ -1005,7 +1004,7 @@ nsresult nsBuiltinDecoderStateMachine::Run()
res = mReader->Seek(seekTime, res = mReader->Seek(seekTime,
mStartTime, mStartTime,
mEndTime, mEndTime,
currentTime); mCurrentFrameTime + mStartTime);
} }
if (NS_SUCCEEDED(res)){ if (NS_SUCCEEDED(res)){
PRInt64 audioTime = seekTime; PRInt64 audioTime = seekTime;
@ -1043,7 +1042,7 @@ nsresult nsBuiltinDecoderStateMachine::Run()
// if we need to seek again. // if we need to seek again.
nsCOMPtr<nsIRunnable> stopEvent; nsCOMPtr<nsIRunnable> stopEvent;
if (GetMediaTime() == mEndTime) { if (mCurrentFrameTime == mEndTime) {
LOG(PR_LOG_DEBUG, ("%p Changed state from SEEKING (to %lldms) to COMPLETED", LOG(PR_LOG_DEBUG, ("%p Changed state from SEEKING (to %lldms) to COMPLETED",
mDecoder, seekTime)); mDecoder, seekTime));
stopEvent = NS_NewRunnableMethod(mDecoder, &nsBuiltinDecoder::SeekingStoppedAtEnd); stopEvent = NS_NewRunnableMethod(mDecoder, &nsBuiltinDecoder::SeekingStoppedAtEnd);

View File

@ -338,16 +338,6 @@ protected:
// be held. // be held.
PRBool IsPlaying(); PRBool IsPlaying();
// Returns the "media time". This is the absolute time which the media
// playback has reached. i.e. this returns values in the range
// [mStartTime, mEndTime], and mStartTime will not be 0 if the media does
// not start at 0. Note this is different to the value returned
// by GetCurrentTime(), which is in the range [0,duration].
PRInt64 GetMediaTime() const {
mDecoder->GetMonitor().AssertCurrentThreadIn();
return mStartTime + mCurrentFrameTime;
}
// Monitor on mAudioStream. This monitor must be held in order to delete // Monitor on mAudioStream. This monitor must be held in order to delete
// or use the audio stream. This stops us destroying the audio stream // or use the audio stream. This stops us destroying the audio stream
// while it's being used on another thread (typically when it's being // while it's being used on another thread (typically when it's being