Clean up audio message filters.  Hopefully resolve a crash.

Enforces thread safety through DCHECK() and removes unnecessary
ChildProcess() lookups.  The IO message loop is now provided
during construction of the message filter via
RenderThreadImpl::GetIOMessageLoopProxy().

For readability the audio input and output devices now retrieve
the IO message loop from their respective message filters.  This
makes it pretty clear that all IPC calls (minus delegate additions
and removals in AudioMessageFilter) occur on the same loop.

BUG=177820
TEST=unit tests, manual input and output testing.
TBR=jam

Review URL: https://chromiumcodereview.appspot.com/12314077

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@184478 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
index fe2daba8..54800f2 100644
--- a/content/renderer/render_thread_impl.cc
+++ b/content/renderer/render_thread_impl.cc
@@ -344,10 +344,11 @@
   vc_manager_ = new VideoCaptureImplManager();
   AddFilter(vc_manager_->video_capture_message_filter());
 
-  audio_input_message_filter_ = new AudioInputMessageFilter();
+  audio_input_message_filter_ =
+      new AudioInputMessageFilter(GetIOMessageLoopProxy());
   AddFilter(audio_input_message_filter_.get());
 
-  audio_message_filter_ = new AudioMessageFilter();
+  audio_message_filter_ = new AudioMessageFilter(GetIOMessageLoopProxy());
   AddFilter(audio_message_filter_.get());
 
   AddFilter(new IndexedDBMessageFilter);