The initial purpose of the combination of AudioRendererSink::GetOutputDevice() method and OutputDevice interface was to provide access to output-device/hardware-related info at each level of the chain of sinks without the need for each of those sinks to implement OutputDevice methods: instead, each sink redirects to a lower layer, and AudioOutputDevice is the bottom one which actually implements OutputDevice. Since then, AudioOutputDevice stopped to support SwitchOutputDevice, and now some sinks return |this| as OutputDevice and implement OutputDevice interface, and SwitchOutputDevice specifically.
Refactor interfaces to return to the original idea that AudioOutputDevice is the only sink which implements OutputDevice interface, and all the other sinks refer to lower layers through AudioRendererSink::GetOutputDevice().
Comment 1 by sshru...@google.com
, Mar 21 2016