In the comments to bug #134949, Darin points out that regenerating the list of active SourceBuffers is potentially a O(n^3) operation. Investigate making SourceBufferList expose the active subset of its SourceBuffers, rather than tracking that in a second object.