diff options
Diffstat (limited to 'chromium/content/renderer/media/media_stream_audio_source.cc')
-rw-r--r-- | chromium/content/renderer/media/media_stream_audio_source.cc | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/chromium/content/renderer/media/media_stream_audio_source.cc b/chromium/content/renderer/media/media_stream_audio_source.cc new file mode 100644 index 00000000000..069f4e3825d --- /dev/null +++ b/chromium/content/renderer/media/media_stream_audio_source.cc @@ -0,0 +1,56 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "content/renderer/media/media_stream_audio_source.h" + +namespace content { + +MediaStreamAudioSource::MediaStreamAudioSource( + int render_view_id, + const StreamDeviceInfo& device_info, + const SourceStoppedCallback& stop_callback, + PeerConnectionDependencyFactory* factory) + : render_view_id_(render_view_id), + factory_(factory) { + SetDeviceInfo(device_info); + SetStopCallback(stop_callback); +} + +MediaStreamAudioSource::MediaStreamAudioSource() + : render_view_id_(-1), + factory_(NULL) { +} + +MediaStreamAudioSource::~MediaStreamAudioSource() {} + +void MediaStreamAudioSource::DoStopSource() { + if (audio_capturer_.get()) + audio_capturer_->Stop(); +} + +void MediaStreamAudioSource::AddTrack( + const blink::WebMediaStreamTrack& track, + const blink::WebMediaConstraints& constraints, + const ConstraintsCallback& callback) { + // TODO(xians): Properly implement for audio sources. + if (!local_audio_source_) { + if (!factory_->InitializeMediaStreamAudioSource(render_view_id_, + constraints, + this)) { + // The source failed to start. + // MediaStreamImpl rely on the |stop_callback| to be triggered when the + // last track is removed from the source. But in this case, the source is + // is not even started. So we need to fail both adding the track and + // trigger |stop_callback|. + callback.Run(this, false); + StopSource(); + return; + } + } + + factory_->CreateLocalAudioTrack(track); + callback.Run(this, true); +} + +} // namespace content |