We had problems because we'd call Destroy on a port after calling Destroy on
its streams. This patch makes the port's Destroy ControlMessage not use a stream,
instead we get the stream from the port directly. It also makes us update the
graph's mPortCount only when the port is finally destroyed; this fixes a potential
bug where the current graph could shut down when all streams are removed, before
all ports have been completely destroyed.
--HG--
extra : rebase_source : 3245fa64b79fb8a75c17190f1a4a2af6d42a5012
test_streams_element_capture_reset.html is updated to test that mozCaptureStreamUntilEnded actually stops
capturing when the stream ends. It also tests that seeking and reloading the media resource keep
feeding a mozCaptureStream stream, and feed the right amount of data.
--HG--
extra : rebase_source : 07faf20b8a99b5e7dcdfb27b3a2096fdfd570f45
Moves to a new setup where a decoder manages a single SourceMediaStream internally. Each stream
returned from mozCaptureStream(UntilEnded) is a TrackUnionStream which is fed by the
decoder's SourceMediaStream.
We want the captured streams to be blocked while the media element is not playing. We do that
by blocking any captured stream that has no SourceMediaStream feeding into it, and blocking
any SourceMediaStream while its decoder is not playing.
We arrange for the decoders's PlaybackEnded to be delayed until its SourceMediaStream has
finished according to the media stream graph. This ensures the state of captured media streams
corresponds more closely to the media element state.
--HG--
extra : rebase_source : 3324ff0e9bdce9c71a23c0f5f2032815e9046081
test_streams_element_capture_reset.html is updated to test that mozCaptureStreamUntilEnded actually stops
capturing when the stream ends. It also tests that seeking and reloading the media resource keep
feeding a mozCaptureStream stream, and feed the right amount of data.
--HG--
extra : rebase_source : 6d9e9631516cebbde148d301050c388e0e0019a8
Moves to a new setup where a decoder manages a single SourceMediaStream internally. Each stream
returned from mozCaptureStream(UntilEnded) is a TrackUnionStream which is fed by the
decoder's SourceMediaStream.
We want the captured streams to be blocked while the media element is not playing. We do that
by blocking any captured stream that has no SourceMediaStream feeding into it, and blocking
any SourceMediaStream while its decoder is not playing.
We arrange for the decoders's PlaybackEnded to be delayed until its SourceMediaStream has
finished according to the media stream graph. This ensures the state of captured media streams
corresponds more closely to the media element state.
--HG--
extra : rebase_source : a301714fad57a3b7c963530a3da99c54bc8ac436
Until now we've identified the "first active track" of a stream and played only that. Instead,
it makes more sense to play all the tracks.
For video, we pick the last track that has a video frame for the current time, and display that.
--HG--
extra : rebase_source : 00ce3eb363df06c292232aa507e861639d10cff2
The main thing this patch does is to add ProcessedMediaStream objects and
MediaInputPorts connecting streams. ProcessedMediaStreams are an abstract
class that doesn't constrain what processing is actually performed, except
that for now we assume a stream's processing depends only on its inputs
window of data between mCurrentTime and mStateComputedTime.
This patch reorganizes the way the blocking status of each stream is computed.
The streams are partitioned into groups so that every stream which can affect
the blocking status of another stream is in the same group as that other stream.
We also add a pass to order the streams by dependency so we can process the streams
in order of dependency; this pass also identifies the streams that form part of a
cycle.
--HG--
extra : rebase_source : c45c931a264e73f295642a934500bbeaa6448774