| OLD | NEW | 
|   1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |   1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 
|   2 // Use of this source code is governed by a BSD-style license that can be |   2 // Use of this source code is governed by a BSD-style license that can be | 
|   3 // found in the LICENSE file. |   3 // found in the LICENSE file. | 
|   4 // |   4 // | 
|   5 // An AudioInputStream which provides a loop-back of all audio output generated |   5 // An AudioInputStream which provides a loop-back of all audio output generated | 
|   6 // by the RenderView associated with a WebContents instance.  The single stream |   6 // by the RenderView associated with a WebContents instance.  The single stream | 
|   7 // of data is produced by format-converting and mixing all audio output from a |   7 // of data is produced by format-converting and mixing all audio output from a | 
|   8 // RenderView.  In other words, WebContentsAudioInputStream provides tab-level |   8 // RenderView.  In other words, WebContentsAudioInputStream provides tab-level | 
|   9 // audio mirroring. |   9 // audio mirroring. | 
|  10 // |  10 // | 
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  48   virtual void SetVolume(double volume) OVERRIDE; |  48   virtual void SetVolume(double volume) OVERRIDE; | 
|  49   virtual double GetVolume() OVERRIDE; |  49   virtual double GetVolume() OVERRIDE; | 
|  50   virtual void SetAutomaticGainControl(bool enabled) OVERRIDE; |  50   virtual void SetAutomaticGainControl(bool enabled) OVERRIDE; | 
|  51   virtual bool GetAutomaticGainControl() OVERRIDE; |  51   virtual bool GetAutomaticGainControl() OVERRIDE; | 
|  52  |  52  | 
|  53   // Create a new audio mirroring session, or return NULL on error.  |device_id| |  53   // Create a new audio mirroring session, or return NULL on error.  |device_id| | 
|  54   // should be in the format accepted by |  54   // should be in the format accepted by | 
|  55   // WebContentsCaptureUtil::ExtractTabCaptureTarget().  The caller must |  55   // WebContentsCaptureUtil::ExtractTabCaptureTarget().  The caller must | 
|  56   // guarantee Close() is called on the returned object so that it may |  56   // guarantee Close() is called on the returned object so that it may | 
|  57   // self-destruct. |  57   // self-destruct. | 
 |  58   // |worker_loop| is the loop on which AudioInputCallback methods are called | 
 |  59   // and may or may not be the single thread that invokes the AudioInputStream | 
 |  60   // methods. | 
|  58   static WebContentsAudioInputStream* Create( |  61   static WebContentsAudioInputStream* Create( | 
|  59       const std::string& device_id, |  62       const std::string& device_id, | 
|  60       const media::AudioParameters& params, |  63       const media::AudioParameters& params, | 
|  61       const scoped_refptr<base::MessageLoopProxy>& message_loop); |  64       const scoped_refptr<base::MessageLoopProxy>& worker_loop); | 
|  62  |  65  | 
|  63  private: |  66  private: | 
|  64   friend class WebContentsAudioInputStreamTest; |  67   friend class WebContentsAudioInputStreamTest; | 
|  65  |  68  | 
|  66   // Maintain most state and functionality in an internal ref-counted |  69   // Maintain most state and functionality in an internal ref-counted | 
|  67   // implementation class.  This object must outlive a call to Close(), until |  70   // implementation class.  This object must outlive a call to Close(), until | 
|  68   // the shutdown tasks running on other threads complete: The |  71   // the shutdown tasks running on other threads complete: The | 
|  69   // AudioMirroringManager on the IO thread, the WebContentsTracker on the UI |  72   // AudioMirroringManager on the IO thread, the WebContentsTracker on the UI | 
|  70   // thread, and the VirtualAudioOuputStreams on the audio thread. |  73   // thread, and the VirtualAudioOuputStreams on the audio thread. | 
|  71   class Impl; |  74   class Impl; | 
|  72  |  75  | 
|  73   WebContentsAudioInputStream( |  76   WebContentsAudioInputStream( | 
|  74       int render_process_id, int render_view_id, |  77       int render_process_id, int render_view_id, | 
|  75       const scoped_refptr<base::MessageLoopProxy>& message_loop, |  | 
|  76       AudioMirroringManager* mirroring_manager, |  78       AudioMirroringManager* mirroring_manager, | 
|  77       const scoped_refptr<WebContentsTracker>& tracker, |  79       const scoped_refptr<WebContentsTracker>& tracker, | 
|  78       media::VirtualAudioInputStream* mixer_stream); |  80       media::VirtualAudioInputStream* mixer_stream); | 
|  79  |  81  | 
|  80   virtual ~WebContentsAudioInputStream(); |  82   virtual ~WebContentsAudioInputStream(); | 
|  81  |  83  | 
|  82   scoped_refptr<Impl> impl_; |  84   scoped_refptr<Impl> impl_; | 
|  83  |  85  | 
|  84   DISALLOW_COPY_AND_ASSIGN(WebContentsAudioInputStream); |  86   DISALLOW_COPY_AND_ASSIGN(WebContentsAudioInputStream); | 
|  85 }; |  87 }; | 
|  86  |  88  | 
|  87 }  // namespace content |  89 }  // namespace content | 
|  88  |  90  | 
|  89 #endif  // CONTENT_BROWSER_RENDERER_HOST_MEDIA_WEB_CONTENTS_AUDIO_INPUT_STREAM_H
    _ |  91 #endif  // CONTENT_BROWSER_RENDERER_HOST_MEDIA_WEB_CONTENTS_AUDIO_INPUT_STREAM_H
    _ | 
| OLD | NEW |