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 18 : NON_EXPORTED_BASE(public MediaStreamSource) { 19 public: 20 MediaStreamAudioSource(int render_frame_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(const scoped_refptr<WebRtcAudioCapturer>& capturer) { 36 DCHECK(!audio_capturer_.get()); 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 const int render_view_id_; // Render view ID that created this source. 53 PeerConnectionDependencyFactory* const factory_; 54 55 // This member holds an instance of webrtc::LocalAudioSource. This is used 56 // as a container for audio options. 57 scoped_refptr<webrtc::AudioSourceInterface> local_audio_source_; 58 59 scoped_refptr<WebRtcAudioCapturer> audio_capturer_; 60 61 DISALLOW_COPY_AND_ASSIGN(MediaStreamAudioSource); 62 }; 63 64 } // namespace content 65 66 #endif // CONTENT_RENDERER_MEDIA_MEDIA_STREAM_AUDIO_SOURCE_H_ 67