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

Side by Side Diff: content/renderer/media/media_stream_impl.cc

Issue 83023005: Add VideoTrackSink interface to content/public (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added AddToVideoTrack Created 7 years 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/media/media_stream_impl.h" 5 #include "content/renderer/media/media_stream_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 const VideoFrameProvider::RepaintCB& repaint_cb) { 235 const VideoFrameProvider::RepaintCB& repaint_cb) {
236 DCHECK(CalledOnValidThread()); 236 DCHECK(CalledOnValidThread());
237 blink::WebMediaStream web_stream(GetMediaStream(url)); 237 blink::WebMediaStream web_stream(GetMediaStream(url));
238 238
239 if (web_stream.isNull() || !web_stream.extraData()) 239 if (web_stream.isNull() || !web_stream.extraData())
240 return NULL; // This is not a valid stream. 240 return NULL; // This is not a valid stream.
241 241
242 DVLOG(1) << "MediaStreamImpl::GetVideoFrameProvider stream:" 242 DVLOG(1) << "MediaStreamImpl::GetVideoFrameProvider stream:"
243 << UTF16ToUTF8(web_stream.id()); 243 << UTF16ToUTF8(web_stream.id());
244 244
245 webrtc::MediaStreamInterface* stream = GetNativeMediaStream(web_stream); 245 blink::WebVector<blink::WebMediaStreamTrack> video_tracks;
246 if (stream) 246 web_stream.videoTracks(video_tracks);
247 return CreateVideoFrameProvider(stream, error_cb, repaint_cb); 247 if (video_tracks.isEmpty())
248 NOTREACHED(); 248 return NULL;
249 return NULL; 249
250 return new RTCVideoRenderer(video_tracks[0], error_cb, repaint_cb);
250 } 251 }
251 252
252 scoped_refptr<MediaStreamAudioRenderer> 253 scoped_refptr<MediaStreamAudioRenderer>
253 MediaStreamImpl::GetAudioRenderer(const GURL& url) { 254 MediaStreamImpl::GetAudioRenderer(const GURL& url) {
254 DCHECK(CalledOnValidThread()); 255 DCHECK(CalledOnValidThread());
255 blink::WebMediaStream web_stream(GetMediaStream(url)); 256 blink::WebMediaStream web_stream(GetMediaStream(url));
256 257
257 if (web_stream.isNull() || !web_stream.extraData()) 258 if (web_stream.isNull() || !web_stream.extraData())
258 return NULL; // This is not a valid stream. 259 return NULL; // This is not a valid stream.
259 260
(...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 while (source_it != local_sources_.end()) { 750 while (source_it != local_sources_.end()) {
750 if (!FindSourceInRequests(source_it->source)) { 751 if (!FindSourceInRequests(source_it->source)) {
751 StopLocalSource(source_it->source, notify_dispatcher); 752 StopLocalSource(source_it->source, notify_dispatcher);
752 source_it = local_sources_.erase(source_it); 753 source_it = local_sources_.erase(source_it);
753 } else { 754 } else {
754 ++source_it; 755 ++source_it;
755 } 756 }
756 } 757 }
757 } 758 }
758 759
759 scoped_refptr<VideoFrameProvider>
760 MediaStreamImpl::CreateVideoFrameProvider(
761 webrtc::MediaStreamInterface* stream,
762 const base::Closure& error_cb,
763 const VideoFrameProvider::RepaintCB& repaint_cb) {
764 if (stream->GetVideoTracks().empty())
765 return NULL;
766
767 DVLOG(1) << "MediaStreamImpl::CreateRemoteVideoFrameProvider label:"
768 << stream->label();
769
770 return new RTCVideoRenderer(
771 stream->GetVideoTracks()[0],
772 error_cb,
773 repaint_cb);
774 }
775
776 scoped_refptr<WebRtcAudioRenderer> MediaStreamImpl::CreateRemoteAudioRenderer( 760 scoped_refptr<WebRtcAudioRenderer> MediaStreamImpl::CreateRemoteAudioRenderer(
777 webrtc::MediaStreamInterface* stream) { 761 webrtc::MediaStreamInterface* stream) {
778 if (stream->GetAudioTracks().empty()) 762 if (stream->GetAudioTracks().empty())
779 return NULL; 763 return NULL;
780 764
781 DVLOG(1) << "MediaStreamImpl::CreateRemoteAudioRenderer label:" 765 DVLOG(1) << "MediaStreamImpl::CreateRemoteAudioRenderer label:"
782 << stream->label(); 766 << stream->label();
783 767
784 // TODO(tommi): Change the default value of session_id to be 768 // TODO(tommi): Change the default value of session_id to be
785 // StreamDeviceInfo::kNoId. Also update AudioOutputDevice etc. 769 // StreamDeviceInfo::kNoId. Also update AudioOutputDevice etc.
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
892 enable_automatic_output_device_selection( 876 enable_automatic_output_device_selection(
893 enable_automatic_output_device_selection), 877 enable_automatic_output_device_selection),
894 frame(frame), 878 frame(frame),
895 request(request) { 879 request(request) {
896 } 880 }
897 881
898 MediaStreamImpl::UserMediaRequestInfo::~UserMediaRequestInfo() { 882 MediaStreamImpl::UserMediaRequestInfo::~UserMediaRequestInfo() {
899 } 883 }
900 884
901 } // namespace content 885 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698