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.
5 #ifndef CONTENT_RENDERER_MEDIA_MEDIA_STREAM_AUDIO_SOURCE_H_
6 #define CONTENT_RENDERER_MEDIA_MEDIA_STREAM_AUDIO_SOURCE_H_
8 #include "base/compiler_specific.h"
9 #include "content/common/content_export.h"
10 #include "content/renderer/media/media_stream_dependency_factory.h"
11 #include "content/renderer/media/media_stream_source.h"
12 #include "content/renderer/media/webrtc_audio_capturer.h"
13 #include "third_party/libjingle/source/talk/app/webrtc/mediastreaminterface.h"
17 class CONTENT_EXPORT MediaStreamAudioSource
18 : NON_EXPORTED_BASE(public MediaStreamSource) {
20 MediaStreamAudioSource(int render_view_id,
21 const StreamDeviceInfo& device_info,
22 const SourceStoppedCallback& stop_callback,
23 MediaStreamDependencyFactory* factory);
24 MediaStreamAudioSource();
25 virtual ~MediaStreamAudioSource();
27 virtual void AddTrack(const blink::WebMediaStreamTrack& track,
28 const blink::WebMediaConstraints& constraints,
29 const ConstraintsCallback& callback) OVERRIDE;
30 virtual void RemoveTrack(const blink::WebMediaStreamTrack& track) OVERRIDE;
32 void SetLocalAudioSource(webrtc::AudioSourceInterface* source) {
33 local_audio_source_ = source;
36 void SetAudioCapturer(WebRtcAudioCapturer* capturer) {
37 DCHECK(!audio_capturer_);
38 audio_capturer_ = capturer;
41 const scoped_refptr<WebRtcAudioCapturer>& GetAudioCapturer() {
42 return audio_capturer_;
45 webrtc::AudioSourceInterface* local_audio_source() {
46 return local_audio_source_.get();
50 virtual void DoStopSource() OVERRIDE;
53 int render_view_id_; // Render view ID that created this source.
54 // This member holds an instance of webrtc::LocalAudioSource. This is used
55 // as a container for audio options.
56 scoped_refptr<webrtc::AudioSourceInterface> local_audio_source_;
58 scoped_refptr<WebRtcAudioCapturer> audio_capturer_;
60 MediaStreamDependencyFactory* factory_;
62 DISALLOW_COPY_AND_ASSIGN(MediaStreamAudioSource);
65 } // namespace content
67 #endif // CONTENT_RENDERER_MEDIA_MEDIA_STREAM_AUDIO_SOURCE_H_