Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1932)

Unified Diff: content/renderer/media/media_stream_audio_source.cc

Issue 1721273002: MediaStream audio object graph untangling and clean-ups. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: REBASE Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/media/media_stream_audio_source.cc
diff --git a/content/renderer/media/media_stream_audio_source.cc b/content/renderer/media/media_stream_audio_source.cc
index c643140e4dbdb6ef5d3d294477a3b7f3cb4cd785..d2027fd939e797db1171625fcf469f8466c2fd36 100644
--- a/content/renderer/media/media_stream_audio_source.cc
+++ b/content/renderer/media/media_stream_audio_source.cc
@@ -4,7 +4,9 @@
#include "content/renderer/media/media_stream_audio_source.h"
+#include "content/renderer/media/webrtc_local_audio_track.h"
#include "content/renderer/render_frame_impl.h"
+#include "third_party/WebKit/public/platform/WebMediaStreamSource.h"
namespace content {
@@ -13,20 +15,33 @@ MediaStreamAudioSource::MediaStreamAudioSource(
const StreamDeviceInfo& device_info,
const SourceStoppedCallback& stop_callback,
PeerConnectionDependencyFactory* factory)
- : render_frame_id_(render_frame_id), factory_(factory) {
+ : render_frame_id_(render_frame_id), factory_(factory),
+ weak_factory_(this) {
SetDeviceInfo(device_info);
SetStopCallback(stop_callback);
}
MediaStreamAudioSource::MediaStreamAudioSource()
- : render_frame_id_(-1), factory_(NULL) {
+ : render_frame_id_(-1), factory_(NULL), weak_factory_(this) {
}
MediaStreamAudioSource::~MediaStreamAudioSource() {}
+// static
+MediaStreamAudioSource* MediaStreamAudioSource::From(
+ const blink::WebMediaStreamSource& source) {
+ if (source.isNull() ||
+ source.getType() != blink::WebMediaStreamSource::TypeAudio) {
+ return nullptr;
+ }
+ return static_cast<MediaStreamAudioSource*>(source.getExtraData());
+}
+
void MediaStreamAudioSource::DoStopSource() {
- if (audio_capturer_.get())
+ if (audio_capturer_)
audio_capturer_->Stop();
+ if (webaudio_capturer_)
+ webaudio_capturer_->Stop();
}
void MediaStreamAudioSource::AddTrack(
@@ -52,4 +67,20 @@ void MediaStreamAudioSource::AddTrack(
callback.Run(this, MEDIA_DEVICE_OK, "");
}
+void MediaStreamAudioSource::StopAudioDeliveryTo(MediaStreamAudioTrack* track) {
+ DCHECK(track);
+ if (audio_capturer_) {
+ // The cast here is safe because only WebRtcLocalAudioTracks are ever used
+ // with WebRtcAudioCapturer sources.
+ //
+ // TODO(miu): That said, this ugly cast won't be necessary after my
+ // soon-upcoming refactoring change.
+ audio_capturer_->RemoveTrack(static_cast<WebRtcLocalAudioTrack*>(track));
+ }
+ if (webaudio_capturer_) {
+ // A separate source is created for each track, so just stop the source.
+ webaudio_capturer_->Stop();
+ }
+}
+
} // namespace content
« no previous file with comments | « content/renderer/media/media_stream_audio_source.h ('k') | content/renderer/media/media_stream_audio_track.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698