Closed
Bug 931455
Opened 11 years ago
Closed 10 years ago
WebAudio: "ASSERTION: Ran out of data but track not ended?"
Categories
(Core :: Web Audio, defect, P3)
Tracking
()
RESOLVED
WORKSFORME
People
(Reporter: jruderman, Assigned: karlt)
References
Details
(Keywords: assertion, testcase)
Attachments
(2 files)
###!!! ASSERTION: Ran out of data but track not ended?: 'endTicks == sliceEnd || track->IsEnded()', file content/media/MediaStreamGraph.cpp, line 855
Reporter | ||
Comment 1•11 years ago
|
||
Assignee | ||
Comment 3•11 years ago
|
||
Might be another case like bug 926606, where it is expected that upstream has already produced output, which won't necessarily be the case in a cycle.
I need to work out whether there is a suitable general strategy here, such as providing a silent upstream source, or we need to patch up all the possible downstream code.
Another option to consider is just not processing streams that are in a cycle without a DelayNode.
Depends on: 926606
(In reply to Karl Tomlinson (:karlt) from comment #3)
> Another option to consider is just not processing streams that are in a
> cycle without a DelayNode.
I guess this is slightly underspecified. We have said that all nodes in a cycle without a DelayNode produce silence. However it's not clear what this means for the internal state of such nodes. Maybe we should change it to every *edge* in the cycle --- i.e. if node A is connected into node B, and that connection is part of a cycle which does not contain a DelayNode, then node A's input to node B is treated as silence.
Actually, let's say in that case node A's output to all nodes is treated as silence --- but nodes A and B still keep doing all their processing, it's just that most of that processing will be processing silence and the output will be ignored.
We talked some more. We decided to go with something more like comment #4: if a connection from node A to node B is part of a zero-delay cycle, then we ignore that connection for the purposes of processing. This is easy to implement for all kinds of processing nodes; we just skip such an InputPort when we iterate through the incoming InputPorts of MediaStream B.
We'll have to modify the cycle-detection logic so that instead of marking MediaStreams as belonging to a zero-delay cycle, we mark InputPorts instead. If we find any such InputPorts then we may need to rerun MediaStream sorting ignoring the marked InputPorts. (It may be possible to implement the cycle-detection and sorting so that this can be done in one pass, but it sounds complex.)
Updated•11 years ago
|
Priority: -- → P3
Reporter | ||
Comment 7•11 years ago
|
||
Still happens after https://hg.mozilla.org/mozilla-central/rev/2bf5b49d85e7, but now fatal:
Assertion failure: track->IsEnded() (Not enough data, and track not ended.), at content/media/MediaStreamGraph.cpp:951
Assignee | ||
Comment 8•10 years ago
|
||
Like bug 926606, this no longer reproduces.
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → WORKSFORME
You need to log in
before you can comment on or make changes to this bug.
Description
•