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

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

Issue 14346002: Connect webrtc MediaSourceInterface ready states with webkit WebMediaStreamSource (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: rebase Created 7 years, 8 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_source_observer.cc
diff --git a/content/renderer/media/media_stream_source_observer.cc b/content/renderer/media/media_stream_source_observer.cc
new file mode 100644
index 0000000000000000000000000000000000000000..39ba653c795db35738323dc741dac85f1863b16a
--- /dev/null
+++ b/content/renderer/media/media_stream_source_observer.cc
@@ -0,0 +1,64 @@
+// Copyright (c) 2013 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_source_observer.h"
+
+#include "base/logging.h"
+#include "content/renderer/media/media_stream_source_extra_data.h"
+
+namespace content {
+
+MediaStreamSourceObserver::MediaStreamSourceObserver(
+ webrtc::MediaSourceInterface* webrtc_source,
+ MediaStreamSourceExtraData* extra_data)
+ : state_(webrtc_source->state()),
+ webrtc_source_(webrtc_source),
+ extra_data_(extra_data) {
+ DCHECK(CalledOnValidThread());
tommi (sloooow) - chröme 2013/04/26 08:54:48 nit: this isn't needed in a ctor.
kcwu 2013/04/26 10:20:53 Done.
+ webrtc_source_->RegisterObserver(this);
+}
+
+MediaStreamSourceObserver::~MediaStreamSourceObserver() {
+ if (webrtc_source_)
tommi (sloooow) - chröme 2013/04/26 08:54:48 ...but checking if we're on the correct thread in
kcwu 2013/04/26 10:20:53 Done.
+ webrtc_source_->UnregisterObserver(this);
+}
+
+void MediaStreamSourceObserver::OnChanged() {
+ DCHECK(CalledOnValidThread());
+ // There should be no more notification after kEnded.
+ DCHECK(webrtc_source_ != NULL);
+
tommi (sloooow) - chröme 2013/04/26 08:54:48 only one empty line
kcwu 2013/04/26 10:20:53 Done.
+
+ webrtc::MediaSourceInterface::SourceState state = webrtc_source_->state();
+ if (state == state_)
+ return;
+ state_ = state;
+ WebKit::WebMediaStreamSource webkit_source(extra_data_->webkit_source());
+
+ switch (state) {
+ case webrtc::MediaSourceInterface::kInitializing:
+ // Ignore the kInitializing state since there is no match in
+ // WebMediaStreamSource::ReadyState.
+ break;
+ case webrtc::MediaSourceInterface::kLive:
+ webkit_source.setReadyState(
+ WebKit::WebMediaStreamSource::ReadyStateLive);
+ break;
+ case webrtc::MediaSourceInterface::kMuted:
+ webkit_source.setReadyState(
+ WebKit::WebMediaStreamSource::ReadyStateMuted);
+ break;
+ case webrtc::MediaSourceInterface::kEnded:
+ webkit_source.setReadyState(
+ WebKit::WebMediaStreamSource::ReadyStateEnded);
+ webrtc_source_->UnregisterObserver(this);
+ webrtc_source_ = NULL;
+ break;
+ default:
+ NOTREACHED();
+ break;
+ }
+}
+
+} // namespace content
« no previous file with comments | « content/renderer/media/media_stream_source_observer.h ('k') | content/renderer/media/mock_media_stream_dependency_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698