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

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

Issue 10703095: New PeerConnection handler in Chrome to support latest PeerConnection draft (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added unit test and mock. Removed old bad mock. Created 8 years, 4 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 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/bind.h" 9 #include "base/bind.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/metrics/histogram.h" 11 #include "base/metrics/histogram.h"
12 #include "base/string_number_conversions.h" 12 #include "base/string_number_conversions.h"
13 #include "base/stringprintf.h" 13 #include "base/stringprintf.h"
14 #include "base/synchronization/waitable_event.h" 14 #include "base/synchronization/waitable_event.h"
15 #include "base/utf_string_conversions.h" 15 #include "base/utf_string_conversions.h"
16 #include "content/common/child_thread.h" 16 #include "content/common/child_thread.h"
17 #include "content/renderer/media/capture_video_decoder.h" 17 #include "content/renderer/media/capture_video_decoder.h"
18 #include "content/renderer/media/media_stream_extra_data.h" 18 #include "content/renderer/media/media_stream_extra_data.h"
19 #include "content/renderer/media/media_stream_dependency_factory.h" 19 #include "content/renderer/media/media_stream_dependency_factory.h"
20 #include "content/renderer/media/media_stream_dispatcher.h" 20 #include "content/renderer/media/media_stream_dispatcher.h"
21 #include "content/renderer/media/peer_connection_handler_jsep.h" 21 #include "content/renderer/media/peer_connection_handler_jsep.h"
22 #include "content/renderer/media/rtc_peer_connection_handler.h"
22 #include "content/renderer/media/video_capture_impl_manager.h" 23 #include "content/renderer/media/video_capture_impl_manager.h"
23 #include "content/renderer/media/video_capture_module_impl.h" 24 #include "content/renderer/media/video_capture_module_impl.h"
24 #include "content/renderer/media/webrtc_audio_device_impl.h" 25 #include "content/renderer/media/webrtc_audio_device_impl.h"
25 #include "content/renderer/p2p/ipc_network_manager.h" 26 #include "content/renderer/p2p/ipc_network_manager.h"
26 #include "content/renderer/p2p/ipc_socket_factory.h" 27 #include "content/renderer/p2p/ipc_socket_factory.h"
27 #include "jingle/glue/thread_wrapper.h" 28 #include "jingle/glue/thread_wrapper.h"
28 #include "media/base/message_loop_factory.h" 29 #include "media/base/message_loop_factory.h"
29 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" 30 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
30 #include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaStreamRegistr y.h" 31 #include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaStreamRegistr y.h"
31 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h" 32 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h"
32 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebMediaStre amComponent.h" 33 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebMediaStre amComponent.h"
33 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebMediaStre amDescriptor.h" 34 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebMediaStre amDescriptor.h"
34 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebMediaStre amSource.h" 35 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebMediaStre amSource.h"
35 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebVector.h" 36 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebVector.h"
36 37
37 namespace { 38 namespace {
38 const int kVideoCaptureWidth = 640; 39 const int kVideoCaptureWidth = 640;
39 const int kVideoCaptureHeight = 480; 40 const int kVideoCaptureHeight = 480;
40 const int kVideoCaptureFramePerSecond = 30; 41 const int kVideoCaptureFramePerSecond = 30;
41 42
42 // Helper enum used for histogramming calls to WebRTC APIs from JavaScript. 43 // Helper enum used for histogramming calls to WebRTC APIs from JavaScript.
43 enum JavaScriptAPIName { 44 enum JavaScriptAPIName {
44 kWebkitGetUserMedia, 45 kWebkitGetUserMedia,
45 kWebkitPeerConnection, 46 kWebkitPeerConnection,
47 kWebkitRtcPeerConnection,
46 kInvalidName 48 kInvalidName
47 }; 49 };
48 } // namespace 50 } // namespace
49 51
50 // Helper method used to collect information about the number of times 52 // Helper method used to collect information about the number of times
51 // different WebRTC API:s are called from JavaScript. 53 // different WebRTC API:s are called from JavaScript.
52 // The histogram can be viewed at chrome://histograms/WebRTC.webkitApiCount. 54 // The histogram can be viewed at chrome://histograms/WebRTC.webkitApiCount.
53 static void UpdateWebRTCMethodCount(JavaScriptAPIName api_name) { 55 static void UpdateWebRTCMethodCount(JavaScriptAPIName api_name) {
54 UMA_HISTOGRAM_ENUMERATION("WebRTC.webkitApiCount", api_name, kInvalidName); 56 UMA_HISTOGRAM_ENUMERATION("WebRTC.webkitApiCount", api_name, kInvalidName);
55 } 57 }
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 DCHECK(CalledOnValidThread()); 105 DCHECK(CalledOnValidThread());
104 if (!EnsurePeerConnectionFactory()) 106 if (!EnsurePeerConnectionFactory())
105 return NULL; 107 return NULL;
106 108
107 PeerConnectionHandlerJsep* pc_handler = new PeerConnectionHandlerJsep( 109 PeerConnectionHandlerJsep* pc_handler = new PeerConnectionHandlerJsep(
108 client, 110 client,
109 dependency_factory_.get()); 111 dependency_factory_.get());
110 return pc_handler; 112 return pc_handler;
111 } 113 }
112 114
115 WebKit::WebRTCPeerConnectionHandler*
116 MediaStreamImpl::CreateRTCPeerConnectionHandler(
117 WebKit::WebRTCPeerConnectionHandlerClient* client) {
wjia(left Chromium) 2012/08/12 17:06:52 indent.
perkj_chrome 2012/08/13 07:35:46 Done.
118 // Save histogram data so we can see how much PeerConnetion is used.
119 // The histogram counts the number of calls to the JS API
120 // webKitRTCPeerConnection.
121 UpdateWebRTCMethodCount(kWebkitRtcPeerConnection);
122 DCHECK(CalledOnValidThread());
123 if (!EnsurePeerConnectionFactory())
124 return NULL;
125
126 RTCPeerConnectionHandler* pc_handler = new RTCPeerConnectionHandler(
127 client,
128 dependency_factory_.get());
129 return pc_handler;
130 }
131
113 void MediaStreamImpl::StopLocalMediaStream( 132 void MediaStreamImpl::StopLocalMediaStream(
114 const WebKit::WebMediaStreamDescriptor& stream) { 133 const WebKit::WebMediaStreamDescriptor& stream) {
115 DVLOG(1) << "MediaStreamImpl::StopLocalMediaStream"; 134 DVLOG(1) << "MediaStreamImpl::StopLocalMediaStream";
116 135
117 MediaStreamExtraData* extra_data = 136 MediaStreamExtraData* extra_data =
118 static_cast<MediaStreamExtraData*>(stream.extraData()); 137 static_cast<MediaStreamExtraData*>(stream.extraData());
119 if (extra_data && extra_data->local_stream()) { 138 if (extra_data && extra_data->local_stream()) {
120 media_stream_dispatcher_->StopStream(extra_data->local_stream()->label()); 139 media_stream_dispatcher_->StopStream(extra_data->local_stream()->label());
121 local_media_streams_.erase(extra_data->local_stream()->label()); 140 local_media_streams_.erase(extra_data->local_stream()->label());
122 } else { 141 } else {
(...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after
553 MediaStreamExtraData::MediaStreamExtraData( 572 MediaStreamExtraData::MediaStreamExtraData(
554 webrtc::MediaStreamInterface* remote_stream) 573 webrtc::MediaStreamInterface* remote_stream)
555 : remote_stream_(remote_stream) { 574 : remote_stream_(remote_stream) {
556 } 575 }
557 MediaStreamExtraData::MediaStreamExtraData( 576 MediaStreamExtraData::MediaStreamExtraData(
558 webrtc::LocalMediaStreamInterface* local_stream) 577 webrtc::LocalMediaStreamInterface* local_stream)
559 : local_stream_(local_stream) { 578 : local_stream_(local_stream) {
560 } 579 }
561 MediaStreamExtraData::~MediaStreamExtraData() { 580 MediaStreamExtraData::~MediaStreamExtraData() {
562 } 581 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698