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
b11500bddd
Stop manually passing TaskDispatchers everywhere
2018-07-25 06:57:56 +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
a068fb2b80
Rework and simplify stream clock calculation in MediaDecoderStateMachine
2018-07-25 06:53:05 +08:00
trav90
2d35bde18f
Rename MDSM::OnDecodeThread to MDSM::OnDecodeTaskQueue
2018-07-25 06:44:53 +08:00
trav90
19e0f7aa42
Rename OnStateMachineThread-like functions to reflect the fact that it's a task queue
2018-07-25 06:44:51 +08:00
trav90
17e6d71294
Revert "Dispatch AudioSink notifications asynchronously"
2018-07-25 06:36:53 +08:00
trav90
b20b8dadab
Replace dom::TimeRanges with TimeIntervals object
2018-07-25 01:27:34 +08:00
trav90
6e7293c92f
Fix build bustage
2018-07-25 01:05:54 +08:00
trav90
d5e2cf7abc
Dispatch AudioSink notifications asynchronously
2018-07-25 01:05:51 +08:00
trav90
5155516c96
Make MDSM::StartBuffering happen on the state machine thread
2018-07-25 01:05:46 +08:00
trav90
90904cb897
Make MDSM::Shutdown happen on the state machine thread
2018-07-25 01:05:42 +08:00
trav90
de7d6e349b
Unify FlushDecoding, ResetDecode, and ResetPlayback into a single Reset() method
2018-07-25 01:04:00 +08:00
trav90
44785a00d9
Fix build bustage: Undo some Mozilla renaming
2018-07-25 01:03:49 +08:00
trav90
07ffc3fc1e
Deliver NotifyWaitingForResourcesStatusChanged asynchronously on the state machine task queue
...
The previous setup is wacky, and can cause the notification to reach the state machine before the promise rejection, which causes us to stall intermittently. We also take the opportunity to be a bit less trigger happy when we fire it in MediaSourceReader.cpp.
2018-07-25 01:03:45 +08:00
trav90
74eb7093f6
Use promises for metadata decoding
2018-07-25 01:03:43 +08:00
trav90
3ef89dda87
Fire loadedmetadata before encrypted event
2018-07-25 01:03:42 +08:00
trav90
b944f99a23
Stop synchronously dispatching MediaDecoder::DecodeError from MDSM::DecodeError
...
MediaDecoder::DecodeError invokes MediaDecoder::Shutdown, which shuts down the state machine. Given the sync dispatch, this means that this is basically already what's happening.
2018-07-25 01:03:40 +08:00
trav90
b265ff9e74
Switch the MDSM to a task queue
2018-07-25 01:03:34 +08:00
trav90
2d0902db6e
Make the MediaDecoder-to-MediaDecoderStateMachine interface Promise-based
2018-07-25 01:03:21 +08:00
trav90
3738ea58fc
Cleanup some comments and assertions that are no longer needed
2018-07-25 01:03:06 +08:00
trav90
1d38e973bb
Streamline seek initiation logic and abolish manual seek cancels and retries
...
The model we're moving towards is one where the MDSM can just disconnect all of its promises, send a ResetDecode down the pipe, and start doing something unrelated.
2018-07-25 01:03:03 +08:00
trav90
b7524cc78e
Route queued seeks back through MDSM::Seek and eliminate MDSM::StartSeek
2018-07-25 01:02:56 +08:00
trav90
dea504a3f4
Stop proxying DecodeError to the decode thread
2018-07-25 01:02:49 +08:00
trav90
64948a50d8
Call OnAudioSinkError on state machine thread
2018-07-25 01:02:47 +08:00
trav90
738916d084
Hoist some work onto the state machine thread and tighten down some assertions
2018-07-25 01:02:43 +08:00
trav90
62337b35dc
Return samples on the state machine thread
...
This is necessary because we're going to want to start disconnecting sample and seek requests directly from the state machine thread, and the machinery asserts that disconnection happens on the same thread as resolution.
2018-07-25 01:02:38 +08:00
Moonchild
baf46a6bf1
Merge pull request #1 from mozilla/esr38: Esr38 upstream pull
2018-07-24 23:04:07 +08:00