Home | History | Annotate | Download | only in media
      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_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