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 |