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

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

Issue 14346002: Connect webrtc MediaSourceInterface ready states with webkit WebMediaStreamSource (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: 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_impl.cc
diff --git a/content/renderer/media/media_stream_impl.cc b/content/renderer/media/media_stream_impl.cc
index 85c8fdebc9f401f92cedcd10c2949c76991e8705..1c983841cb37ab1ab7dca2a448274aa1e7cb7630 100644
--- a/content/renderer/media/media_stream_impl.cc
+++ b/content/renderer/media/media_stream_impl.cc
@@ -225,6 +225,35 @@ bool MediaStreamImpl::CheckMediaStream(const GURL& url) {
(!stream->GetVideoTracks().empty() || !stream->GetAudioTracks().empty()));
}
+// static
+void MediaStreamImpl::ReleaseSourceObservers(
perkj_chrome 2013/04/18 13:36:20 Why does this method has to be static? You only c
tommi (sloooow) - chröme 2013/04/23 09:50:55 ...and file a bug as well?
+ WebKit::WebMediaStream descriptor) {
+ if (descriptor.isNull())
+ return;
+
+ WebKit::WebVector<WebKit::WebMediaStreamTrack> audio_tracks;
+ descriptor.audioSources(audio_tracks);
perkj_chrome 2013/04/18 13:36:20 use audioTracks
+ for (size_t i = 0; i < audio_tracks.size(); ++i) {
+ const WebKit::WebMediaStreamSource& source = audio_tracks[i].source();
perkj_chrome 2013/04/18 13:36:20 Thinking about this- You can do source.setExtraDa
tommi (sloooow) - chröme 2013/04/23 09:50:55 If you create a new source object from another con
+ content::MediaStreamSourceExtraData* source_data =
+ static_cast<content::MediaStreamSourceExtraData*>(source.extraData());
+ if (source_data) {
+ source_data->SetSourceObserver(NULL);
+ }
+ }
+
+ WebKit::WebVector<WebKit::WebMediaStreamTrack> video_tracks;
+ descriptor.videoSources(video_tracks);
perkj_chrome 2013/04/18 13:36:20 use videoTracks
+ for (size_t i = 0; i < video_tracks.size(); ++i) {
+ const WebKit::WebMediaStreamSource& source = video_tracks[i].source();
+ content::MediaStreamSourceExtraData* source_data =
+ static_cast<content::MediaStreamSourceExtraData*>(source.extraData());
+ if (source_data) {
+ source_data->SetSourceObserver(NULL);
+ }
+ }
+}
+
scoped_refptr<webkit_media::VideoFrameProvider>
MediaStreamImpl::GetVideoFrameProvider(
const GURL& url,
@@ -593,4 +622,8 @@ void MediaStreamExtraData::OnLocalStreamStop() {
stream_stop_callback_.Run(stream_->label());
}
+MediaStreamImpl::UserMediaRequestInfo::~UserMediaRequestInfo() {
+ ReleaseSourceObservers(descriptor);
perkj_chrome 2013/04/18 13:36:20 Did I miss something or can you move the ReleaseSo
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698