(See also Issue 296 )
Right now a bunch of interfaces use an index to key what device to use, instead of a uniqueId. (Note issue 296 , which shows that uniqueId often isn't unique, but that's a separate problem that would block fixing this.)
If a device is added or removed between when the application enumerates the devices and when it calls SetRecordingDevice(index) (as an example), you may end up recording from the wrong device.

This is indeed a problem for webrtc but not for chrome since chrome is using its own low level IO. (In Chrome, we learnt from the mistake that we use the unique id string to select the device)
I am not sure if we can fix this webrtc problem since the API is used by multiple products, and any modification to that API will be very sensitive.

Isn't there a problem using UniqueId to select a device, the "Unique IDs" returned often aren't unique? (For example on Mac/Linux, the webrtc.org code doesn't even try to provide a UniqueId for audio devices.) Or is that code bypassed too?
Can you provide link to the code in Chromium that's bypassing the indexes and UniqueIds? I was looking over the code and while I see some alternate implementations to webrtc.org in parts, I think I missed that. Thanks.
In any case, this API is fundamentally broken (witness Issue 296 ). If you can't change it, you should extend or replace it and deprecate this one. (Guarantee UniqueIds, then have an alternate set of APIs that take those instead of indexes - one way to do it; not the only way.)