プラットフォームオーディオAPIのdevice change callback
Androidでイヤホンが抜けた時にオーディオアプリが一時停止するような仕組みをどうやって実現するか探っていて、プラットフォーム別にどうやるのか調べないといけなそうなのでここにメモ。
miniaudioの実装とか追っかければ自力で全部調べる必要ないんじゃね?と思ったけど、あちらでもちょうど実装するか?みたいな話になっているフェーズだった https://github.com/mackron/miniaudio/issues/325
JUCEのAudioIODeviceCallback https://docs.juce.com/master/classAudioIODeviceCallback.html#a7768d640daf7d5d56399ced8188b2b75
audioDeviceError()
はlinux_bela, mac, iosでのみ実装されている
win32 APIでは見つけられず。
UWPだとこれが一番近いだろうか。 https://docs.microsoft.com/en-us/uwp/api/windows.media.devices.mediadevice.defaultaudiorenderdevicechanged?view=winrt-20348
wasapiの情報を探していて、そもそもWindowsではイヤホン抜けなどの状態変化はデバイスドライバが自力で対処すべき課題として設計されていたという話が書かれているのを見つけた。 https://social.msdn.microsoft.com/Forums/en-US/c145b1ce-187f-4b08-9a8b-b4baacf6591d/change-playback-device-of-an-existing-wasapi-audiosession
WebAudioにその手の機能は無いのかなと思ったけど仕様書を見に行く前に「そういえばデバイスの変更自体がWebAudio2の課題項目だったっけ」と思ったので調べるまでもないかなと判断した。