A few more things I forgot to mention: Web Audio requires non-interleaved channels. I think we should adopt that everywhere we can. For a buffer that needs to be appended to frequently, consider AudioSegment and AudioChunk; an AudioSegment is a sequence of AudioChunks, and each AudioChunk is a sub-interval over a set of immutable channel buffers.
Web Audio and probably other code can vary the number of channels being produced moment by moment. This isn't hard to handle (I'm in the process of fixing up MediaStreamGraph to handle it), but it creates problems for output. I think we need to extend libcubeb to try to get the "ideal" number of channels (and, ultimately, layout!) from the OS. (And the ideal rate too, if we can.) Then for any output stream that can vary its number of channels, we'll need to create the stream with the ideal number of channels and up-mix/down-mix as necessary. Rob -- Jesus called them together and said, “You know that the rulers of the Gentiles lord it over them, and their high officials exercise authority over them. Not so with you. Instead, whoever wants to become great among you must be your servant, and whoever wants to be first must be your slave — just as the Son of Man did not come to be served, but to serve, and to give his life as a ransom for many.” [Matthew 20:25-28] _______________________________________________ dev-media mailing list [email protected] https://lists.mozilla.org/listinfo/dev-media

