I discovered that MP4Reader can get the decode thread stuck in the "prevNumFramesOutput == data.mNumSamplesOutput" wait at the bottom of Decode(). Not sure how to repro, but I think it has something to do with seeking when the network is slow.
The problem is that MP4Reader::NotifyDataArrived() can dispatch an event to the audio/video task queues, and the MediaDataDecoders are assuming that only they dispatch to those task queues and they're using MediaTaskQueue.IsEmpty() to decide whether they've processed all their input. With the recent changes to GetBuffered(), that assumption is no longer valid.
Created attachment 8477214 [details] [diff] [review] Patch Don't use the decoder's task queues to update index. I'll try to figure out a way to not make these visible inside MP4Reader at all on Monday. For now, here's the fix.
Attachment #8477214 - Flags: review?(ajones)
Attachment #8477214 - Flags: review?(ajones) → review+
Status: NEW → RESOLVED
Last Resolved: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla34
You need to log in before you can comment on or make changes to this bug.