In the pernosco recording: 1. While in `LoopingDecodingState`, a `RequestVideoData()` [completed](https://searchfox.org/mozilla-central/rev/7fb746f0be47ce0135af7bca9fffdb5cd1c4b1d5/dom/media/MediaDecoderStateMachine.cpp#4016). `HandleVideoDecoded()` did not queue another video decode [because](https://searchfox.org/mozilla-central/rev/7fb746f0be47ce0135af7bca9fffdb5cd1c4b1d5/dom/media/MediaDecoderStateMachine.cpp#3140) `mMaster->HaveEnoughDecodedVideo()` was true. 2. `mMaster->HaveEnoughDecodedVideo()` was still true when the `mPlayState` [watcher](https://searchfox.org/mozilla-central/rev/944ab16b6e8bcd8da2384a73f189265f44d7fc70/dom/media/MediaDecoderStateMachineBase.cpp#130-131) ran. 3. `DecodingState::Step()` [started playback](https://searchfox.org/mozilla-central/rev/7fb746f0be47ce0135af7bca9fffdb5cd1c4b1d5/dom/media/MediaDecoderStateMachine.cpp#3104), which caused the `VideoSink` to [pop frames from the video queue](https://searchfox.org/mozilla-central/rev/944ab16b6e8bcd8da2384a73f189265f44d7fc70/dom/media/mediasink/VideoSink.cpp#222-225). 4. The same `DecodingState::Step()` then switched to `BufferingState` [because](https://searchfox.org/mozilla-central/rev/7fb746f0be47ce0135af7bca9fffdb5cd1c4b1d5/dom/media/MediaDecoderStateMachine.cpp#3178,3182) it is `OutOfDecodedAudio()`. This [disconnected](https://searchfox.org/mozilla-central/rev/7fb746f0be47ce0135af7bca9fffdb5cd1c4b1d5/dom/media/MediaDecoderStateMachine.cpp#586) the `mOnVideoPopped` listener before the [asynchronous](https://searchfox.org/mozilla-central/rev/7fb746f0be47ce0135af7bca9fffdb5cd1c4b1d5/dom/media/MediaEventSource.h#204) notification is received. 5. `BufferingState::Step()` is a [no-op and will not advance](https://searchfox.org/mozilla-central/rev/db4c501abb679a81c921510d7e38a8028dd6024a/dom/media/MediaDecoderStateMachine.cpp#3317,3329,3334) to `DecodingState` because `OutOfDecodedVideo()`, due to the popped frames in 3.
Bug 1915045 Comment 3 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
In the pernosco recording: 1. While in `LoopingDecodingState`, a `RequestVideoData()` [completed](https://searchfox.org/mozilla-central/rev/7fb746f0be47ce0135af7bca9fffdb5cd1c4b1d5/dom/media/MediaDecoderStateMachine.cpp#4016). `HandleVideoDecoded()` did not queue another video decode [because](https://searchfox.org/mozilla-central/rev/7fb746f0be47ce0135af7bca9fffdb5cd1c4b1d5/dom/media/MediaDecoderStateMachine.cpp#3140) `mMaster->HaveEnoughDecodedVideo()` was true. 2. `mMaster->HaveEnoughDecodedVideo()` was still true when the `mPlayState` [watcher](https://searchfox.org/mozilla-central/rev/944ab16b6e8bcd8da2384a73f189265f44d7fc70/dom/media/MediaDecoderStateMachineBase.cpp#130-131) ran. 3. `DecodingState::Step()` [started playback](https://searchfox.org/mozilla-central/rev/7fb746f0be47ce0135af7bca9fffdb5cd1c4b1d5/dom/media/MediaDecoderStateMachine.cpp#3104), which caused the `VideoSink` to [pop frames from the video queue](https://searchfox.org/mozilla-central/rev/944ab16b6e8bcd8da2384a73f189265f44d7fc70/dom/media/mediasink/VideoSink.cpp#222-225). 4. The same `DecodingState::Step()` then switched to `BufferingState` [because](https://searchfox.org/mozilla-central/rev/7fb746f0be47ce0135af7bca9fffdb5cd1c4b1d5/dom/media/MediaDecoderStateMachine.cpp#3178,3182) it is `OutOfDecodedAudio()`. This [disconnected](https://searchfox.org/mozilla-central/rev/7fb746f0be47ce0135af7bca9fffdb5cd1c4b1d5/dom/media/MediaDecoderStateMachine.cpp#586) the `mOnVideoPopped` listener before the [asynchronous](https://searchfox.org/mozilla-central/rev/7fb746f0be47ce0135af7bca9fffdb5cd1c4b1d5/dom/media/MediaEventSource.h#204) notification is received. 5. `BufferingState::Step()` is a [no-op and will not advance](https://searchfox.org/mozilla-central/rev/db4c501abb679a81c921510d7e38a8028dd6024a/dom/media/MediaDecoderStateMachine.cpp#3317,3329,3334) to `DecodingState` because `OutOfDecodedVideo()`, due to the popped frames in 3, and nothing to request decode of more video.