Microphone device filtering heuristic is too harsh
On WebKit ToT, my Shure MV88+ is no longer seen as a valid microphone. Generated error log is "Ignoring output device that have input only for echo cancellation".
<rdar://problem/86803287>
Created attachment 447789 [details] Patch
Removing the audio tap filtering makes it work, but it might have the side effect of exposing devices that will not be able to properly record. @Eric, any idea?
Created attachment 448506 [details] Patch
Comment on attachment 448506 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=448506&action=review > Source/WebCore/platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:114 > +static bool isValidCaptureDevice(const CoreAudioCaptureDevice& device, bool enableTapEnabledFiltering) Nit: "enable...Enabled..." is slightly confusing, maybe something like "filterTapEnabledDevices" instead? > Source/WebCore/platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:130 > + RELEASE_LOG(WebRTC, "Ignoring output device that have input only for echo cancellation"); Not new, but: s/have/has/ > Source/WebCore/platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:271 > +static inline Vector<CoreAudioCaptureDevice> computeAudioDeviceList(bool enableTapEnabledFiltering) Same comment as above. > Source/WebCore/platform/mediastream/mac/CoreAudioCaptureDeviceManager.cpp:351 > + auto audioDevices = computeAudioDeviceList(m_enableTapEnabledFiltering); Ditto > Source/WebCore/platform/mediastream/mac/CoreAudioCaptureDeviceManager.h:49 > + void setEnableTapEnabledFiltering(bool doFiltering) { m_enableTapEnabledFiltering = doFiltering; } Ditto
Created attachment 448513 [details] Patch for landing
Created attachment 448523 [details] Patch for landing
Committed r287715 (245799@main): <https://commits.webkit.org/245799@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 448523 [details].