trav90
e98562dc6d
Rework MediaDecoder::AddOutputStream and move related code to the MDSM
2018-07-25 09:25:32 +08:00
trav90
73a091c648
Move MediaDecoder::UpdateStreamBlockingForPlayState to the MDSM
2018-07-25 09:25:25 +08:00
trav90
72bcf79f70
Move MediaDecoder::UpdateStreamBlockingForStateMachinePlaying to the MDSM
2018-07-25 09:25:18 +08:00
trav90
39b1ff0f06
Guard against early states in UpdateNextFrameStatus
2018-07-25 09:23:01 +08:00
trav90
ce59f3b191
Move MediaDecoder::DecodedStreamData and related code to its own file
2018-07-25 09:22:25 +08:00
Moonchild
1464a0eeb2
Revert "Media mirroring/task queue improvements"
2018-07-25 08:02:45 +08:00
trav90
4f1d5e3605
Enable tail dispatch for the decode task queue
2018-07-25 08:01:03 +08:00
trav90
fd93b917ec
Initialize reader task queue in the constructor
...
This is a necessary step towards having mirrored/canonical values, since those need to know the task queue in their constructor.
2018-07-25 08:00:56 +08:00
trav90
43875b6b1f
Drop Support for Content-Duration
...
This code is racey, extremely difficult to debug, and there is nothing that says its use must be enforced. The few sites that care about getting a duration without seeking to the end of the stream can index their Ogg files.
2018-07-25 07:50:34 +08:00
trav90
44d5199751
Move post-duration-change seeking into MediaDecoder where it belongs
2018-07-25 07:50:19 +08:00
trav90
cf35cc45a2
Clarify the semantics of when we fire DurationChanged
2018-07-25 07:50:12 +08:00
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