mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 03:45:46 +00:00
fd3d570d36
As we can't determine if the external state machine is going to be used for DRM playback at the time we create it, we need to check that later when the CDM proxy is assigned to the decoder. So when detecting DRM playback on the media engine playback and the pref is disabled, we would destroy the external state machine and then create our normal state machine in order to run Gecko's media pipeline. There is a race between shutting down the old format reader and the new format reader. For the media source playback, we would reuse the demuxer [1]. If the demuxer init hasn't finished when the new format reader starts initializing the demuxer, we would end up chaining the same init promise twice, which hit the assertion of exclusive promise. Therefore, we change the init promise to non-exlusive, which won't hurt, because in our case that means we don't need to re-init the demuxer again. For other cases, it won't change any behavior because the media format reader won't change its demuxer at the middle of playback, and that promise actually isn't necessary to be an exclusive promise. [1] https://searchfox.org/mozilla-central/rev/137075514eddc08c68ff652e9899da82e8043574/dom/media/mediasource/MediaSourceDecoder.cpp#42-44 [2] https://searchfox.org/mozilla-central/rev/137075514eddc08c68ff652e9899da82e8043574/dom/media/MediaFormatReader.cpp#782-788 Depends on D173205 Differential Revision: https://phabricator.services.mozilla.com/D173206 |
||
---|---|---|
.. | ||
brotli | ||
fdlibm | ||
freetype2 | ||
libjar | ||
libmar | ||
libpref | ||
woff2 | ||
xz-embedded | ||
zlib | ||
moz.build |