| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 // Copyright (c) 2012 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_SOURCE_EXTRA_DATA_H_ |  | 
| 6 #define CONTENT_RENDERER_MEDIA_MEDIA_STREAM_SOURCE_EXTRA_DATA_H_ |  | 
| 7 |  | 
| 8 #include "base/callback.h" |  | 
| 9 #include "base/compiler_specific.h" |  | 
| 10 #include "content/common/content_export.h" |  | 
| 11 #include "content/common/media/media_stream_options.h" |  | 
| 12 #include "content/renderer/media/media_stream_source_observer.h" |  | 
| 13 #include "content/renderer/media/webrtc_audio_capturer.h" |  | 
| 14 #include "third_party/libjingle/source/talk/app/webrtc/videosourceinterface.h" |  | 
| 15 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h" |  | 
| 16 |  | 
| 17 namespace content { |  | 
| 18 |  | 
| 19 class CONTENT_EXPORT MediaStreamSourceExtraData |  | 
| 20     : NON_EXPORTED_BASE(public blink::WebMediaStreamSource::ExtraData) { |  | 
| 21  public: |  | 
| 22   typedef base::Callback<void(const blink::WebMediaStreamSource& source)> |  | 
| 23       SourceStopCallback; |  | 
| 24 |  | 
| 25   MediaStreamSourceExtraData(const StreamDeviceInfo& device_info, |  | 
| 26                              const SourceStopCallback& stop_callback); |  | 
| 27   MediaStreamSourceExtraData(); |  | 
| 28   virtual ~MediaStreamSourceExtraData(); |  | 
| 29 |  | 
| 30   // Return device information about the camera or microphone. |  | 
| 31   const StreamDeviceInfo& device_info() const { |  | 
| 32     return device_info_; |  | 
| 33   } |  | 
| 34 |  | 
| 35   void SetVideoSource(webrtc::VideoSourceInterface* source) { |  | 
| 36     video_source_ = source; |  | 
| 37     source_observer_.reset(new MediaStreamSourceObserver(source, this)); |  | 
| 38   } |  | 
| 39 |  | 
| 40   void SetLocalAudioSource(webrtc::AudioSourceInterface* source) { |  | 
| 41     local_audio_source_ = source; |  | 
| 42     // TODO(perkj): Implement a local source observer for audio. |  | 
| 43     // See |source_observer_|. |  | 
| 44   } |  | 
| 45 |  | 
| 46   void SetAudioCapturer(WebRtcAudioCapturer* capturer) { |  | 
| 47     DCHECK(!audio_capturer_); |  | 
| 48     audio_capturer_ = capturer; |  | 
| 49   } |  | 
| 50 |  | 
| 51   WebRtcAudioCapturer* GetAudioCapturer() const { |  | 
| 52     // TODO(perkj): |audio_capturer_| can currently be reconfigured to use |  | 
| 53     // another microphone even after it has been created since only one |  | 
| 54     // capturer is supported. See issue crbug/262117. |  | 
| 55     // It would make more sense if a WebRtcAudioCapturer represent one and only |  | 
| 56     // one audio source. |  | 
| 57     if (audio_capturer_ && |  | 
| 58         device_info_.session_id == audio_capturer_->session_id()) { |  | 
| 59       return audio_capturer_; |  | 
| 60     } |  | 
| 61     return NULL; |  | 
| 62   } |  | 
| 63 |  | 
| 64   webrtc::VideoSourceInterface* video_source() { return video_source_.get(); } |  | 
| 65   webrtc::AudioSourceInterface* local_audio_source() { |  | 
| 66     return local_audio_source_.get(); |  | 
| 67   } |  | 
| 68 |  | 
| 69   void OnLocalSourceStop(); |  | 
| 70 |  | 
| 71  private: |  | 
| 72   StreamDeviceInfo device_info_; |  | 
| 73 |  | 
| 74   scoped_refptr<webrtc::VideoSourceInterface> video_source_; |  | 
| 75 |  | 
| 76   // This member holds an instance of webrtc::LocalAudioSource. This is used |  | 
| 77   // as a container for audio options. |  | 
| 78   // TODO(hclam): This should be merged with |audio_source_| such that it |  | 
| 79   // carries audio options. |  | 
| 80   scoped_refptr<webrtc::AudioSourceInterface> local_audio_source_; |  | 
| 81   scoped_ptr<MediaStreamSourceObserver> source_observer_; |  | 
| 82 |  | 
| 83   scoped_refptr<WebRtcAudioCapturer> audio_capturer_; |  | 
| 84 |  | 
| 85   SourceStopCallback stop_callback_; |  | 
| 86 |  | 
| 87   DISALLOW_COPY_AND_ASSIGN(MediaStreamSourceExtraData); |  | 
| 88 }; |  | 
| 89 |  | 
| 90 }  // namespace content |  | 
| 91 |  | 
| 92 #endif  // CONTENT_RENDERER_MEDIA_MEDIA_STREAM_SOURCE_EXTRA_DATA_H_ |  | 
| OLD | NEW | 
|---|