X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fcontent%2Frenderer%2Fmedia%2Fwebrtc_local_audio_track.cc;h=2adf246accd218976ee553e434c4365f2db32045;hb=ff3e2503a20db9193d323c1d19c38c68004dec4a;hp=ce680c0a84e82b15e4af5757aa16767db527bbe6;hpb=7338fba38ba696536d1cc9d389afd716a6ab2fe6;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/content/renderer/media/webrtc_local_audio_track.cc b/src/content/renderer/media/webrtc_local_audio_track.cc index ce680c0..2adf246 100644 --- a/src/content/renderer/media/webrtc_local_audio_track.cc +++ b/src/content/renderer/media/webrtc_local_audio_track.cc @@ -9,36 +9,23 @@ #include "content/renderer/media/media_stream_audio_track_sink.h" #include "content/renderer/media/peer_connection_audio_sink_owner.h" #include "content/renderer/media/webaudio_capturer_source.h" +#include "content/renderer/media/webrtc/webrtc_local_audio_track_adapter.h" #include "content/renderer/media/webrtc_audio_capturer.h" -#include "content/renderer/media/webrtc_local_audio_source_provider.h" -#include "media/base/audio_fifo.h" -#include "third_party/libjingle/source/talk/media/base/audiorenderer.h" namespace content { -static const char kAudioTrackKind[] = "audio"; - -scoped_refptr WebRtcLocalAudioTrack::Create( - const std::string& id, - const scoped_refptr& capturer, - WebAudioCapturerSource* webaudio_source, - webrtc::AudioSourceInterface* track_source) { - talk_base::RefCountedObject* track = - new talk_base::RefCountedObject( - id, capturer, webaudio_source, track_source); - return track; -} - WebRtcLocalAudioTrack::WebRtcLocalAudioTrack( - const std::string& label, + WebRtcLocalAudioTrackAdapter* adapter, const scoped_refptr& capturer, - WebAudioCapturerSource* webaudio_source, - webrtc::AudioSourceInterface* track_source) - : webrtc::MediaStreamTrack(label), + WebAudioCapturerSource* webaudio_source) + : MediaStreamTrackExtraData(adapter, true), + adapter_(adapter), capturer_(capturer), - webaudio_source_(webaudio_source), - track_source_(track_source) { + webaudio_source_(webaudio_source) { DCHECK(capturer.get() || webaudio_source); + + adapter_->Initialize(this); + if (!webaudio_source_) { source_provider_.reset(new WebRtcLocalAudioSourceProvider()); AddSink(source_provider_.get()); @@ -60,13 +47,11 @@ void WebRtcLocalAudioTrack::Capture(const int16* audio_data, bool need_audio_processing) { DCHECK(capture_thread_checker_.CalledOnValidThread()); scoped_refptr capturer; - std::vector voe_channels; SinkList::ItemList sinks; SinkList::ItemList sinks_to_notify_format; { base::AutoLock auto_lock(lock_); capturer = capturer_; - voe_channels = voe_channels_; sinks = sinks_.Items(); sinks_.RetrieveAndClearTags(&sinks_to_notify_format); } @@ -83,6 +68,7 @@ void WebRtcLocalAudioTrack::Capture(const int16* audio_data, // disabled. This is currently done so to feed input to WebRTC typing // detection and should be changed when audio processing is moved from // WebRTC to the track. + std::vector voe_channels = adapter_->VoeChannels(); for (SinkList::ItemList::const_iterator it = sinks.begin(); it != sinks.end(); ++it) { @@ -118,43 +104,6 @@ void WebRtcLocalAudioTrack::OnSetFormat( sinks_.TagAll(); } -void WebRtcLocalAudioTrack::AddChannel(int channel_id) { - DVLOG(1) << "WebRtcLocalAudioTrack::AddChannel(channel_id=" - << channel_id << ")"; - base::AutoLock auto_lock(lock_); - if (std::find(voe_channels_.begin(), voe_channels_.end(), channel_id) != - voe_channels_.end()) { - // We need to handle the case when the same channel is connected to the - // track more than once. - return; - } - - voe_channels_.push_back(channel_id); -} - -void WebRtcLocalAudioTrack::RemoveChannel(int channel_id) { - DVLOG(1) << "WebRtcLocalAudioTrack::RemoveChannel(channel_id=" - << channel_id << ")"; - base::AutoLock auto_lock(lock_); - std::vector::iterator iter = - std::find(voe_channels_.begin(), voe_channels_.end(), channel_id); - DCHECK(iter != voe_channels_.end()); - voe_channels_.erase(iter); -} - -// webrtc::AudioTrackInterface implementation. -webrtc::AudioSourceInterface* WebRtcLocalAudioTrack::GetSource() const { - return track_source_; -} - -cricket::AudioRenderer* WebRtcLocalAudioTrack::GetRenderer() { - return this; -} - -std::string WebRtcLocalAudioTrack::kind() const { - return kAudioTrackKind; -} - void WebRtcLocalAudioTrack::AddSink(MediaStreamAudioSink* sink) { DCHECK(main_render_thread_checker_.CalledOnValidThread()); DVLOG(1) << "WebRtcLocalAudioTrack::AddSink()";