Pass more detailed audio hardware configuration information to the renderer

AudioHardwareConfig currently contains an ad-hoc mix of pieces of information about
the audio input and output hardware.  This CL adds more complete and symmetric information
about the audio hardware as tracked in AudioHardwareConfig.

The ChannelMixer is also upgraded to allow for "discrete" up and down mixing.

BUG=none
TEST=manual - several tests updated
Review URL: https://codereview.chromium.org/12387006

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@187936 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
index 58cd3f7..8879aa0 100644
--- a/content/renderer/render_thread_impl.cc
+++ b/content/renderer/render_thread_impl.cc
@@ -980,18 +980,13 @@
 
 media::AudioHardwareConfig* RenderThreadImpl::GetAudioHardwareConfig() {
   if (!audio_hardware_config_) {
-    int output_buffer_size;
-    int output_sample_rate;
-    int input_sample_rate;
-    media::ChannelLayout input_channel_layout;
-
+    media::AudioParameters input_params;
+    media::AudioParameters output_params;
     Send(new ViewHostMsg_GetAudioHardwareConfig(
-        &output_buffer_size, &output_sample_rate,
-        &input_sample_rate, &input_channel_layout));
+        &input_params, &output_params));
 
     audio_hardware_config_.reset(new media::AudioHardwareConfig(
-        output_buffer_size, output_sample_rate, input_sample_rate,
-        input_channel_layout));
+        input_params, output_params));
     audio_message_filter_->SetAudioHardwareConfig(audio_hardware_config_.get());
   }