• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef CONTENT_RENDERER_MEDIA_MEDIA_STREAM_AUDIO_SOURCE_H_
6 #define CONTENT_RENDERER_MEDIA_MEDIA_STREAM_AUDIO_SOURCE_H_
7 
8 #include "base/compiler_specific.h"
9 #include "content/common/content_export.h"
10 #include "content/renderer/media/media_stream_source.h"
11 #include "content/renderer/media/webrtc/peer_connection_dependency_factory.h"
12 #include "content/renderer/media/webrtc_audio_capturer.h"
13 #include "third_party/libjingle/source/talk/app/webrtc/mediastreaminterface.h"
14 
15 namespace content {
16 
17 class CONTENT_EXPORT MediaStreamAudioSource
NON_EXPORTED_BASE(public MediaStreamSource)18     : NON_EXPORTED_BASE(public MediaStreamSource) {
19  public:
20   MediaStreamAudioSource(int render_view_id,
21                          const StreamDeviceInfo& device_info,
22                          const SourceStoppedCallback& stop_callback,
23                          PeerConnectionDependencyFactory* factory);
24   MediaStreamAudioSource();
25   virtual ~MediaStreamAudioSource();
26 
27   void AddTrack(const blink::WebMediaStreamTrack& track,
28                 const blink::WebMediaConstraints& constraints,
29                 const ConstraintsCallback& callback);
30 
31   void SetLocalAudioSource(webrtc::AudioSourceInterface* source) {
32     local_audio_source_ = source;
33   }
34 
35   void SetAudioCapturer(WebRtcAudioCapturer* capturer) {
36     DCHECK(!audio_capturer_);
37     audio_capturer_ = capturer;
38   }
39 
40   const scoped_refptr<WebRtcAudioCapturer>& GetAudioCapturer() {
41     return audio_capturer_;
42   }
43 
44   webrtc::AudioSourceInterface* local_audio_source() {
45     return local_audio_source_.get();
46   }
47 
48  protected:
49   virtual void DoStopSource() OVERRIDE;
50 
51  private:
52   int render_view_id_;  // Render view ID that created this source.
53   // This member holds an instance of webrtc::LocalAudioSource. This is used
54   // as a container for audio options.
55   scoped_refptr<webrtc::AudioSourceInterface> local_audio_source_;
56 
57   scoped_refptr<WebRtcAudioCapturer> audio_capturer_;
58 
59   PeerConnectionDependencyFactory* factory_;
60 
61   DISALLOW_COPY_AND_ASSIGN(MediaStreamAudioSource);
62 };
63 
64 }  // namespace content
65 
66 #endif  // CONTENT_RENDERER_MEDIA_MEDIA_STREAM_AUDIO_SOURCE_H_
67