Bug 1128417 - handle playback ended in a consistent way for both file and stream case. r=roc.

This commit is contained in:
JW Wang
2015-03-03 11:08:50 +08:00
parent 6fae44a3df
commit b31e140a2f
2 changed files with 3 additions and 13 deletions

View File

@@ -2895,7 +2895,7 @@ nsresult MediaDecoderStateMachine::RunStateMachine()
// end of the media, and so that we update the readyState.
if (VideoQueue().GetSize() > 0 ||
(HasAudio() && !mAudioCompleted) ||
(mDecoder->GetDecodedStream() && !mDecoder->GetDecodedStream()->IsFinished()))
(mAudioCaptured && !mDecoder->GetDecodedStream()->IsFinished()))
{
AdvanceFrame();
NS_ASSERTION(mDecoder->GetState() != MediaDecoder::PLAY_STATE_PLAYING ||
@@ -2917,10 +2917,8 @@ nsresult MediaDecoderStateMachine::RunStateMachine()
}
StopAudioThread();
// When we're decoding to a stream, the stream's main-thread finish signal
// will take care of calling MediaDecoder::PlaybackEnded.
if (mDecoder->GetState() == MediaDecoder::PLAY_STATE_PLAYING &&
!mDecoder->GetDecodedStream()) {
if (mDecoder->GetState() == MediaDecoder::PLAY_STATE_PLAYING) {
int64_t clockTime = std::max(mAudioEndTime, mVideoFrameEndTime);
clockTime = std::max(int64_t(0), std::max(clockTime, mEndTime));
UpdatePlaybackPosition(clockTime);