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

Side by Side Diff: chrome/renderer/extensions/webrtc_native_handler.cc

Issue 47343005: Data type conversion between extensions API and Cast API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixed errors Created 7 years, 1 month 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "chrome/renderer/extensions/webrtc_native_handler.h" 5 #include "chrome/renderer/extensions/webrtc_native_handler.h"
6 6
7 #include <functional>
8
7 #include "base/logging.h" 9 #include "base/logging.h"
8 #include "chrome/common/extensions/api/webrtc_cast_send_transport.h" 10 #include "chrome/common/extensions/api/webrtc_cast_send_transport.h"
9 #include "chrome/common/extensions/api/webrtc_cast_udp_transport.h" 11 #include "chrome/common/extensions/api/webrtc_cast_udp_transport.h"
10 #include "chrome/renderer/extensions/chrome_v8_context.h" 12 #include "chrome/renderer/extensions/chrome_v8_context.h"
11 #include "chrome/renderer/media/cast_send_transport.h" 13 #include "chrome/renderer/media/cast_send_transport.h"
12 #include "chrome/renderer/media/cast_session.h" 14 #include "chrome/renderer/media/cast_session.h"
13 #include "chrome/renderer/media/cast_udp_transport.h" 15 #include "chrome/renderer/media/cast_udp_transport.h"
14 #include "content/public/renderer/v8_value_converter.h" 16 #include "content/public/renderer/v8_value_converter.h"
15 #include "net/base/host_port_pair.h" 17 #include "net/base/host_port_pair.h"
16 18
17 using content::V8ValueConverter; 19 using content::V8ValueConverter;
18 20
19 // Extension types. 21 // Extension types.
22 using extensions::api::webrtc_cast_send_transport::CodecSpecificParams;
20 using extensions::api::webrtc_cast_send_transport::RtpCaps; 23 using extensions::api::webrtc_cast_send_transport::RtpCaps;
21 using extensions::api::webrtc_cast_send_transport::RtpParams; 24 using extensions::api::webrtc_cast_send_transport::RtpParams;
22 using extensions::api::webrtc_cast_send_transport::RtpPayloadParams; 25 using extensions::api::webrtc_cast_send_transport::RtpPayloadParams;
23 using extensions::api::webrtc_cast_udp_transport::CreateInfo; 26 using extensions::api::webrtc_cast_udp_transport::CreateInfo;
24 using extensions::api::webrtc_cast_udp_transport::UdpParams; 27 using extensions::api::webrtc_cast_udp_transport::UdpParams;
25 28
26 namespace extensions { 29 namespace extensions {
27 30
28 namespace { 31 namespace {
29 const char kSendTransportNotFound[] = "The send transport cannot be found"; 32 const char kSendTransportNotFound[] = "The send transport cannot be found";
30 const char kUdpTransportNotFound[] = "The UDP transport cannot be found"; 33 const char kUdpTransportNotFound[] = "The UDP transport cannot be found";
31 const char kInvalidUdpParams[] = "Invalid UDP params"; 34 const char kInvalidUdpParams[] = "Invalid UDP params";
32 const char kInvalidRtpCaps[] = "Invalid value for RTP caps"; 35 const char kInvalidRtpCaps[] = "Invalid value for RTP caps";
33 const char kInvalidRtpParams[] = "Invalid value for RTP params"; 36 const char kInvalidRtpParams[] = "Invalid value for RTP params";
34 const char kUnableToConvertArgs[] = "Unable to convert arguments"; 37 const char kUnableToConvertArgs[] = "Unable to convert arguments";
35 const char kUnableToConvertCaps[] = "Unable to convert caps"; 38 const char kUnableToConvertCaps[] = "Unable to convert caps";
36 const char kUnableToConvertParams[] = "Unable to convert params"; 39 const char kUnableToConvertParams[] = "Unable to convert params";
37 40
38 // These helper methods are used to convert between Extension API 41 // These helper methods are used to convert between Extension API
39 // types and Cast types. 42 // types and Cast types.
43 bool ToCastCodecSpecificParams(const CodecSpecificParams& ext_params,
44 CastCodecSpecificParams* cast_params) {
45 cast_params->key = ext_params.key;
46 cast_params->value = ext_params.value;
47 return true;
scherkus (not reviewing) 2013/11/01 00:26:23 this is silly
Alpha Left Google 2013/11/01 00:39:20 Yeah returning a boolean is probably not useful he
48 }
49
50 bool FromCastCodecSpecificParams(const CastCodecSpecificParams& cast_params,
51 CodecSpecificParams* ext_params) {
52 ext_params->key = cast_params.key;
53 ext_params->value = cast_params.value;
54 return true;
scherkus (not reviewing) 2013/11/01 00:26:23 ditto
Alpha Left Google 2013/11/01 00:39:20 Done.
55 }
56
57 bool ToCastRtpPayloadParams(const RtpPayloadParams& ext_params,
58 CastRtpPayloadParams* cast_params) {
59 cast_params->payload_type = ext_params.payload_type;
60 cast_params->codec_name = ext_params.codec_name;
61 cast_params->ssrc = ext_params.ssrc ? *ext_params.ssrc : 0;
62 cast_params->clock_rate = ext_params.clock_rate ? *ext_params.clock_rate : 0;
63 cast_params->min_bitrate =
64 ext_params.min_bitrate ? *ext_params.min_bitrate : 0;
65 cast_params->max_bitrate =
66 ext_params.max_bitrate ? *ext_params.max_bitrate : 0;
67 cast_params->channels = ext_params.channels ? *ext_params.channels : 0;
68 cast_params->width = ext_params.width ? *ext_params.width : 0;
69 cast_params->height = ext_params.height ? *ext_params.height : 0;
70 for (size_t i = 0; i < ext_params.codec_specific_params.size(); ++i) {
71 CastCodecSpecificParams cast_codec_params;
72 if (!ToCastCodecSpecificParams(*ext_params.codec_specific_params[i],
73 &cast_codec_params)) {
scherkus (not reviewing) 2013/11/01 00:26:23 fix indent
Alpha Left Google 2013/11/01 00:39:20 Done.
74 return false;
75 }
76 cast_params->codec_specific_params.push_back(cast_codec_params);
77 }
78 return true;
scherkus (not reviewing) 2013/11/01 00:26:23 this function always returns true please s/bool/v
Alpha Left Google 2013/11/01 00:39:20 Done.
79 }
80
81 bool FromCastRtpPayloadParams(const CastRtpPayloadParams& cast_params,
82 RtpPayloadParams* ext_params) {
83 ext_params->payload_type = cast_params.payload_type;
84 ext_params->codec_name = cast_params.codec_name;
85 if (cast_params.ssrc) {
86 ext_params->ssrc.reset(new int);
87 *ext_params->ssrc = cast_params.ssrc;
88 }
89 if (cast_params.clock_rate) {
90 ext_params->clock_rate.reset(new int);
91 *ext_params->clock_rate = cast_params.clock_rate;
92 }
93 if (cast_params.min_bitrate) {
94 ext_params->min_bitrate.reset(new int);
95 *ext_params->min_bitrate = cast_params.min_bitrate;
96 }
97 if (cast_params.max_bitrate) {
98 ext_params->max_bitrate.reset(new int);
99 *ext_params->max_bitrate = cast_params.max_bitrate;
100 }
101 if (cast_params.channels) {
102 ext_params->channels.reset(new int);
103 *ext_params->channels = cast_params.channels;
104 }
105 if (cast_params.width) {
106 ext_params->width.reset(new int);
107 *ext_params->width = cast_params.width;
108 }
109 if (cast_params.height) {
110 ext_params->height.reset(new int);
111 *ext_params->height = cast_params.height;
112 }
113 for (size_t i = 0; i < cast_params.codec_specific_params.size(); ++i) {
114 linked_ptr<CodecSpecificParams> ext_codec_params(
115 new CodecSpecificParams());
116 if (!FromCastCodecSpecificParams(cast_params.codec_specific_params[i],
117 ext_codec_params.get())) {
118 return false;
119 }
120 ext_params->codec_specific_params.push_back(ext_codec_params);
121 }
122 return true;
123 }
124
40 bool ToCastRtpCaps(const RtpCaps& ext_caps, CastRtpCaps* cast_caps) { 125 bool ToCastRtpCaps(const RtpCaps& ext_caps, CastRtpCaps* cast_caps) {
41 NOTIMPLEMENTED(); 126 std::copy(ext_caps.rtcp_features.begin(), ext_caps.rtcp_features.end(),
127 cast_caps->rtcp_features.begin());
128 std::copy(ext_caps.fec_mechanisms.begin(), ext_caps.fec_mechanisms.end(),
129 cast_caps->fec_mechanisms.begin());
130 for (size_t i = 0; i < ext_caps.payloads.size(); ++i) {
131 CastRtpPayloadParams cast_payload_params;
132 if (!ToCastRtpPayloadParams(*ext_caps.payloads[i], &cast_payload_params)) {
133 return false;
134 }
135 cast_caps->payloads.push_back(cast_payload_params);
136 }
42 return true; 137 return true;
43 } 138 }
44 139
45 bool FromCastRtpCaps(const CastRtpCaps& cast_caps, RtpCaps* ext_caps) { 140 bool FromCastRtpCaps(const CastRtpCaps& cast_caps, RtpCaps* ext_caps) {
46 NOTIMPLEMENTED(); 141 std::copy(cast_caps.rtcp_features.begin(), cast_caps.rtcp_features.end(),
142 ext_caps->rtcp_features.begin());
143 std::copy(cast_caps.fec_mechanisms.begin(), cast_caps.fec_mechanisms.end(),
144 ext_caps->fec_mechanisms.begin());
145 for (size_t i = 0; i < cast_caps.payloads.size(); ++i) {
146 linked_ptr<RtpPayloadParams> ext_payload_params(new RtpPayloadParams());
147 if (!FromCastRtpPayloadParams(cast_caps.payloads[i],
148 ext_payload_params.get())) {
149 return false;
150 }
151 ext_caps->payloads.push_back(ext_payload_params);
152 }
47 return true; 153 return true;
48 } 154 }
49 155
50 bool ToCastRtpParams(const RtpParams& ext_params, CastRtpParams* cast_params) { 156 bool ToCastRtpParams(const RtpParams& ext_params, CastRtpParams* cast_params) {
51 NOTIMPLEMENTED(); 157 std::copy(ext_params.rtcp_features.begin(), ext_params.rtcp_features.end(),
158 cast_params->rtcp_features.begin());
159 std::copy(ext_params.fec_mechanisms.begin(), ext_params.fec_mechanisms.end(),
160 cast_params->fec_mechanisms.begin());
161 for (size_t i = 0; i < ext_params.payloads.size(); ++i) {
162 CastRtpPayloadParams cast_payload_params;
163 if (!ToCastRtpPayloadParams(*ext_params.payloads[i],
164 &cast_payload_params)) {
165 return false;
166 }
167 cast_params->payloads.push_back(cast_payload_params);
168 }
52 return true; 169 return true;
53 } 170 }
54 171
55 bool FromCastRtpParams(const CastRtpParams& cast_params, 172 bool FromCastRtpParams(const CastRtpParams& cast_params,
56 RtpParams* ext_params) { 173 RtpParams* ext_params) {
57 NOTIMPLEMENTED(); 174 std::copy(cast_params.rtcp_features.begin(), cast_params.rtcp_features.end(),
175 ext_params->rtcp_features.begin());
176 std::copy(cast_params.fec_mechanisms.begin(),
177 cast_params.fec_mechanisms.end(),
178 ext_params->fec_mechanisms.begin());
179 for (size_t i = 0; i < cast_params.payloads.size(); ++i) {
180 linked_ptr<RtpPayloadParams> ext_payload_params(new RtpPayloadParams());
181 if (!FromCastRtpPayloadParams(cast_params.payloads[i],
182 ext_payload_params.get())) {
183 return false;
184 }
185 ext_params->payloads.push_back(ext_payload_params);
186 }
58 return true; 187 return true;
59 } 188 }
60 189
61 } // namespace 190 } // namespace
62 191
63 WebRtcNativeHandler::WebRtcNativeHandler(ChromeV8Context* context) 192 WebRtcNativeHandler::WebRtcNativeHandler(ChromeV8Context* context)
64 : ObjectBackedNativeHandler(context), 193 : ObjectBackedNativeHandler(context),
65 last_transport_id_(0) { 194 last_transport_id_(0) {
66 RouteFunction("CreateCastSendTransport", 195 RouteFunction("CreateCastSendTransport",
67 base::Bind(&WebRtcNativeHandler::CreateCastSendTransport, 196 base::Bind(&WebRtcNativeHandler::CreateCastSendTransport,
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 UdpTransportMap::const_iterator iter = udp_transport_map_.find( 471 UdpTransportMap::const_iterator iter = udp_transport_map_.find(
343 transport_id); 472 transport_id);
344 if (iter != udp_transport_map_.end()) 473 if (iter != udp_transport_map_.end())
345 return iter->second.get(); 474 return iter->second.get();
346 v8::ThrowException(v8::Exception::RangeError(v8::String::New( 475 v8::ThrowException(v8::Exception::RangeError(v8::String::New(
347 kUdpTransportNotFound))); 476 kUdpTransportNotFound)));
348 return NULL; 477 return NULL;
349 } 478 }
350 479
351 } // namespace extensions 480 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/common/extensions/api/webrtc_cast_send_transport.idl ('k') | chrome/renderer/media/cast_send_transport.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698