X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fcontent%2Frenderer%2Fmedia%2Fwebrtc_local_audio_track.h;h=0ead7ee45d183724eefd119f4b4f687b5f6154ae;hb=ff3e2503a20db9193d323c1d19c38c68004dec4a;hp=53444ec4074397611717400676f766f103b627b7;hpb=7338fba38ba696536d1cc9d389afd716a6ab2fe6;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/content/renderer/media/webrtc_local_audio_track.h b/src/content/renderer/media/webrtc_local_audio_track.h index 53444ec..0ead7ee 100644 --- a/src/content/renderer/media/webrtc_local_audio_track.h +++ b/src/content/renderer/media/webrtc_local_audio_track.h @@ -8,47 +8,37 @@ #include #include +#include "base/memory/ref_counted.h" #include "base/synchronization/lock.h" #include "base/threading/thread_checker.h" -#include "content/renderer/media/media_stream_audio_track_sink.h" +#include "content/renderer/media/media_stream_track_extra_data.h" #include "content/renderer/media/tagged_list.h" #include "content/renderer/media/webrtc_audio_device_impl.h" #include "content/renderer/media/webrtc_local_audio_source_provider.h" -#include "third_party/libjingle/source/talk/app/webrtc/mediastreaminterface.h" -#include "third_party/libjingle/source/talk/app/webrtc/mediastreamtrack.h" -#include "third_party/libjingle/source/talk/media/base/audiorenderer.h" - -namespace cricket { -class AudioRenderer; -} // namespace cricket - -namespace media { -class AudioBus; -} // namespace media namespace content { class MediaStreamAudioSink; class MediaStreamAudioSinkOwner; +class MediaStreamAudioTrackSink; class PeerConnectionAudioSink; class WebAudioCapturerSource; class WebRtcAudioCapturer; +class WebRtcLocalAudioTrackAdapter; // A WebRtcLocalAudioTrack instance contains the implementations of -// MediaStreamTrack and MediaStreamAudioSink. +// MediaStreamTrackExtraData. // When an instance is created, it will register itself as a track to the // WebRtcAudioCapturer to get the captured data, and forward the data to // its |sinks_|. The data flow can be stopped by disabling the audio track. class CONTENT_EXPORT WebRtcLocalAudioTrack - : NON_EXPORTED_BASE(public cricket::AudioRenderer), - NON_EXPORTED_BASE( - public webrtc::MediaStreamTrack) { + : NON_EXPORTED_BASE(public MediaStreamTrackExtraData) { public: - static scoped_refptr Create( - const std::string& id, - const scoped_refptr& capturer, - WebAudioCapturerSource* webaudio_source, - webrtc::AudioSourceInterface* track_source); + WebRtcLocalAudioTrack(WebRtcLocalAudioTrackAdapter* adapter, + const scoped_refptr& capturer, + WebAudioCapturerSource* webaudio_source); + + virtual ~WebRtcLocalAudioTrack(); // Add a sink to the track. This function will trigger a OnSetFormat() // call on the |sink|. @@ -90,41 +80,20 @@ class CONTENT_EXPORT WebRtcLocalAudioTrack return source_provider_.get(); } - protected: - WebRtcLocalAudioTrack( - const std::string& label, - const scoped_refptr& capturer, - WebAudioCapturerSource* webaudio_source, - webrtc::AudioSourceInterface* track_source); - - virtual ~WebRtcLocalAudioTrack(); - private: typedef TaggedList SinkList; - // cricket::AudioCapturer implementation. - virtual void AddChannel(int channel_id) OVERRIDE; - virtual void RemoveChannel(int channel_id) OVERRIDE; - - // webrtc::AudioTrackInterface implementation. - virtual webrtc::AudioSourceInterface* GetSource() const OVERRIDE; - virtual cricket::AudioRenderer* GetRenderer() OVERRIDE; - - // webrtc::MediaStreamTrack implementation. - virtual std::string kind() const OVERRIDE; + // All usage of libjingle is through this adapter. The adapter holds + // a reference on this object, but not vice versa. + WebRtcLocalAudioTrackAdapter* adapter_; // The provider of captured data to render. - // The WebRtcAudioCapturer is today created by WebRtcAudioDeviceImpl. scoped_refptr capturer_; // The source of the audio track which is used by WebAudio, which provides // data to the audio track when hooking up with WebAudio. scoped_refptr webaudio_source_; - // The source of the audio track which handles the audio constraints. - // TODO(xians): merge |track_source_| to |capturer_|. - talk_base::scoped_refptr track_source_; - // A tagged list of sinks that the audio data is fed to. Tags // indicate tracks that need to be notified that the audio format // has changed. @@ -139,9 +108,6 @@ class CONTENT_EXPORT WebRtcLocalAudioTrack // Protects |params_| and |sinks_|. mutable base::Lock lock_; - // A vector of WebRtc VoE channels that the capturer sends data to. - std::vector voe_channels_; - // Audio parameters of the audio capture stream. // Accessed on only the audio capture thread. media::AudioParameters audio_parameters_;