trav90
f319e95fd1
Clean up SetDuration and remove negative duration case
2018-07-25 07:50:05 +08:00
trav90
f3666a1dc9
Track observed duration separately
2018-07-25 07:49:57 +08:00
trav90
10f8792a37
Track demuxer-estimated duration separately
2018-07-25 07:49:50 +08:00
trav90
cf3312970e
Track explicit (MSE) duration separately
2018-07-25 07:49:43 +08:00
trav90
30a4725667
Make MediaDecoder::DurationChanged take a duration argument rather than reading it back synchronously from the MDSM
2018-07-25 07:49:36 +08:00
trav90
4db9fb1d37
Track "metadata duration" separately and mirror it to MediaDecoderReader
2018-07-25 07:49:21 +08:00
trav90
2fbf35f99a
Track "network duration" separately and mirror it to the MDSM
2018-07-25 07:49:14 +08:00
trav90
e8a4024fa7
Remove ApplyStateToStateMachine and PLAY_STATE_SEEKING
2018-07-25 07:48:53 +08:00
trav90
a18f275a4d
Replace MDSM::Play with a state-watcher on mPlayState and eliminate ApplyStateToStateMachine
2018-07-25 07:48:46 +08:00
trav90
372e93e081
Remove wrong mCurrentPosition update
2018-07-25 07:48:38 +08:00
trav90
67d488872c
Use StateMirroring for playback position
2018-07-25 07:48:31 +08:00
trav90
e1cffc8281
Rename mCurrentFrameTime to mCurrentPosition to better match the naming in the spec
...
This field corresponds to the "current playback position" in HTML5.
2018-07-25 07:48:24 +08:00
trav90
03673556a3
Revert Mozilla change "Make newCurrentFrameTime more accurate while seeking by checking audio & video timestamp boundary in addition"
...
This was landed by Mozilla to work around an issue with seeking on Firefox OS.
2018-07-25 07:45:03 +08:00
trav90
eba13a9563
Use separate thread pool for platform decoder task queues
...
So that platform decoder tasks will run when their readers wait and block their thread pool.
2018-07-25 07:35:32 +08:00
trav90
3cbf3e5e8a
Fix indentation
...
No code changes. Followup to 2c9ac59.
2018-07-25 07:14:05 +08:00
trav90
759486911b
Get rid of RefableThen and make Then return an nsRefPtr<Consumer>
2018-07-25 07:13:05 +08:00
trav90
6c19defcd4
Use lambdas for Seek
2018-07-25 07:12:14 +08:00
trav90
805023876f
Use lambdas for WaitForData
2018-07-25 07:12:10 +08:00
trav90
d7c268b018
Include mStartTime when calculating endPosition
2018-07-25 07:11:46 +08:00
trav90
079b1b63a6
Reset the value to AUDIO_DURATION_USECS or re-calculate if the remainingTime is negtive. Schedule the state machine at the first video sample pushed into the queue
2018-07-25 07:11:02 +08:00
trav90
2cae9fb888
Dispatch SetMinimizePrerollUntilPlabackStarts
2018-07-25 07:07:32 +08:00
trav90
fa32ae47df
Dispatch SetAudioCaptured
2018-07-25 07:07:28 +08:00
trav90
7d4520f94f
Mirror mPreservesPitch
2018-07-25 07:07:26 +08:00
trav90
05d14bdb99
Mirror mPlaybackRate
2018-07-25 07:07:23 +08:00
trav90
1aefd63963
Mirror mVolume
2018-07-25 07:07:20 +08:00
trav90
49424b811e
Assert that we're on the state machine thread for most remaining MDSM methods
2018-07-25 07:07:15 +08:00
trav90
659022b636
Give WatchManager an owner thread and make sure everything happens there
2018-07-25 07:07:12 +08:00
trav90
d54dbfa0b9
Do watching/mirroring initialization on the state machine task queue
...
We take this as an opportunity to remove connect-during-initialization.
2018-07-25 07:07:08 +08:00
trav90
032f6f5dc7
Switch mirror/canonical initialization to happen in the constructor
...
The goal here is to hoist all meaningful watcher/mirror/canonical manipulation onto the owner thread. But since that must necessarily happen asynchronously, we need to make sure that canonicals are in a sane state immediately upon creation, since otherwise a mirror from another thread may attempt to connect to a not-yet-initialized canonical.
2018-07-25 07:07:05 +08:00
trav90
02e984bce2
Initialize the state machine task queue in the initializer list
2018-07-25 07:07:01 +08:00
trav90
e640efcded
Redesign state watching to use a manager
2018-07-25 07:05:53 +08:00
trav90
d77ea08468
Eliminate initial notifies
...
Not really needed or helpful for our use.
2018-07-25 07:05:51 +08:00
trav90
a5b5468889
Use state-watching machinery for UpdateNextFrameStatus
2018-07-25 07:05:45 +08:00
trav90
b415ed83c6
Be more disciplined about where we call UpdateNextFrameStatus
...
This value depends on mState and the audio/video queue states. Given that, we can just stick these calls in a few choke points.
2018-07-25 07:05:43 +08:00
trav90
41c67a91d8
Mirror mPlayState and mNextState to the state machine task queue and eliminate cross-thread access
2018-07-25 07:05:41 +08:00
trav90
6fa240db4e
Re-land "Dispatch AudioSink notifications asynchronously"
...
Turns out that this is needed after all.
2018-07-25 07:04:46 +08:00
Moonchild
54c849b63d
Revert "Re-land "Dispatch AudioSink notifications asynchronously" + fixes"
2018-07-25 07:04:08 +08:00
trav90
1a2fea0658
Re-land "Dispatch AudioSink notifications asynchronously"
...
This is needed by some new code that I am working on.
2018-07-25 07:03:56 +08:00
trav90
df074df1ee
Use state mirroring for NextFrameStatus
2018-07-25 07:03:42 +08:00
trav90
422ce43cbb
Invoke SeekCompleted synchronously
...
The current behavior is a holdover from when this some of this stuff was happening on the decode thread. It's problematic because nothing guarantees that we don't call CheckIfSeekComplete twice, and queue up two SeekCompleted events.
2018-07-25 07:03:28 +08:00
trav90
8b8219a3c1
Make it impossible for the MDSM frame calculation to overflow
2018-07-25 07:02:05 +08:00
trav90
dc0c3e6be3
Remove a couple more instances of manually passing TaskDispatchers
...
Followup to 8446234.
2018-07-25 06:58:15 +08:00
trav90
b11500bddd
Stop manually passing TaskDispatchers everywhere
2018-07-25 06:57:56 +08:00
trav90
dfc7504069
Remove MaybeTailDispatch
...
This is now the default behavior.
2018-07-25 06:57:53 +08:00
trav90
87a4cf6376
Use TailDispatch for the MDSM's task queue
2018-07-25 06:55:39 +08:00
trav90
7dd99b6694
Stop doing sync dispatch of PlaybackEnded
2018-07-25 06:54:58 +08:00
trav90
ba4e0eb433
Add additional assertions to the MDSM
2018-07-25 06:54:28 +08:00
trav90
135695cd07
Add missing ,
2018-07-25 06:53:14 +08:00
trav90
e1caa768c4
Handle playback ended in a consistent way for both file and stream case
2018-07-25 06:53:09 +08:00
trav90
a068fb2b80
Rework and simplify stream clock calculation in MediaDecoderStateMachine
2018-07-25 06:53:05 +08:00