Try relanding this CL, the original CL passed the try bots but failed the mac 10.7 bot because the oroginal CL queried the device info while there is no device on the bot.

Hook up the device selection to the WebAudio live audio.
WebAudio live audio needs to pass the session_id to the browser process so that Chrome can open the correct input device for unitfied IO.

This CL looks big because it touches quite some interfaces from the render to the browser. But the change is simple and basically adding a session_id/device_id to the classes. All the changes some together and it is very hard to break it down.
It also makes the media output code more similar to the media input code as well, and it will be easier to merge them for the future.

[email protected]

BUG=147327
TEST=http://chromium.googlecode.com/svn/trunk/samples/audio/visualizer-live.html
Change the device using the camera icon on the right of the omnibox, then reload. Verify the sound is coming from the correct input device.

Review URL: https://codereview.chromium.org/15979015

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@203695 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/media/audio/audio_output_dispatcher_impl.h b/media/audio/audio_output_dispatcher_impl.h
index 85a84f79..90ac5db 100644
--- a/media/audio/audio_output_dispatcher_impl.h
+++ b/media/audio/audio_output_dispatcher_impl.h
@@ -35,6 +35,7 @@
   // the audio device is closed.
   AudioOutputDispatcherImpl(AudioManager* audio_manager,
                             const AudioParameters& params,
+                            const std::string& input_device_id,
                             const base::TimeDelta& close_delay);
 
   // Opens a new physical stream if there are no pending streams in