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 15namespace content { 16 17class 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