This is not ready for production yet as the HRTFDatabaseLoader gets destroyed on the MSG thread, but it is enough to check that the rest is performing basic functionality. I'll be away for a week or so, so posting where I'm at. There are only minor changes between parts 1 to 12 and changesets in this try run: https://tbpl.mozilla.org/?tree=Try&rev=1a66cf489adc This sounds better than the equalpower model, much more convincing left to right. With my on-ear phones on my ears, it doesn't do a good job of placing the sound in front. I haven't got Chromium to produce sound yet, so haven't compared there. http://people.mozilla.org/~karlt/panner-horizontal.html http://people.mozilla.org/~karlt/panner-vertical.html I haven't worked out the best approach for dealing with HRTFDatabaseLoader. It is designed to have its lifetime controlled from the mail thread, so it would like to live on the PannerNode. I don't know whether taking a NodeMutex on every ProduceAudioBlock call is ideal. I haven't got a good understanding of the PlayingRefChangeHandler. It seems that there are some situations where the AudioNode can be assumed to be still alive, but I don't know what those situations are. An alternative might be to add a mutex into HRTFDatabaseLoader, as that is accessed less frequently.
Bug 865241 Comment 27 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
This is not ready for production yet as the HRTFDatabaseLoader gets destroyed on the MSG thread, but it is enough to check that the rest is performing basic functionality. I'll be away for a week or so, so posting where I'm at. There are only minor changes between parts 1 to 12 and changesets in this try run: https://tbpl.mozilla.org/?tree=Try&rev=1a66cf489adc This sounds better than the equalpower model, much more convincing left to right. With my on-ear phones on my ears, it doesn't do a good job of placing the sound in front. I haven't got Chromium to produce sound yet, so haven't compared there. http://people.mozilla.org/~karlt/panner-horizontal.html http://people.mozilla.org/~karlt/panner-vertical.html I haven't worked out the best approach for dealing with HRTFDatabaseLoader. It is designed to have its lifetime controlled from the main thread, so it would like to live on the PannerNode. I don't know whether taking a NodeMutex on every ProduceAudioBlock call is ideal. I haven't got a good understanding of the PlayingRefChangeHandler. It seems that there are some situations where the AudioNode can be assumed to be still alive, but I don't know what those situations are. An alternative might be to add a mutex into HRTFDatabaseLoader, as that is accessed less frequently.