Bug 1352319. P11 - change the type of NextFrameSeekingState::mCurrentTime to TimeUnit. draft
authorJW Wang <jwwang@mozilla.com>
Tue, 28 Mar 2017 16:38:26 +0800
changeset 554260 a80f845542be140572fa816b5e3903ffea639890
parent 554259 21c4c340c9bf7c112fb71e8cf78db5526a306466
child 554261 72d36673452a10c2ab1a5c2fcf5e339e034ab7f8
push id51883
push userjwwang@mozilla.com
push dateFri, 31 Mar 2017 09:16:07 +0000
bugs1352319
milestone55.0a1
Bug 1352319. P11 - change the type of NextFrameSeekingState::mCurrentTime to TimeUnit. MozReview-Commit-ID: Q4u92HgGdF
dom/media/MediaDecoderStateMachine.cpp
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -1479,17 +1479,17 @@ public:
   explicit NextFrameSeekingState(Master* aPtr) : SeekingState(aPtr)
   {
   }
 
   RefPtr<MediaDecoder::SeekPromise> Enter(SeekJob&& aSeekJob,
                                           EventVisibility aVisibility)
   {
     MOZ_ASSERT(aSeekJob.mTarget->IsNextFrame());
-    mCurrentTime = mMaster->GetMediaTime().ToMicroseconds();
+    mCurrentTime = mMaster->GetMediaTime();
     mDuration = mMaster->Duration();
     return SeekingState::Enter(Move(aSeekJob), aVisibility);
   }
 
   void Exit() override
   {
     // Disconnect my async seek operation.
     mAsyncSeekTask->Cancel();
@@ -1498,17 +1498,17 @@ public:
     mSeekJob.RejectIfExists(__func__);
   }
 
 private:
   void DoSeekInternal()
   {
     auto currentTime = mCurrentTime;
     DiscardFrames(VideoQueue(), [currentTime] (int64_t aSampleTime) {
-      return aSampleTime <= currentTime;
+      return aSampleTime <= currentTime.ToMicroseconds();
     });
 
     if (!NeedMoreVideo()) {
       FinishSeek();
     } else if (!mMaster->IsRequestingVideoData()
                && !mMaster->IsWaitingVideoData()) {
       RequestVideoData();
     }
@@ -1559,17 +1559,17 @@ private:
   }
 
   void HandleVideoDecoded(VideoData* aVideo, TimeStamp aDecodeStart) override
   {
     MOZ_ASSERT(aVideo);
     MOZ_ASSERT(!mSeekJob.mPromise.IsEmpty(), "Seek shouldn't be finished");
     MOZ_ASSERT(NeedMoreVideo());
 
-    if (aVideo->mTime > mCurrentTime) {
+    if (aVideo->mTime > mCurrentTime.ToMicroseconds()) {
       mMaster->PushVideo(aVideo);
       FinishSeek();
     } else {
       RequestVideoData();
     }
   }
 
   void HandleWaitingForAudio() override
@@ -1672,18 +1672,18 @@ private:
       return aSampleTime < time;
     });
     SeekCompleted();
   }
 
   /*
    * Internal state.
    */
-  int64_t mCurrentTime;
-  media::TimeUnit mDuration;
+  TimeUnit mCurrentTime;
+  TimeUnit mDuration;
   RefPtr<AysncNextFrameSeekTask> mAsyncSeekTask;
 };
 
 /**
  * Purpose: stop playback until enough data is decoded to continue playback.
  *
  * Transition to:
  *   SEEKING if any seek request.