Update talk folder to revision=49713299.
TBR=mallinath@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/1848004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@4380 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/talk/app/webrtc/jsepsessiondescription.cc b/talk/app/webrtc/jsepsessiondescription.cc
index bc65ca5..8ec1458 100644
--- a/talk/app/webrtc/jsepsessiondescription.cc
+++ b/talk/app/webrtc/jsepsessiondescription.cc
@@ -139,7 +139,7 @@
candidate_collection_[mediasection_index].add(
new JsepIceCandidate(candidate->sdp_mid(),
- mediasection_index,
+ static_cast<int>(mediasection_index),
updated_candidate));
return true;
}
diff --git a/talk/app/webrtc/peerconnection_unittest.cc b/talk/app/webrtc/peerconnection_unittest.cc
index eed6936..250e60f 100644
--- a/talk/app/webrtc/peerconnection_unittest.cc
+++ b/talk/app/webrtc/peerconnection_unittest.cc
@@ -147,7 +147,8 @@
void AddMediaStream(bool audio, bool video) {
std::string label = kStreamLabelBase +
- talk_base::ToString<int>(peer_connection_->local_streams()->count());
+ talk_base::ToString<int>(
+ static_cast<int>(peer_connection_->local_streams()->count()));
talk_base::scoped_refptr<webrtc::MediaStreamInterface> stream =
peer_connection_factory_->CreateLocalMediaStream(label);
@@ -306,11 +307,11 @@
desc->GetTransportDescriptionByName(contents[index].name);
std::map<int, IceUfragPwdPair>::const_iterator ufragpair_it =
- ice_ufrag_pwd_.find(index);
+ ice_ufrag_pwd_.find(static_cast<int>(index));
if (ufragpair_it == ice_ufrag_pwd_.end()) {
ASSERT_FALSE(ExpectIceRestart());
- ice_ufrag_pwd_[index] = IceUfragPwdPair(transport_desc->ice_ufrag,
- transport_desc->ice_pwd);
+ ice_ufrag_pwd_[static_cast<int>(index)] =
+ IceUfragPwdPair(transport_desc->ice_ufrag, transport_desc->ice_pwd);
} else if (ExpectIceRestart()) {
const IceUfragPwdPair& ufrag_pwd = ufragpair_it->second;
EXPECT_NE(ufrag_pwd.first, transport_desc->ice_ufrag);
@@ -1007,13 +1008,13 @@
ASSERT_LE(0, initializing_client()->rendered_height());
double initiating_video_ratio =
- static_cast<double> (initializing_client()->rendered_width()) /
+ static_cast<double>(initializing_client()->rendered_width()) /
initializing_client()->rendered_height();
EXPECT_LE(requested_ratio, initiating_video_ratio);
ASSERT_LE(0, receiving_client()->rendered_height());
double receiving_video_ratio =
- static_cast<double> (receiving_client()->rendered_width()) /
+ static_cast<double>(receiving_client()->rendered_width()) /
receiving_client()->rendered_height();
EXPECT_LE(requested_ratio, receiving_video_ratio);
}
diff --git a/talk/app/webrtc/peerconnectionfactory.cc b/talk/app/webrtc/peerconnectionfactory.cc
index 7ae5a3b..316b044 100644
--- a/talk/app/webrtc/peerconnectionfactory.cc
+++ b/talk/app/webrtc/peerconnectionfactory.cc
@@ -189,7 +189,7 @@
void PeerConnectionFactory::OnMessage(talk_base::Message* msg) {
switch (msg->message_id) {
case MSG_INIT_FACTORY: {
- InitMessageData* pdata = static_cast<InitMessageData*> (msg->pdata);
+ InitMessageData* pdata = static_cast<InitMessageData*>(msg->pdata);
pdata->data() = Initialize_s();
break;
}
@@ -199,7 +199,7 @@
}
case MSG_CREATE_PEERCONNECTION: {
CreatePeerConnectionParams* pdata =
- static_cast<CreatePeerConnectionParams*> (msg->pdata);
+ static_cast<CreatePeerConnectionParams*>(msg->pdata);
pdata->peerconnection = CreatePeerConnection_s(pdata->configuration,
pdata->constraints,
pdata->allocator_factory,
@@ -214,7 +214,7 @@
}
case MSG_CREATE_VIDEOSOURCE: {
CreateVideoSourceParams* pdata =
- static_cast<CreateVideoSourceParams*> (msg->pdata);
+ static_cast<CreateVideoSourceParams*>(msg->pdata);
pdata->source = CreateVideoSource_s(pdata->capturer, pdata->constraints);
break;
}
diff --git a/talk/app/webrtc/peerconnectioninterface_unittest.cc b/talk/app/webrtc/peerconnectioninterface_unittest.cc
index 782bba1..698de3e 100644
--- a/talk/app/webrtc/peerconnectioninterface_unittest.cc
+++ b/talk/app/webrtc/peerconnectioninterface_unittest.cc
@@ -94,7 +94,7 @@
return false;
}
const cricket::MediaContentDescription* media_desc =
- static_cast<const cricket::MediaContentDescription*> (
+ static_cast<const cricket::MediaContentDescription*>(
content_info->description);
if (!media_desc || media_desc->streams().empty()) {
return false;
diff --git a/talk/app/webrtc/webrtcsdp.cc b/talk/app/webrtc/webrtcsdp.cc
index f91db8d..8d9fba1 100644
--- a/talk/app/webrtc/webrtcsdp.cc
+++ b/talk/app/webrtc/webrtcsdp.cc
@@ -632,7 +632,7 @@
void GetMediaStreamLabels(const ContentInfo* content,
std::set<std::string>* labels) {
const MediaContentDescription* media_desc =
- static_cast<const MediaContentDescription*> (
+ static_cast<const MediaContentDescription*>(
content->description);
const cricket::StreamParamsVec& streams = media_desc->streams();
for (cricket::StreamParamsVec::const_iterator it = streams.begin();
@@ -1123,7 +1123,7 @@
// trunk/cppguide.xml?showone=Streams#Streams
std::ostringstream os;
const MediaContentDescription* media_desc =
- static_cast<const MediaContentDescription*> (
+ static_cast<const MediaContentDescription*>(
content_info->description);
ASSERT(media_desc != NULL);
@@ -1928,7 +1928,7 @@
if (!media_desc) {
return;
}
- int preference = fmts.size();
+ int preference = static_cast<int>(fmts.size());
std::vector<int>::const_iterator it = fmts.begin();
bool add_new_codec = false;
for (; it != fmts.end(); ++it) {
diff --git a/talk/app/webrtc/webrtcsdp_unittest.cc b/talk/app/webrtc/webrtcsdp_unittest.cc
index 9c3debd..4892f58 100644
--- a/talk/app/webrtc/webrtcsdp_unittest.cc
+++ b/talk/app/webrtc/webrtcsdp_unittest.cc
@@ -1240,7 +1240,7 @@
int position = 0;
for (size_t i = 0; i < string1.length() && i < string2.length(); ++i) {
if (string1.c_str()[i] != string2.c_str()[i]) {
- position = i;
+ position = static_cast<int>(i);
break;
}
}
diff --git a/talk/app/webrtc/webrtcsession.cc b/talk/app/webrtc/webrtcsession.cc
index fee8d42..840cb3d 100644
--- a/talk/app/webrtc/webrtcsession.cc
+++ b/talk/app/webrtc/webrtcsession.cc
@@ -629,25 +629,24 @@
bool WebRtcSession::SetLocalDescription(SessionDescriptionInterface* desc,
std::string* err_desc) {
+ // Takes the ownership of |desc| regardless of the result.
+ talk_base::scoped_ptr<SessionDescriptionInterface> desc_temp(desc);
+
if (error() != cricket::BaseSession::ERROR_NONE) {
- delete desc;
return BadLocalSdp(SessionErrorMsg(error()), err_desc);
}
if (!desc || !desc->description()) {
- delete desc;
return BadLocalSdp(kInvalidSdp, err_desc);
}
Action action = GetAction(desc->type());
if (!ExpectSetLocalDescription(action)) {
std::string type = desc->type();
- delete desc;
return BadLocalSdp(BadStateErrMsg(type, state()), err_desc);
}
if (session_desc_factory_.secure() == cricket::SEC_REQUIRED &&
!VerifyCrypto(desc->description())) {
- delete desc;
return BadLocalSdp(kSdpWithoutCrypto, err_desc);
}
@@ -665,10 +664,10 @@
UpdateSessionDescriptionSecurePolicy(desc->description());
set_local_description(desc->description()->Copy());
- local_desc_.reset(desc);
+ local_desc_.reset(desc_temp.release());
// Transport and Media channels will be created only when offer is set.
- if (action == kOffer && !CreateChannels(desc->description())) {
+ if (action == kOffer && !CreateChannels(local_desc_->description())) {
// TODO(mallinath) - Handle CreateChannel failure, as new local description
// is applied. Restore back to old description.
return BadLocalSdp(kCreateChannelFailed, err_desc);
@@ -676,10 +675,10 @@
// Remove channel and transport proxies, if MediaContentDescription is
// rejected.
- RemoveUnusedChannelsAndTransports(desc->description());
+ RemoveUnusedChannelsAndTransports(local_desc_->description());
if (!UpdateSessionState(action, cricket::CS_LOCAL,
- desc->description(), err_desc)) {
+ local_desc_->description(), err_desc)) {
return false;
}
// Kick starting the ice candidates allocation.
@@ -697,19 +696,19 @@
bool WebRtcSession::SetRemoteDescription(SessionDescriptionInterface* desc,
std::string* err_desc) {
+ // Takes the ownership of |desc| regardless of the result.
+ talk_base::scoped_ptr<SessionDescriptionInterface> desc_temp(desc);
+
if (error() != cricket::BaseSession::ERROR_NONE) {
- delete desc;
return BadRemoteSdp(SessionErrorMsg(error()), err_desc);
}
if (!desc || !desc->description()) {
- delete desc;
return BadRemoteSdp(kInvalidSdp, err_desc);
}
Action action = GetAction(desc->type());
if (!ExpectSetRemoteDescription(action)) {
std::string type = desc->type();
- delete desc;
return BadRemoteSdp(BadStateErrMsg(type, state()), err_desc);
}
@@ -720,7 +719,6 @@
if (session_desc_factory_.secure() == cricket::SEC_REQUIRED &&
!VerifyCrypto(desc->description())) {
- delete desc;
return BadRemoteSdp(kSdpWithoutCrypto, err_desc);
}
@@ -746,7 +744,6 @@
// Update remote MediaStreams.
mediastream_signaling_->OnRemoteDescriptionChanged(desc);
if (local_description() && !UseCandidatesInSessionDescription(desc)) {
- delete desc;
return BadRemoteSdp(kInvalidCandidates, err_desc);
}
@@ -758,7 +755,7 @@
// that indicates the remote peer requests ice restart.
ice_restart_latch_->CheckForRemoteIceRestart(remote_desc_.get(),
desc);
- remote_desc_.reset(desc);
+ remote_desc_.reset(desc_temp.release());
if (error() != cricket::BaseSession::ERROR_NONE) {
return BadRemoteSdp(SessionErrorMsg(error()), err_desc);
}
@@ -1245,7 +1242,7 @@
const ContentInfos& contents = BaseSession::local_description()->contents();
for (size_t index = 0; index < contents.size(); ++index) {
if (contents[index].name == content_name) {
- *sdp_mline_index = index;
+ *sdp_mline_index = static_cast<int>(index);
content_found = true;
break;
}
@@ -1428,7 +1425,7 @@
iter != sdesc->contents().end(); ++iter) {
if (cricket::IsMediaContent(&*iter)) {
MediaContentDescription* mdesc =
- static_cast<MediaContentDescription*> (iter->description);
+ static_cast<MediaContentDescription*>(iter->description);
if (mdesc) {
mdesc->set_crypto_required(
session_desc_factory_.secure() == cricket::SEC_REQUIRED);
diff --git a/talk/app/webrtc/webrtcsession.h b/talk/app/webrtc/webrtcsession.h
index 045d347..f4fe202 100644
--- a/talk/app/webrtc/webrtcsession.h
+++ b/talk/app/webrtc/webrtcsession.h
@@ -140,8 +140,10 @@
SessionDescriptionInterface* CreateAnswer(
const MediaConstraintsInterface* constraints);
+ // The ownership of |desc| will be transferred after this call.
bool SetLocalDescription(SessionDescriptionInterface* desc,
std::string* err_desc);
+ // The ownership of |desc| will be transferred after this call.
bool SetRemoteDescription(SessionDescriptionInterface* desc,
std::string* err_desc);
bool ProcessIceMessage(const IceCandidateInterface* ice_candidate);
diff --git a/talk/app/webrtc/webrtcsession_unittest.cc b/talk/app/webrtc/webrtcsession_unittest.cc
index 78619c6..48cccf4 100644
--- a/talk/app/webrtc/webrtcsession_unittest.cc
+++ b/talk/app/webrtc/webrtcsession_unittest.cc
@@ -496,12 +496,12 @@
// Create a SDP without Crypto.
cricket::MediaSessionOptions options;
options.has_video = true;
- scoped_ptr<JsepSessionDescription> offer(
+ JsepSessionDescription* offer(
CreateRemoteOffer(options, cricket::SEC_DISABLED));
- ASSERT_TRUE(offer.get() != NULL);
+ ASSERT_TRUE(offer != NULL);
VerifyNoCryptoParams(offer->description(), false);
SetRemoteDescriptionExpectError("Called with a SDP without crypto enabled",
- offer.release());
+ offer);
const webrtc::SessionDescriptionInterface* answer =
session_->CreateAnswer(NULL);
// Answer should be NULL as no crypto params in offer.
@@ -832,7 +832,7 @@
const cricket::ContentDescription* description = content->description;
ASSERT(description != NULL);
const cricket::AudioContentDescription* audio_content_desc =
- static_cast<const cricket::AudioContentDescription*> (description);
+ static_cast<const cricket::AudioContentDescription*>(description);
ASSERT(audio_content_desc != NULL);
for (size_t i = 0; i < audio_content_desc->codecs().size(); ++i) {
if (audio_content_desc->codecs()[i].name == "CN")
@@ -2184,16 +2184,16 @@
SetLocalDescriptionWithoutError(ice_only_offer);
std::string original_offer_sdp;
EXPECT_TRUE(offer->ToString(&original_offer_sdp));
- talk_base::scoped_ptr<SessionDescriptionInterface> pranswer_with_gice(
+ SessionDescriptionInterface* pranswer_with_gice =
CreateSessionDescription(JsepSessionDescription::kPrAnswer,
- original_offer_sdp, NULL));
+ original_offer_sdp, NULL);
SetRemoteDescriptionExpectError(kPushDownPranswerTDFailed,
- pranswer_with_gice.get());
- talk_base::scoped_ptr<SessionDescriptionInterface> answer_with_gice(
+ pranswer_with_gice);
+ SessionDescriptionInterface* answer_with_gice =
CreateSessionDescription(JsepSessionDescription::kAnswer,
- original_offer_sdp, NULL));
+ original_offer_sdp, NULL);
SetRemoteDescriptionExpectError(kPushDownAnswerTDFailed,
- answer_with_gice.get());
+ answer_with_gice);
}
// Verifing local offer and remote answer have matching m-lines as per RFC 3264.
@@ -2207,13 +2207,13 @@
cricket::SessionDescription* answer_copy = answer->description()->Copy();
answer_copy->RemoveContentByName("video");
- talk_base::scoped_ptr<JsepSessionDescription> modified_answer(
- new JsepSessionDescription(JsepSessionDescription::kAnswer));
+ JsepSessionDescription* modified_answer =
+ new JsepSessionDescription(JsepSessionDescription::kAnswer);
EXPECT_TRUE(modified_answer->Initialize(answer_copy,
answer->session_id(),
answer->session_version()));
- SetRemoteDescriptionExpectError(kMlineMismatch, modified_answer.get());
+ SetRemoteDescriptionExpectError(kMlineMismatch, modified_answer);
// Modifying content names.
std::string sdp;
@@ -2227,9 +2227,9 @@
kAudioMidReplaceStr.length(),
&sdp);
- talk_base::scoped_ptr<SessionDescriptionInterface> modified_answer1(
- CreateSessionDescription(JsepSessionDescription::kAnswer, sdp, NULL));
- SetRemoteDescriptionExpectError(kMlineMismatch, modified_answer1.get());
+ SessionDescriptionInterface* modified_answer1 =
+ CreateSessionDescription(JsepSessionDescription::kAnswer, sdp, NULL);
+ SetRemoteDescriptionExpectError(kMlineMismatch, modified_answer1);
SetRemoteDescriptionWithoutError(answer.release());
}
@@ -2245,13 +2245,13 @@
cricket::SessionDescription* answer_copy = answer->description()->Copy();
answer_copy->RemoveContentByName("video");
- talk_base::scoped_ptr<JsepSessionDescription> modified_answer(
- new JsepSessionDescription(JsepSessionDescription::kAnswer));
+ JsepSessionDescription* modified_answer =
+ new JsepSessionDescription(JsepSessionDescription::kAnswer);
EXPECT_TRUE(modified_answer->Initialize(answer_copy,
answer->session_id(),
answer->session_version()));
- SetLocalDescriptionExpectError(kMlineMismatch, modified_answer.get());
+ SetLocalDescriptionExpectError(kMlineMismatch, modified_answer);
SetLocalDescriptionWithoutError(answer);
}
@@ -2388,9 +2388,9 @@
video_channel_->set_fail_set_send_codecs(true);
mediastream_signaling_.SendAudioVideoStream2();
- talk_base::scoped_ptr<SessionDescriptionInterface> answer(
- CreateRemoteAnswer(session_->local_description()));
- SetRemoteDescriptionExpectError("ERROR_CONTENT", answer.get());
+ SessionDescriptionInterface* answer =
+ CreateRemoteAnswer(session_->local_description());
+ SetRemoteDescriptionExpectError("ERROR_CONTENT", answer);
}
// Runs the loopback call test with BUNDLE and STUN disabled.
diff --git a/talk/base/common.cc b/talk/base/common.cc
index 842d925..3c0c352 100644
--- a/talk/base/common.cc
+++ b/talk/base/common.cc
@@ -25,6 +25,7 @@
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#include <signal.h>
#include <stdlib.h>
#include <stdio.h>
#include <memory.h>
@@ -51,14 +52,14 @@
void Break() {
#if WIN32
::DebugBreak();
-#elif OSX // !WIN32
- __asm__("int $3");
-#else // !OSX && !WIN32
-#if _DEBUG_HAVE_BACKTRACE
- OutputTrace();
+#else // !WIN32
+ // On POSIX systems, SIGTRAP signals debuggers to break without killing the
+ // process. If a debugger isn't attached, the uncaught SIGTRAP will crash the
+ // app.
+ raise(SIGTRAP);
#endif
- abort();
-#endif // !OSX && !WIN32
+ // If a debugger wasn't attached, we will have crashed by this point. If a
+ // debugger is attached, we'll continue from here.
}
static AssertLogger custom_assert_logger_ = NULL;
diff --git a/talk/base/common.h b/talk/base/common.h
index d624ddc..b9aeca4 100644
--- a/talk/base/common.h
+++ b/talk/base/common.h
@@ -112,7 +112,8 @@
namespace talk_base {
-// Break causes the debugger to stop executing, or the program to abort.
+// If a debugger is attached, triggers a debugger breakpoint. If a debugger is
+// not attached, forces program termination.
void Break();
inline bool Assert(bool result, const char* function, const char* file,
diff --git a/talk/base/helpers.cc b/talk/base/helpers.cc
index c2d989b..bda940b 100644
--- a/talk/base/helpers.cc
+++ b/talk/base/helpers.cc
@@ -270,7 +270,7 @@
}
uint64 CreateRandomId64() {
- return static_cast<uint64> (CreateRandomId()) << 32 | CreateRandomId();
+ return static_cast<uint64>(CreateRandomId()) << 32 | CreateRandomId();
}
uint32 CreateRandomNonZeroId() {
diff --git a/talk/base/md5.cc b/talk/base/md5.cc
index 84e06f9..7adb12d 100644
--- a/talk/base/md5.cc
+++ b/talk/base/md5.cc
@@ -53,7 +53,7 @@
if ((ctx->bits[0] = t + (static_cast<uint32>(len) << 3)) < t) {
ctx->bits[1]++; // Carry from low to high.
}
- ctx->bits[1] += len >> 29;
+ ctx->bits[1] += static_cast<uint32>(len >> 29);
t = (t >> 3) & 0x3f; // Bytes already in shsInfo->data.
// Handle any leading odd-sized chunks.
diff --git a/talk/base/sslstreamadapter_unittest.cc b/talk/base/sslstreamadapter_unittest.cc
index 3b08baf..1fe1a66 100644
--- a/talk/base/sslstreamadapter_unittest.cc
+++ b/talk/base/sslstreamadapter_unittest.cc
@@ -207,6 +207,7 @@
~SSLStreamAdapterTestBase() {
// Put it back for the next test.
talk_base::SetRandomTestMode(false);
+ talk_base::CleanupSSL();
}
static void SetUpTestCase() {
@@ -571,14 +572,13 @@
}
virtual void ReadData(talk_base::StreamInterface *stream) {
- unsigned char *buffer = new unsigned char[2000];
+ unsigned char buffer[2000];
size_t bread;
int err2;
talk_base::StreamResult r;
for (;;) {
- r = stream->Read(buffer, 2000,
- &bread, &err2);
+ r = stream->Read(buffer, 2000, &bread, &err2);
if (r == talk_base::SR_ERROR) {
// Unfortunately, errors are the way that the stream adapter
@@ -595,7 +595,8 @@
// Now parse the datagram
ASSERT_EQ(packet_size_, bread);
- uint32_t packet_num = *(reinterpret_cast<uint32_t *>(buffer));
+ unsigned char* ptr_to_buffer = buffer;
+ uint32_t packet_num = *(reinterpret_cast<uint32_t *>(ptr_to_buffer));
for (size_t i = 4; i < packet_size_; i++) {
ASSERT_EQ((packet_num & 0xff), buffer[i]);
diff --git a/talk/build/common.gypi b/talk/build/common.gypi
index f2322b1..1e9df34 100644
--- a/talk/build/common.gypi
+++ b/talk/build/common.gypi
@@ -36,7 +36,9 @@
# flood of chromium-style warnings.
'clang_use_chrome_plugins%': 0,
'libpeer_target_type%': 'static_library',
- 'java_home%': '<!(python -c "import os; print os.getenv(\'JAVA_HOME\');")',
+ # TODO(henrike): make sure waterfall bots have $JAVA_HOME configured
+ # properly and remove the default value below. See issue 2113.
+ 'java_home%': '<!(python -c "import os; print os.getenv(\'JAVA_HOME\', \'/usr/lib/jvm/java-6-sun\');")',
# Whether or not to build the ObjectiveC PeerConnection API & tests.
'libjingle_objc%' : 0,
},
diff --git a/talk/examples/peerconnection/client/main_wnd.cc b/talk/examples/peerconnection/client/main_wnd.cc
index 0a22d03..6211e99 100644
--- a/talk/examples/peerconnection/client/main_wnd.cc
+++ b/talk/examples/peerconnection/client/main_wnd.cc
@@ -499,7 +499,9 @@
size_t y = rc.bottom / 2;
for (size_t i = 0; i < ARRAYSIZE(windows); ++i) {
size_t top = y - (windows[i].height / 2);
- ::MoveWindow(windows[i].wnd, x, top, windows[i].width, windows[i].height,
+ ::MoveWindow(windows[i].wnd, static_cast<int>(x), static_cast<int>(top),
+ static_cast<int>(windows[i].width),
+ static_cast<int>(windows[i].height),
TRUE);
x += kSeparator + windows[i].width;
if (windows[i].text[0] != 'X')
diff --git a/talk/examples/peerconnection/client/peer_connection_client.cc b/talk/examples/peerconnection/client/peer_connection_client.cc
index dc66946..403fabd 100644
--- a/talk/examples/peerconnection/client/peer_connection_client.cc
+++ b/talk/examples/peerconnection/client/peer_connection_client.cc
@@ -264,7 +264,7 @@
char buffer[1024];
sprintfn(buffer, sizeof(buffer),
"GET /wait?peer_id=%i HTTP/1.0\r\n\r\n", my_id_);
- int len = strlen(buffer);
+ int len = static_cast<int>(strlen(buffer));
int sent = socket->Send(buffer, len);
ASSERT(sent == len);
UNUSED2(sent, len);
@@ -357,7 +357,7 @@
if (my_id_ == -1) {
// First response. Let's store our server assigned ID.
ASSERT(state_ == SIGNING_IN);
- my_id_ = peer_id;
+ my_id_ = static_cast<int>(peer_id);
ASSERT(my_id_ != -1);
// The body of the response will be a list of already connected peers.
@@ -427,7 +427,8 @@
}
}
} else {
- OnMessageFromPeer(peer_id, notification_data_.substr(pos));
+ OnMessageFromPeer(static_cast<int>(peer_id),
+ notification_data_.substr(pos));
}
}
diff --git a/talk/examples/peerconnection/server/data_socket.cc b/talk/examples/peerconnection/server/data_socket.cc
index 58370b4..37e7cd5 100644
--- a/talk/examples/peerconnection/server/data_socket.cc
+++ b/talk/examples/peerconnection/server/data_socket.cc
@@ -27,6 +27,7 @@
#include "talk/examples/peerconnection/server/data_socket.h"
+#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -131,7 +132,8 @@
}
bool DataSocket::Send(const std::string& data) const {
- return send(socket_, data.data(), data.length(), 0) != SOCKET_ERROR;
+ return send(socket_, data.data(), static_cast<int>(data.length()), 0) !=
+ SOCKET_ERROR;
}
bool DataSocket::Send(const std::string& status, bool connection_close,
@@ -151,7 +153,8 @@
if (!content_type.empty())
buffer += "Content-Type: " + content_type + "\r\n";
- buffer += "Content-Length: " + int2str(data.size()) + "\r\n";
+ buffer += "Content-Length: " + int2str(static_cast<int>(data.size())) +
+ "\r\n";
if (!extra_headers.empty()) {
buffer += extra_headers;
diff --git a/talk/libjingle.gyp b/talk/libjingle.gyp
index 270a55d..9207d0e 100755
--- a/talk/libjingle.gyp
+++ b/talk/libjingle.gyp
@@ -679,17 +679,15 @@
'base/winping.cc',
'base/winping.h',
],
+ 'link_settings': {
+ 'libraries': [
+ '-lcrypt32.lib',
+ '-liphlpapi.lib',
+ '-lsecur32.lib',
+ ],
+ },
# Suppress warnings about WIN32_LEAN_AND_MEAN.
'msvs_disabled_warnings': [4005],
- 'msvs_settings': {
- 'VCLibrarianTool': {
- 'AdditionalDependencies': [
- 'crypt32.lib',
- 'iphlpapi.lib',
- 'secur32.lib',
- ],
- },
- },
}],
['os_posix==1', {
'sources': [
diff --git a/talk/media/base/capturerenderadapter.cc b/talk/media/base/capturerenderadapter.cc
index 8fbf34e..d7b3995 100644
--- a/talk/media/base/capturerenderadapter.cc
+++ b/talk/media/base/capturerenderadapter.cc
@@ -39,11 +39,8 @@
}
CaptureRenderAdapter::~CaptureRenderAdapter() {
- // Have to disconnect here since |video_capturer_| lives on past the
- // destruction of this object.
- if (video_capturer_) {
- video_capturer_->SignalVideoFrame.disconnect(this);
- }
+ // has_slots destructor will disconnect us from any signals we may be
+ // connected to.
}
CaptureRenderAdapter* CaptureRenderAdapter::Create(
@@ -111,7 +108,8 @@
const bool new_resolution = iter->render_width != frame->GetWidth() ||
iter->render_height != frame->GetHeight();
if (new_resolution) {
- if (iter->renderer->SetSize(frame->GetWidth(), frame->GetHeight(), 0)) {
+ if (iter->renderer->SetSize(static_cast<int>(frame->GetWidth()),
+ static_cast<int>(frame->GetHeight()), 0)) {
iter->render_width = frame->GetWidth();
iter->render_height = frame->GetHeight();
} else {
diff --git a/talk/media/base/fakenetworkinterface.h b/talk/media/base/fakenetworkinterface.h
index 25016844..2fdd1d4 100644
--- a/talk/media/base/fakenetworkinterface.h
+++ b/talk/media/base/fakenetworkinterface.h
@@ -69,7 +69,7 @@
talk_base::CritScope cs(&crit_);
int bytes = 0;
for (size_t i = 0; i < rtp_packets_.size(); ++i) {
- bytes += rtp_packets_[i].length();
+ bytes += static_cast<int>(rtp_packets_[i].length());
}
return bytes;
}
@@ -83,7 +83,7 @@
int NumRtpPackets() {
talk_base::CritScope cs(&crit_);
- return rtp_packets_.size();
+ return static_cast<int>(rtp_packets_.size());
}
int NumRtpPackets(uint32 ssrc) {
@@ -95,7 +95,7 @@
int NumSentSsrcs() {
talk_base::CritScope cs(&crit_);
- return sent_ssrcs_.size();
+ return static_cast<int>(sent_ssrcs_.size());
}
// Note: callers are responsible for deleting the returned buffer.
@@ -109,7 +109,7 @@
int NumRtcpPackets() {
talk_base::CritScope cs(&crit_);
- return rtcp_packets_.size();
+ return static_cast<int>(rtcp_packets_.size());
}
// Note: callers are responsible for deleting the returned buffer.
@@ -218,7 +218,7 @@
}
if (ssrc == cur_ssrc) {
if (bytes) {
- *bytes += rtp_packets_[i].length();
+ *bytes += static_cast<int>(rtp_packets_[i].length());
}
if (packets) {
++(*packets);
diff --git a/talk/media/base/fakevideocapturer.h b/talk/media/base/fakevideocapturer.h
index 4f51b66..5a33265 100644
--- a/talk/media/base/fakevideocapturer.h
+++ b/talk/media/base/fakevideocapturer.h
@@ -84,7 +84,7 @@
if (fourcc == cricket::FOURCC_ARGB) {
size = width * 4 * height;
} else if (fourcc == cricket::FOURCC_I420) {
- size = cricket::VideoFrame::SizeOf(width, height);
+ size = static_cast<uint32>(cricket::VideoFrame::SizeOf(width, height));
} else {
return false; // Unsupported FOURCC.
}
diff --git a/talk/media/base/filemediaengine_unittest.cc b/talk/media/base/filemediaengine_unittest.cc
index a2c91a1..703fc11 100644
--- a/talk/media/base/filemediaengine_unittest.cc
+++ b/talk/media/base/filemediaengine_unittest.cc
@@ -163,7 +163,8 @@
for (size_t i = 0; i < ssrc_count; ++i) {
ret &= RtpTestUtility::WriteTestPackets(
RtpTestUtility::GetTestPacketCount(), false,
- RtpTestUtility::kDefaultSsrc + i, &writer);
+ static_cast<uint32>(RtpTestUtility::kDefaultSsrc + i),
+ &writer);
}
return ret;
}
diff --git a/talk/media/base/hybridvideoengine.h b/talk/media/base/hybridvideoengine.h
index 1e43a30b7..ab638c9 100644
--- a/talk/media/base/hybridvideoengine.h
+++ b/talk/media/base/hybridvideoengine.h
@@ -225,18 +225,12 @@
bool SetCaptureDevice(const Device* device) {
return video2_.SetCaptureDevice(device);
}
- bool SetVideoCapturer(VideoCapturer* capturer) {
- return video2_.SetVideoCapturer(capturer);
- }
VideoCapturer* GetVideoCapturer() const {
return video2_.GetVideoCapturer();
}
bool SetLocalRenderer(VideoRenderer* renderer) {
return video2_.SetLocalRenderer(renderer);
}
- bool SetCapture(bool capture) {
- return video2_.SetCapture(capture);
- }
sigslot::repeater2<VideoCapturer*, CaptureState> SignalCaptureStateChange;
virtual bool HasCodec1(const VideoCodec& codec) {
diff --git a/talk/media/base/mediachannel.h b/talk/media/base/mediachannel.h
index 441fbff..82b9ddb 100644
--- a/talk/media/base/mediachannel.h
+++ b/talk/media/base/mediachannel.h
@@ -234,6 +234,7 @@
void SetAll(const VideoOptions& change) {
adapt_input_to_encoder.SetFrom(change.adapt_input_to_encoder);
adapt_input_to_cpu_usage.SetFrom(change.adapt_input_to_cpu_usage);
+ adapt_cpu_with_smoothing.SetFrom(change.adapt_cpu_with_smoothing);
adapt_view_switch.SetFrom(change.adapt_view_switch);
video_noise_reduction.SetFrom(change.video_noise_reduction);
video_three_layers.SetFrom(change.video_three_layers);
@@ -256,6 +257,7 @@
bool operator==(const VideoOptions& o) const {
return adapt_input_to_encoder == o.adapt_input_to_encoder &&
adapt_input_to_cpu_usage == o.adapt_input_to_cpu_usage &&
+ adapt_cpu_with_smoothing == o.adapt_cpu_with_smoothing &&
adapt_view_switch == o.adapt_view_switch &&
video_noise_reduction == o.video_noise_reduction &&
video_three_layers == o.video_three_layers &&
@@ -279,6 +281,7 @@
ost << "VideoOptions {";
ost << ToStringIfSet("encoder adaption", adapt_input_to_encoder);
ost << ToStringIfSet("cpu adaption", adapt_input_to_cpu_usage);
+ ost << ToStringIfSet("cpu adaptation smoothing", adapt_cpu_with_smoothing);
ost << ToStringIfSet("adapt view switch", adapt_view_switch);
ost << ToStringIfSet("noise reduction", video_noise_reduction);
ost << ToStringIfSet("3 layers", video_three_layers);
@@ -303,6 +306,8 @@
Settable<bool> adapt_input_to_encoder;
// Enable CPU adaptation?
Settable<bool> adapt_input_to_cpu_usage;
+ // Enable CPU adaptation smoothing?
+ Settable<bool> adapt_cpu_with_smoothing;
// Enable Adapt View Switch?
Settable<bool> adapt_view_switch;
// Enable denoising?
diff --git a/talk/media/base/mediaengine.h b/talk/media/base/mediaengine.h
index 5cfcb4d..7a1244d 100644
--- a/talk/media/base/mediaengine.h
+++ b/talk/media/base/mediaengine.h
@@ -125,10 +125,6 @@
// TODO(tschmelcher): Add method for selecting the soundclip device.
virtual bool SetSoundDevices(const Device* in_device,
const Device* out_device) = 0;
- // Sets the externally provided video capturer. The ssrc is the ssrc of the
- // (video) stream for which the video capturer should be set.
- virtual bool SetVideoCapturer(VideoCapturer* capturer) = 0;
- virtual VideoCapturer* GetVideoCapturer() const = 0;
// Device configuration
// Gets the current speaker volume, as a value between 0 and 255.
@@ -145,8 +141,6 @@
virtual bool SetLocalMonitor(bool enable) = 0;
// Installs a callback for raw frames from the local camera.
virtual bool SetLocalRenderer(VideoRenderer* renderer) = 0;
- // Starts/stops local camera.
- virtual bool SetVideoCapture(bool capture) = 0;
virtual const std::vector<AudioCodec>& audio_codecs() = 0;
virtual const std::vector<RtpHeaderExtension>&
@@ -233,12 +227,6 @@
const Device* out_device) {
return voice_.SetDevices(in_device, out_device);
}
- virtual bool SetVideoCapturer(VideoCapturer* capturer) {
- return video_.SetVideoCapturer(capturer);
- }
- virtual VideoCapturer* GetVideoCapturer() const {
- return video_.GetVideoCapturer();
- }
virtual bool GetOutputVolume(int* level) {
return voice_.GetOutputVolume(level);
@@ -256,9 +244,6 @@
virtual bool SetLocalRenderer(VideoRenderer* renderer) {
return video_.SetLocalRenderer(renderer);
}
- virtual bool SetVideoCapture(bool capture) {
- return video_.SetCapture(capture);
- }
virtual const std::vector<AudioCodec>& audio_codecs() {
return voice_.codecs();
@@ -364,15 +349,12 @@
return true;
}
bool SetLocalRenderer(VideoRenderer* renderer) { return true; }
- bool SetCapture(bool capture) { return true; }
const std::vector<VideoCodec>& codecs() { return codecs_; }
const std::vector<RtpHeaderExtension>& rtp_header_extensions() {
return rtp_header_extensions_;
}
void SetLogging(int min_sev, const char* filter) {}
VideoFormat GetStartCaptureFormat() const { return VideoFormat(); }
- bool SetVideoCapturer(VideoCapturer* capturer) { return true; }
- VideoCapturer* GetVideoCapturer() const { return NULL; }
sigslot::signal2<VideoCapturer*, CaptureState> SignalCaptureStateChange;
private:
diff --git a/talk/media/base/testutils.cc b/talk/media/base/testutils.cc
index a5e2df9..3edb5c7 100644
--- a/talk/media/base/testutils.cc
+++ b/talk/media/base/testutils.cc
@@ -186,9 +186,10 @@
result &= rtp_packet.ReadFromByteBuffer(&buf);
result &= rtp_packet.SameExceptSeqNumTimestampSsrc(
kTestRawRtpPackets[index],
- kTestRawRtpPackets[index].sequence_number +
- loop * GetTestPacketCount(),
- kTestRawRtpPackets[index].timestamp + loop * kRtpTimestampIncrease,
+ static_cast<uint16>(kTestRawRtpPackets[index].sequence_number +
+ loop * GetTestPacketCount()),
+ static_cast<uint32>(kTestRawRtpPackets[index].timestamp +
+ loop * kRtpTimestampIncrease),
ssrc);
}
}
diff --git a/talk/media/base/videoadapter.cc b/talk/media/base/videoadapter.cc
index 1e5918a..cef4248 100644
--- a/talk/media/base/videoadapter.cc
+++ b/talk/media/base/videoadapter.cc
@@ -27,16 +27,23 @@
#include <limits.h> // For INT_MAX
-#include "talk/media/base/constants.h"
#include "talk/base/logging.h"
#include "talk/base/timeutils.h"
+#include "talk/media/base/constants.h"
#include "talk/media/base/videoframe.h"
namespace cricket {
// TODO(fbarchard): Make downgrades settable
static const int kMaxCpuDowngrades = 2; // Downgrade at most 2 times for CPU.
-static const int kDefaultDowngradeWaitTimeMs = 2000;
+// The number of milliseconds of data to require before acting on cpu sampling
+// information.
+static const size_t kCpuLoadMinSampleTime = 5000;
+// The amount of weight to give to each new cpu load sample. The lower the
+// value, the slower we'll adapt to changing cpu conditions.
+static const float kCpuLoadWeightCoefficient = 0.4f;
+// The seed value for the cpu load moving average.
+static const float kCpuLoadInitialAverage = 0.5f;
// TODO(fbarchard): Consider making scale factor table settable, to allow
// application to select quality vs performance tradeoff.
@@ -150,8 +157,8 @@
void VideoAdapter::SetInputFormat(const VideoFrame& in_frame) {
talk_base::CritScope cs(&critical_section_);
- input_format_.width = in_frame.GetWidth();
- input_format_.height = in_frame.GetHeight();
+ input_format_.width = static_cast<int>(in_frame.GetWidth());
+ input_format_.height = static_cast<int>(in_frame.GetHeight());
}
void VideoAdapter::SetInputFormat(const VideoFormat& format) {
@@ -230,9 +237,10 @@
}
if (output_num_pixels_) {
- float scale = VideoAdapter::FindClosestScale(in_frame->GetWidth(),
- in_frame->GetHeight(),
- output_num_pixels_);
+ float scale = VideoAdapter::FindClosestScale(
+ static_cast<int>(in_frame->GetWidth()),
+ static_cast<int>(in_frame->GetHeight()),
+ output_num_pixels_);
output_format_.width = static_cast<int>(in_frame->GetWidth() * scale + .5f);
output_format_.height = static_cast<int>(in_frame->GetHeight() * scale +
.5f);
@@ -291,11 +299,12 @@
// Implementation of CoordinatedVideoAdapter
CoordinatedVideoAdapter::CoordinatedVideoAdapter()
: cpu_adaptation_(false),
+ cpu_smoothing_(false),
gd_adaptation_(true),
view_adaptation_(true),
view_switch_(false),
cpu_downgrade_count_(0),
- cpu_downgrade_wait_time_(0),
+ cpu_adapt_wait_time_(0),
high_system_threshold_(kHighSystemCpuThreshold),
low_system_threshold_(kLowSystemCpuThreshold),
process_threshold_(kProcessCpuThreshold),
@@ -303,7 +312,8 @@
view_desired_interval_(0),
encoder_desired_num_pixels_(INT_MAX),
cpu_desired_num_pixels_(INT_MAX),
- adapt_reason_(0) {
+ adapt_reason_(0),
+ system_load_average_(kCpuLoadInitialAverage) {
}
// Helper function to UPGRADE or DOWNGRADE a number of pixels
@@ -406,28 +416,40 @@
if (!cpu_adaptation_) {
return;
}
+ // Update the moving average of system load. Even if we aren't smoothing,
+ // we'll still calculate this information, in case smoothing is later enabled.
+ system_load_average_ = kCpuLoadWeightCoefficient * system_load +
+ (1.0f - kCpuLoadWeightCoefficient) * system_load_average_;
+ if (cpu_smoothing_) {
+ system_load = system_load_average_;
+ }
+ // If we haven't started taking samples yet, wait until we have at least
+ // the correct number of samples per the wait time.
+ if (cpu_adapt_wait_time_ == 0) {
+ cpu_adapt_wait_time_ = talk_base::TimeAfter(kCpuLoadMinSampleTime);
+ }
AdaptRequest request = FindCpuRequest(current_cpus, max_cpus,
process_load, system_load);
+ // Make sure we're not adapting too quickly.
+ if (request != KEEP) {
+ if (talk_base::TimeIsLater(talk_base::Time(),
+ cpu_adapt_wait_time_)) {
+ LOG(LS_VERBOSE) << "VAdapt CPU load high/low but do not adapt until "
+ << talk_base::TimeUntil(cpu_adapt_wait_time_) << " ms";
+ request = KEEP;
+ }
+ }
+
// Update how many times we have downgraded due to the cpu load.
switch (request) {
case DOWNGRADE:
+ // Ignore downgrades if we have downgraded the maximum times.
if (cpu_downgrade_count_ < kMaxCpuDowngrades) {
- // Ignore downgrades if we have downgraded the maximum times or we just
- // downgraded in a short time.
- if (cpu_downgrade_wait_time_ != 0 &&
- talk_base::TimeIsLater(talk_base::Time(),
- cpu_downgrade_wait_time_)) {
- LOG(LS_VERBOSE) << "VAdapt CPU load high but do not downgrade until "
- << talk_base::TimeUntil(cpu_downgrade_wait_time_)
- << " ms.";
- request = KEEP;
- } else {
- ++cpu_downgrade_count_;
- }
+ ++cpu_downgrade_count_;
} else {
- LOG(LS_VERBOSE) << "VAdapt CPU load high but do not downgrade "
- "because maximum downgrades reached";
- SignalCpuAdaptationUnable();
+ LOG(LS_VERBOSE) << "VAdapt CPU load high but do not downgrade "
+ "because maximum downgrades reached";
+ SignalCpuAdaptationUnable();
}
break;
case UPGRADE:
@@ -517,9 +539,6 @@
if (cpu_adaptation_ && cpu_desired_num_pixels_ &&
(cpu_desired_num_pixels_ < min_num_pixels)) {
min_num_pixels = cpu_desired_num_pixels_;
- // Update the cpu_downgrade_wait_time_ if we are going to downgrade video.
- cpu_downgrade_wait_time_ =
- talk_base::TimeAfter(kDefaultDowngradeWaitTimeMs);
}
// Determine which factors are keeping adapter resolution low.
@@ -582,6 +601,14 @@
<< "x" << new_output.height
<< " Changed: " << (changed ? "true" : "false")
<< " Reason: " << kReasons[adapt_reason_];
+
+ if (changed) {
+ // When any adaptation occurs, historic CPU load levels are no longer
+ // accurate. Clear out our state so we can re-learn at the new normal.
+ cpu_adapt_wait_time_ = talk_base::TimeAfter(kCpuLoadMinSampleTime);
+ system_load_average_ = kCpuLoadInitialAverage;
+ }
+
return changed;
}
diff --git a/talk/media/base/videoadapter.h b/talk/media/base/videoadapter.h
index 14829ab..c41ac6e 100644
--- a/talk/media/base/videoadapter.h
+++ b/talk/media/base/videoadapter.h
@@ -105,6 +105,15 @@
// Enable or disable video adaptation due to the change of the CPU load.
void set_cpu_adaptation(bool enable) { cpu_adaptation_ = enable; }
bool cpu_adaptation() const { return cpu_adaptation_; }
+ // Enable or disable smoothing when doing CPU adaptation. When smoothing is
+ // enabled, system CPU load is tracked using an exponential weighted
+ // average.
+ void set_cpu_smoothing(bool enable) {
+ LOG(LS_INFO) << "CPU smoothing is now "
+ << (enable ? "enabled" : "disabled");
+ cpu_smoothing_ = enable;
+ }
+ bool cpu_smoothing() const { return cpu_smoothing_; }
// Enable or disable video adaptation due to the change of the GD
void set_gd_adaptation(bool enable) { gd_adaptation_ = enable; }
bool gd_adaptation() const { return gd_adaptation_; }
@@ -121,12 +130,12 @@
// When the video is decreased, set the waiting time for CPU adaptation to
// decrease video again.
- void set_cpu_downgrade_wait_time(uint32 cpu_downgrade_wait_time) {
- if (cpu_downgrade_wait_time_ != static_cast<int>(cpu_downgrade_wait_time)) {
- LOG(LS_INFO) << "VAdapt Change Cpu Downgrade Wait Time from: "
- << cpu_downgrade_wait_time_ << " to "
- << cpu_downgrade_wait_time;
- cpu_downgrade_wait_time_ = static_cast<int>(cpu_downgrade_wait_time);
+ void set_cpu_adapt_wait_time(uint32 cpu_adapt_wait_time) {
+ if (cpu_adapt_wait_time_ != static_cast<int>(cpu_adapt_wait_time)) {
+ LOG(LS_INFO) << "VAdapt Change Cpu Adapt Wait Time from: "
+ << cpu_adapt_wait_time_ << " to "
+ << cpu_adapt_wait_time;
+ cpu_adapt_wait_time_ = static_cast<int>(cpu_adapt_wait_time);
}
}
// CPU system load high threshold for reducing resolution. e.g. 0.85f
@@ -175,7 +184,7 @@
private:
// Adapt to the minimum of the formats the server requests, the CPU wants, and
- // the encoder wants. Returns true if resolution changed.
+ // the encoder wants. Returns true if resolution changed.
bool AdaptToMinimumFormat(int* new_width, int* new_height);
bool IsMinimumFormat(int pixels);
void StepPixelCount(CoordinatedVideoAdapter::AdaptRequest request,
@@ -185,11 +194,12 @@
float process_load, float system_load);
bool cpu_adaptation_; // True if cpu adaptation is enabled.
+ bool cpu_smoothing_; // True if cpu smoothing is enabled (with adaptation).
bool gd_adaptation_; // True if gd adaptation is enabled.
bool view_adaptation_; // True if view adaptation is enabled.
bool view_switch_; // True if view switch is enabled.
int cpu_downgrade_count_;
- int cpu_downgrade_wait_time_;
+ int cpu_adapt_wait_time_;
// cpu system load thresholds relative to max cpus.
float high_system_threshold_;
float low_system_threshold_;
@@ -205,6 +215,10 @@
// The critical section to protect handling requests.
talk_base::CriticalSection request_critical_section_;
+ // The weighted average of cpu load over time. It's always updated (if cpu
+ // adaptation is on), but only used if cpu_smoothing_ is set.
+ float system_load_average_;
+
DISALLOW_COPY_AND_ASSIGN(CoordinatedVideoAdapter);
};
diff --git a/talk/media/base/videoengine_unittest.h b/talk/media/base/videoengine_unittest.h
index dcef4ac..0679f6a 100644
--- a/talk/media/base/videoengine_unittest.h
+++ b/talk/media/base/videoengine_unittest.h
@@ -76,7 +76,7 @@
}
inline int TimeBetweenSend(const cricket::VideoCodec& codec) {
- return static_cast<int> (
+ return static_cast<int>(
cricket::VideoFormat::FpsToInterval(codec.framerate) /
talk_base::kNumNanosecsPerMillisec);
}
@@ -95,12 +95,12 @@
}
bool is_camera_on() const { return T::GetVideoCapturer()->IsRunning(); }
void set_has_senders(bool has_senders) {
+ cricket::VideoCapturer* video_capturer = T::GetVideoCapturer();
if (has_senders) {
- this->RegisterSender(this,
- &VideoEngineOverride<T>::OnLocalFrame,
- &VideoEngineOverride<T>::OnLocalFrameFormat);
+ video_capturer->SignalVideoFrame.connect(this,
+ &VideoEngineOverride<T>::OnLocalFrame);
} else {
- this->UnregisterSender(this);
+ video_capturer->SignalVideoFrame.disconnect(this);
}
}
void OnLocalFrame(cricket::VideoCapturer*,
@@ -164,39 +164,6 @@
}
#endif
- // Tests starting and stopping the capturer.
- void SetCapture() {
- EXPECT_FALSE(engine_.GetVideoCapturer());
- EXPECT_TRUE(engine_.Init(talk_base::Thread::Current()));
- ResetCapturer();
- EXPECT_TRUE(engine_.GetVideoCapturer() != NULL);
- EXPECT_FALSE(engine_.is_camera_on());
- EXPECT_TRUE(engine_.SetCapture(true));
- EXPECT_TRUE(engine_.is_camera_on());
- EXPECT_TRUE(engine_.SetCapture(false));
- EXPECT_FALSE(engine_.is_camera_on());
- engine_.set_has_senders(true);
- EXPECT_TRUE(engine_.is_camera_on());
- EXPECT_TRUE(engine_.SetCapture(true));
- EXPECT_TRUE(engine_.is_camera_on());
- EXPECT_TRUE(engine_.SetCapture(false));
- EXPECT_TRUE(engine_.is_camera_on());
- engine_.set_has_senders(false);
- EXPECT_FALSE(engine_.is_camera_on());
- EXPECT_TRUE(engine_.SetCapture(true));
- EXPECT_TRUE(engine_.is_camera_on());
- EXPECT_TRUE(engine_.SetCapture(false));
- EXPECT_FALSE(engine_.is_camera_on());
- EXPECT_TRUE(engine_.SetVideoCapturer(NULL));
- EXPECT_TRUE(engine_.GetVideoCapturer() == NULL);
- engine_.Terminate();
- }
- void ResetCapturer() {
- cricket::Device device("test", "device");
- video_capturer_.reset(new cricket::FakeVideoCapturer);
- EXPECT_TRUE(engine_.SetVideoCapturer(video_capturer_.get()));
- }
-
void ConstrainNewCodecBody() {
cricket::VideoCodec empty, in, out;
cricket::VideoCodec max_settings(engine_.codecs()[0].id,
@@ -482,9 +449,6 @@
virtual void SetUp() {
cricket::Device device("test", "device");
EXPECT_TRUE(engine_.Init(talk_base::Thread::Current()));
- video_capturer_.reset(new cricket::FakeVideoCapturer);
- EXPECT_TRUE(video_capturer_.get() != NULL);
- EXPECT_TRUE(engine_.SetVideoCapturer(video_capturer_.get()));
channel_.reset(engine_.CreateChannel(NULL));
EXPECT_TRUE(channel_.get() != NULL);
ConnectVideoChannelError();
@@ -494,19 +458,34 @@
media_error_ = cricket::VideoMediaChannel::ERROR_NONE;
channel_->SetRecvCodecs(engine_.codecs());
EXPECT_TRUE(channel_->AddSendStream(DefaultSendStreamParams()));
+
+ video_capturer_.reset(new cricket::FakeVideoCapturer);
+ cricket::VideoFormat format(640, 480,
+ cricket::VideoFormat::FpsToInterval(30),
+ cricket::FOURCC_I420);
+ EXPECT_EQ(cricket::CS_RUNNING, video_capturer_->Start(format));
+ EXPECT_TRUE(channel_->SetCapturer(kSsrc, video_capturer_.get()));
}
void SetUpSecondStream() {
EXPECT_TRUE(channel_->AddRecvStream(
cricket::StreamParams::CreateLegacy(kSsrc)));
EXPECT_TRUE(channel_->AddRecvStream(
- cricket::StreamParams::CreateLegacy(kSsrc+2)));
+ cricket::StreamParams::CreateLegacy(kSsrc + 2)));
// SetUp() already added kSsrc make sure duplicate SSRCs cant be added.
EXPECT_FALSE(channel_->AddSendStream(
cricket::StreamParams::CreateLegacy(kSsrc)));
EXPECT_TRUE(channel_->AddSendStream(
- cricket::StreamParams::CreateLegacy(kSsrc+2)));
+ cricket::StreamParams::CreateLegacy(kSsrc + 2)));
+
+ video_capturer_2_.reset(new cricket::FakeVideoCapturer());
+ cricket::VideoFormat format(640, 480,
+ cricket::VideoFormat::FpsToInterval(30),
+ cricket::FOURCC_I420);
+ EXPECT_EQ(cricket::CS_RUNNING, video_capturer_2_->Start(format));
+
+ EXPECT_TRUE(channel_->SetCapturer(kSsrc + 2, video_capturer_2_.get()));
// Make the second renderer available for use by a new stream.
- EXPECT_TRUE(channel_->SetRenderer(kSsrc+2, &renderer2_));
+ EXPECT_TRUE(channel_->SetRenderer(kSsrc + 2, &renderer2_));
}
virtual void TearDown() {
channel_.reset();
@@ -529,6 +508,19 @@
bool SetOneCodec(const cricket::VideoCodec& codec) {
std::vector<cricket::VideoCodec> codecs;
codecs.push_back(codec);
+
+ cricket::VideoFormat capture_format(codec.width, codec.height,
+ cricket::VideoFormat::FpsToInterval(codec.framerate),
+ cricket::FOURCC_I420);
+
+ if (video_capturer_) {
+ EXPECT_EQ(cricket::CS_RUNNING, video_capturer_->Start(capture_format));
+ }
+
+ if (video_capturer_2_) {
+ EXPECT_EQ(cricket::CS_RUNNING, video_capturer_2_->Start(capture_format));
+ }
+
bool sending = channel_->sending();
bool success = SetSend(false);
if (success)
@@ -550,6 +542,9 @@
return NumRtpPackets();
}
bool SendFrame() {
+ if (video_capturer_2_) {
+ video_capturer_2_->CaptureFrame();
+ }
return video_capturer_.get() &&
video_capturer_->CaptureFrame();
}
@@ -705,6 +700,7 @@
// Test that SetSend works.
void SetSend() {
EXPECT_FALSE(channel_->sending());
+ EXPECT_TRUE(channel_->SetCapturer(kSsrc, video_capturer_.get()));
EXPECT_TRUE(SetOneCodec(DefaultCodec()));
EXPECT_FALSE(channel_->sending());
EXPECT_TRUE(SetSend(true));
@@ -877,6 +873,7 @@
EXPECT_TRUE(channel_->SetOptions(vmo));
EXPECT_TRUE(channel_->AddRecvStream(
cricket::StreamParams::CreateLegacy(1234)));
+ channel_->UpdateAspectRatio(640, 400);
EXPECT_TRUE(SetSend(true));
EXPECT_TRUE(channel_->SetRender(true));
EXPECT_TRUE(SendFrame());
@@ -948,6 +945,7 @@
EXPECT_TRUE(SetDefaultCodec());
EXPECT_TRUE(channel_->AddSendStream(
cricket::StreamParams::CreateLegacy(999)));
+ EXPECT_TRUE(channel_->SetCapturer(999u, video_capturer_.get()));
EXPECT_TRUE(SetSend(true));
EXPECT_TRUE(WaitAndSendFrame(0));
EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout);
@@ -1012,6 +1010,7 @@
EXPECT_TRUE(channel_->AddSendStream(
cricket::StreamParams::CreateLegacy(789u)));
+ EXPECT_TRUE(channel_->SetCapturer(789u, video_capturer_.get()));
EXPECT_EQ(rtp_packets, NumRtpPackets());
// Wait 30ms to guarantee the engine does not drop the frame.
EXPECT_TRUE(WaitAndSendFrame(30));
@@ -1236,13 +1235,25 @@
EXPECT_TRUE(capturer->CaptureCustomFrame(format.width, format.height,
cricket::FOURCC_I420));
++captured_frames;
- EXPECT_FRAME_WAIT(captured_frames, format.width, format.height, kTimeout);
+ // Wait until frame of right size is captured.
+ EXPECT_TRUE_WAIT(renderer_.num_rendered_frames() >= captured_frames &&
+ format.width == renderer_.width() &&
+ format.height == renderer_.height(), kTimeout);
+ EXPECT_GE(renderer_.num_rendered_frames(), captured_frames);
+ EXPECT_EQ(format.width, renderer_.width());
+ EXPECT_EQ(format.height, renderer_.height());
+ captured_frames = renderer_.num_rendered_frames() + 1;
EXPECT_FALSE(renderer_.black_frame());
EXPECT_TRUE(channel_->SetCapturer(kSsrc, NULL));
- // Make sure a black frame is generated as no new frame is captured.
- // A black frame should be the resolution of the send codec.
- ++captured_frames;
- EXPECT_FRAME_WAIT(captured_frames, codec.width, codec.height, kTimeout);
+ // Make sure a black frame is generated within the specified timeout.
+ // The black frame should be the resolution of the send codec.
+ EXPECT_TRUE_WAIT(renderer_.num_rendered_frames() >= captured_frames &&
+ codec.width == renderer_.width() &&
+ codec.height == renderer_.height() &&
+ renderer_.black_frame(), kTimeout);
+ EXPECT_GE(renderer_.num_rendered_frames(), captured_frames);
+ EXPECT_EQ(codec.width, renderer_.width());
+ EXPECT_EQ(codec.height, renderer_.height());
EXPECT_TRUE(renderer_.black_frame());
// The black frame has the same timestamp as the next frame since it's
@@ -1263,13 +1274,18 @@
EXPECT_EQ(0, renderer_.num_rendered_frames());
EXPECT_TRUE(SendFrame());
EXPECT_FRAME_WAIT(1, 640, 400, kTimeout);
+ // Remove the capturer.
+ EXPECT_TRUE(channel_->SetCapturer(kSsrc, NULL));
// No capturer was added, so this RemoveCapturer should
// fail.
EXPECT_FALSE(channel_->SetCapturer(kSsrc, NULL));
- // Wait for kTimeout, to make sure no frames are sent
- WAIT(renderer_.num_rendered_frames() != 1, kTimeout);
- // Still a single frame, from the original SendFrame() call.
- EXPECT_EQ(1, renderer_.num_rendered_frames());
+ // Wait for frames to stop flowing.
+ talk_base::Thread::Current()->ProcessMessages(300);
+ int num_frames = renderer_.num_rendered_frames();
+ // Wait to make sure no more frames are sent
+ WAIT(renderer_.num_rendered_frames() != num_frames, 300);
+ // Verify no more frames were sent.
+ EXPECT_EQ(num_frames, renderer_.num_rendered_frames());
}
// Tests that we can add and remove capturer as unique sources.
@@ -1328,6 +1344,9 @@
// Capture a frame with additional capturer2, frames should be received
EXPECT_TRUE(capturer2->CaptureCustomFrame(1024, 768, cricket::FOURCC_I420));
EXPECT_FRAME_ON_RENDERER_WAIT(renderer2, 1, 1024, 768, kTimeout);
+ // Successfully remove the capturer.
+ EXPECT_TRUE(channel_->SetCapturer(kSsrc, NULL));
+ // Fail to re-remove the capturer.
EXPECT_FALSE(channel_->SetCapturer(kSsrc, NULL));
// The capturers must be unregistered here as it runs out of it's scope
// next.
@@ -1372,8 +1391,9 @@
EXPECT_TRUE(capturer->CaptureCustomFrame(kWidth, kHeight,
cricket::FOURCC_ARGB));
EXPECT_TRUE(capturer->CaptureFrame());
- EXPECT_FRAME_ON_RENDERER_WAIT(renderer, 2, kScaledWidth, kScaledHeight,
- kTimeout);
+ EXPECT_EQ_WAIT(2, renderer.num_rendered_frames(), kTimeout);
+ EXPECT_TRUE_WAIT(kScaledWidth == renderer.width() &&
+ kScaledHeight == renderer.height(), kTimeout);
EXPECT_TRUE(channel_->SetCapturer(kSsrc, NULL));
}
@@ -1626,12 +1646,15 @@
EXPECT_FALSE(channel_->AddRecvStream(
cricket::StreamParams::CreateLegacy(kSsrc)));
+ EXPECT_TRUE(channel_->SetCapturer(kSsrc, video_capturer_.get()));
+
SendAndReceive(codec);
EXPECT_TRUE(channel_->RemoveSendStream(0));
}
VideoEngineOverride<E> engine_;
talk_base::scoped_ptr<cricket::FakeVideoCapturer> video_capturer_;
+ talk_base::scoped_ptr<cricket::FakeVideoCapturer> video_capturer_2_;
talk_base::scoped_ptr<C> channel_;
cricket::FakeNetworkInterface network_interface_;
cricket::FakeVideoRenderer renderer_;
diff --git a/talk/media/base/videoframe.cc b/talk/media/base/videoframe.cc
index f5b0b6d..7a82305 100644
--- a/talk/media/base/videoframe.cc
+++ b/talk/media/base/videoframe.cc
@@ -87,8 +87,8 @@
uint8* dst_y, uint8* dst_u, uint8* dst_v,
int32 dst_pitch_y, int32 dst_pitch_u, int32 dst_pitch_v) const {
#if !defined(DISABLE_YUV)
- int32 src_width = GetWidth();
- int32 src_height = GetHeight();
+ int32 src_width = static_cast<int>(GetWidth());
+ int32 src_height = static_cast<int>(GetHeight());
return libyuv::I420Copy(GetYPlane(), GetYPitch(),
GetUPlane(), GetUPitch(),
GetVPlane(), GetVPitch(),
@@ -147,7 +147,8 @@
} else if (src_width * height < src_height * width) {
// Reduce the input height.
src_height = src_width * height / width;
- int32 iheight_offset = (GetHeight() - src_height) >> 2;
+ int32 iheight_offset = static_cast<int32>(
+ (GetHeight() - src_height) >> 2);
iheight_offset <<= 1; // Ensure that iheight_offset is even.
src_y += iheight_offset * GetYPitch();
src_u += iheight_offset / 2 * GetUPitch();
@@ -160,9 +161,9 @@
// Scale to the output I420 frame.
libyuv::Scale(src_y, src_u, src_v,
GetYPitch(), GetUPitch(), GetVPitch(),
- src_width, src_height,
+ static_cast<int>(src_width), static_cast<int>(src_height),
dst_y, dst_u, dst_v, dst_pitch_y, dst_pitch_u, dst_pitch_v,
- width, height, interpolate);
+ static_cast<int>(width), static_cast<int>(height), interpolate);
#endif
}
@@ -180,7 +181,9 @@
uint8* dst_u = dst_y + dst_width * dst_height;
uint8* dst_v = dst_u + ((dst_width + 1) >> 1) * ((dst_height + 1) >> 1);
StretchToPlanes(dst_y, dst_u, dst_v,
- dst_width, (dst_width + 1) >> 1, (dst_width + 1) >> 1,
+ static_cast<int32>(dst_width),
+ static_cast<int32>((dst_width + 1) >> 1),
+ static_cast<int32>((dst_width + 1) >> 1),
dst_width, dst_height, interpolate, vert_crop);
}
return needed;
@@ -203,7 +206,8 @@
VideoFrame* VideoFrame::Stretch(size_t dst_width, size_t dst_height,
bool interpolate, bool vert_crop) const {
- VideoFrame* dest = CreateEmptyFrame(dst_width, dst_height,
+ VideoFrame* dest = CreateEmptyFrame(static_cast<int>(dst_width),
+ static_cast<int>(dst_height),
GetPixelWidth(), GetPixelHeight(),
GetElapsedTime(), GetTimeStamp());
if (dest) {
@@ -217,7 +221,9 @@
return libyuv::I420Rect(GetYPlane(), GetYPitch(),
GetUPlane(), GetUPitch(),
GetVPlane(), GetVPitch(),
- 0, 0, GetWidth(), GetHeight(),
+ 0, 0,
+ static_cast<int>(GetWidth()),
+ static_cast<int>(GetHeight()),
16, 128, 128) == 0;
#else
int uv_size = GetUPitch() * GetChromaHeight();
diff --git a/talk/media/devices/fakedevicemanager.h b/talk/media/devices/fakedevicemanager.h
index 7000ef9..0dbed43 100644
--- a/talk/media/devices/fakedevicemanager.h
+++ b/talk/media/devices/fakedevicemanager.h
@@ -152,21 +152,24 @@
void SetAudioInputDevices(const std::vector<std::string>& devices) {
input_devices_.clear();
for (size_t i = 0; i < devices.size(); ++i) {
- input_devices_.push_back(Device(devices[i], i));
+ input_devices_.push_back(Device(devices[i],
+ static_cast<int>(i)));
}
SignalDevicesChange();
}
void SetAudioOutputDevices(const std::vector<std::string>& devices) {
output_devices_.clear();
for (size_t i = 0; i < devices.size(); ++i) {
- output_devices_.push_back(Device(devices[i], i));
+ output_devices_.push_back(Device(devices[i],
+ static_cast<int>(i)));
}
SignalDevicesChange();
}
void SetVideoCaptureDevices(const std::vector<std::string>& devices) {
vidcap_devices_.clear();
for (size_t i = 0; i < devices.size(); ++i) {
- vidcap_devices_.push_back(Device(devices[i], i));
+ vidcap_devices_.push_back(Device(devices[i],
+ static_cast<int>(i)));
}
SignalDevicesChange();
}
diff --git a/talk/media/devices/filevideocapturer.cc b/talk/media/devices/filevideocapturer.cc
index 8946fea..1747816 100644
--- a/talk/media/devices/filevideocapturer.cc
+++ b/talk/media/devices/filevideocapturer.cc
@@ -157,7 +157,7 @@
FileVideoCapturer::~FileVideoCapturer() {
Stop();
- delete[] static_cast<char*> (captured_frame_.data);
+ delete[] static_cast<char*>(captured_frame_.data);
}
bool FileVideoCapturer::Init(const Device& device) {
@@ -330,7 +330,7 @@
// 2.2 Reallocate memory for the frame data if necessary.
if (frame_buffer_size_ < captured_frame_.data_size) {
frame_buffer_size_ = captured_frame_.data_size;
- delete[] static_cast<char*> (captured_frame_.data);
+ delete[] static_cast<char*>(captured_frame_.data);
captured_frame_.data = new char[frame_buffer_size_];
}
// 2.3 Read the frame adata.
diff --git a/talk/media/sctp/sctpdataengine.cc b/talk/media/sctp/sctpdataengine.cc
index cb70182..935ccb8 100644
--- a/talk/media/sctp/sctpdataengine.cc
+++ b/talk/media/sctp/sctpdataengine.cc
@@ -27,7 +27,6 @@
#include "talk/media/sctp/sctpdataengine.h"
-#include <errno.h>
#include <stdarg.h>
#include <stdio.h>
#include <vector>
@@ -40,14 +39,6 @@
#include "talk/media/base/streamparams.h"
#include "usrsctplib/usrsctp.h"
-#ifdef _WIN32
-// EINPROGRESS gets #defined to WSAEINPROGRESS in some headers above, which
-// is not 112. 112 is the value defined in <errno.h>. usrsctp uses 112 for
-// EINPROGRESS.
-#undef EINPROGRESS
-#define EINPROGRESS (112)
-#endif
-
namespace cricket {
// This is the SCTP port to use. It is passed along the wire and the listener
@@ -343,8 +334,9 @@
sockaddr_conn remote_sconn = GetSctpSockAddr(remote_port_);
int connect_result = usrsctp_connect(
sock_, reinterpret_cast<sockaddr *>(&remote_sconn), sizeof(remote_sconn));
- if (connect_result < 0 && errno != EINPROGRESS) {
- LOG_ERRNO(LS_ERROR) << debug_name_ << "Failed usrsctp_connect";
+ if (connect_result < 0 && errno != SCTP_EINPROGRESS) {
+ LOG_ERRNO(LS_ERROR) << debug_name_ << "Failed usrsctp_connect. got errno="
+ << errno << ", but wanted " << SCTP_EINPROGRESS;
CloseSctpSocket();
return false;
}
diff --git a/talk/media/sctp/sctpdataengine.h b/talk/media/sctp/sctpdataengine.h
index 9f95666..b0d44d3 100644
--- a/talk/media/sctp/sctpdataengine.h
+++ b/talk/media/sctp/sctpdataengine.h
@@ -28,9 +28,19 @@
#ifndef TALK_MEDIA_SCTP_SCTPDATAENGINE_H_
#define TALK_MEDIA_SCTP_SCTPDATAENGINE_H_
+#include <errno.h>
#include <string>
#include <vector>
+namespace cricket {
+// Some ERRNO values get re-#defined to WSA* equivalents in some talk/
+// headers. We save the original ones in an enum.
+enum PreservedErrno {
+ SCTP_EINPROGRESS = EINPROGRESS,
+ SCTP_EWOULDBLOCK = EWOULDBLOCK
+};
+} // namespace cricket
+
#include "talk/base/buffer.h"
#include "talk/base/scoped_ptr.h"
#include "talk/media/base/codec.h"
diff --git a/talk/media/webrtc/fakewebrtcdeviceinfo.h b/talk/media/webrtc/fakewebrtcdeviceinfo.h
index 210792a..585f31e 100644
--- a/talk/media/webrtc/fakewebrtcdeviceinfo.h
+++ b/talk/media/webrtc/fakewebrtcdeviceinfo.h
@@ -53,7 +53,7 @@
dev->caps.push_back(cap);
}
virtual uint32_t NumberOfDevices() {
- return devices_.size();
+ return static_cast<int>(devices_.size());
}
virtual int32_t GetDeviceName(uint32_t device_num,
char* device_name,
@@ -77,7 +77,7 @@
virtual int32_t NumberOfCapabilities(const char* device_id) {
Device* dev = GetDeviceById(device_id);
if (!dev) return -1;
- return dev->caps.size();
+ return static_cast<int32_t>(dev->caps.size());
}
virtual int32_t GetCapability(const char* device_id,
const uint32_t device_cap_num,
diff --git a/talk/media/webrtc/fakewebrtcvideoengine.h b/talk/media/webrtc/fakewebrtcvideoengine.h
index 68963f7..a64beb9 100644
--- a/talk/media/webrtc/fakewebrtcvideoengine.h
+++ b/talk/media/webrtc/fakewebrtcvideoengine.h
@@ -392,7 +392,7 @@
return -1;
}
- int GetNumChannels() const { return channels_.size(); }
+ int GetNumChannels() const { return static_cast<int>(channels_.size()); }
bool IsChannel(int channel) const {
return (channels_.find(channel) != channels_.end());
}
@@ -401,7 +401,7 @@
}
int GetLastCapturer() const { return last_capturer_; }
- int GetNumCapturers() const { return capturers_.size(); }
+ int GetNumCapturers() const { return static_cast<int>(capturers_.size()); }
void set_fail_alloc_capturer(bool fail_alloc_capturer) {
fail_alloc_capturer_ = fail_alloc_capturer;
}
@@ -497,7 +497,8 @@
}
int GetNumSsrcs(int channel) const {
WEBRTC_ASSERT_CHANNEL(channel);
- return channels_.find(channel)->second->ssrcs_.size();
+ return static_cast<int>(
+ channels_.find(channel)->second->ssrcs_.size());
}
bool GetIsTransmitting(int channel) const {
WEBRTC_ASSERT_CHANNEL(channel);
@@ -518,7 +519,8 @@
};
int GetNumExternalDecoderRegistered(int channel) const {
WEBRTC_ASSERT_CHANNEL(channel);
- return channels_.find(channel)->second->ext_decoder_pl_types_.size();
+ return static_cast<int>(
+ channels_.find(channel)->second->ext_decoder_pl_types_.size());
};
bool ExternalEncoderRegistered(int channel,
unsigned int pl_type) const {
@@ -528,13 +530,15 @@
};
int GetNumExternalEncoderRegistered(int channel) const {
WEBRTC_ASSERT_CHANNEL(channel);
- return channels_.find(channel)->second->ext_encoder_pl_types_.size();
+ return static_cast<int>(
+ channels_.find(channel)->second->ext_encoder_pl_types_.size());
};
int GetTotalNumExternalEncoderRegistered() const {
std::map<int, Channel*>::const_iterator it;
int total_num_registered = 0;
for (it = channels_.begin(); it != channels_.end(); ++it)
- total_num_registered += it->second->ext_encoder_pl_types_.size();
+ total_num_registered +=
+ static_cast<int>(it->second->ext_encoder_pl_types_.size());
return total_num_registered;
}
void SetSendBitrates(int channel, unsigned int video_bitrate,
@@ -708,10 +712,8 @@
WEBRTC_STUB(DeregisterDecoderObserver, (const int));
WEBRTC_STUB(SendKeyFrame, (const int));
WEBRTC_STUB(WaitForFirstKeyFrame, (const int, const bool));
-#ifdef USE_WEBRTC_DEV_BRANCH
WEBRTC_STUB(StartDebugRecording, (int, const char*));
WEBRTC_STUB(StopDebugRecording, (int));
-#endif
// webrtc::ViECapture
WEBRTC_STUB(NumberOfCaptureDevices, ());
@@ -783,12 +785,10 @@
// Not using WEBRTC_STUB due to bool return value
virtual bool IsIPv6Enabled(int channel) { return true; }
WEBRTC_STUB(SetMTU, (int, unsigned int));
-#ifndef USE_WEBRTC_DEV_BRANCH
WEBRTC_STUB(SetPacketTimeoutNotification, (const int, bool, int));
WEBRTC_STUB(RegisterObserver, (const int, webrtc::ViENetworkObserver&));
WEBRTC_STUB(SetPeriodicDeadOrAliveStatus, (const int, const bool,
const unsigned int));
-#endif
// webrtc::ViERender
WEBRTC_STUB(RegisterVideoRenderModule, (webrtc::VideoRender&));
diff --git a/talk/media/webrtc/fakewebrtcvoiceengine.h b/talk/media/webrtc/fakewebrtcvoiceengine.h
index 65139aa..7202e15 100644
--- a/talk/media/webrtc/fakewebrtcvoiceengine.h
+++ b/talk/media/webrtc/fakewebrtcvoiceengine.h
@@ -609,7 +609,6 @@
}
WEBRTC_STUB(ReceivedRTCPPacket, (int channel, const void* data,
unsigned int length));
-#ifndef USE_WEBRTC_DEV_BRANCH
// Not using WEBRTC_STUB due to bool return value
WEBRTC_STUB(SetPacketTimeoutNotification, (int channel, bool enable,
int timeoutSeconds));
@@ -622,7 +621,6 @@
int& sampleTimeSeconds));
WEBRTC_STUB(SetPeriodicDeadOrAliveStatus, (int channel, bool enable,
int sampleTimeSeconds));
-#endif
// webrtc::VoERTP_RTCP
WEBRTC_STUB(RegisterRTPObserver, (int channel,
@@ -743,11 +741,7 @@
// webrtc::VoEVideoSync
WEBRTC_STUB(GetPlayoutBufferSize, (int& bufferMs));
WEBRTC_STUB(GetPlayoutTimestamp, (int channel, unsigned int& timestamp));
-#ifdef USE_WEBRTC_DEV_BRANCH
- WEBRTC_STUB(GetRtpRtcp, (int, webrtc::RtpRtcp**, webrtc::RtpReceiver**));
-#else
WEBRTC_STUB(GetRtpRtcp, (int, webrtc::RtpRtcp*&));
-#endif
WEBRTC_STUB(SetInitTimestamp, (int channel, unsigned int timestamp));
WEBRTC_STUB(SetInitSequenceNumber, (int channel, short sequenceNumber));
WEBRTC_STUB(SetMinimumPlayoutDelay, (int channel, int delayMs));
diff --git a/talk/media/webrtc/webrtcpassthroughrender.h b/talk/media/webrtc/webrtcpassthroughrender.h
index 967a29b..e09182f 100644
--- a/talk/media/webrtc/webrtcpassthroughrender.h
+++ b/talk/media/webrtc/webrtcpassthroughrender.h
@@ -92,7 +92,7 @@
}
virtual uint32_t GetNumIncomingRenderStreams() const {
- return stream_render_map_.size();
+ return static_cast<uint32_t>(stream_render_map_.size());
}
virtual bool HasIncomingRenderStream(const uint32_t stream_id) const;
diff --git a/talk/media/webrtc/webrtcvideoengine.cc b/talk/media/webrtc/webrtcvideoengine.cc
index 5047974..e95e142 100644
--- a/talk/media/webrtc/webrtcvideoengine.cc
+++ b/talk/media/webrtc/webrtcvideoengine.cc
@@ -257,7 +257,7 @@
}
int framerate() {
talk_base::CritScope cs(&crit_);
- return frame_rate_tracker_.units_second();
+ return static_cast<int>(frame_rate_tracker_.units_second());
}
VideoRenderer* renderer() {
talk_base::CritScope cs(&crit_);
@@ -356,7 +356,7 @@
}
int framerate() {
talk_base::CritScope cs(&crit_);
- return rate_tracker_.units_second();
+ return static_cast<int>(rate_tracker_.units_second());
}
void GetLastFrameInfo(
size_t* width, size_t* height, int64* elapsed_time) const {
@@ -525,17 +525,27 @@
if (video_capturer && !video_capturer->IsScreencast()) {
const VideoFormat* capture_format = video_capturer->GetCaptureFormat();
if (capture_format) {
+ // TODO(thorcarpenter): This is broken. Video capturer doesn't have
+ // a capture format until the capturer is started. So, if
+ // the capturer is started immediately after calling set_video_capturer
+ // video adapter may not have the input format set, the interval may
+ // be zero, and all frames may be dropped.
+ // Consider fixing this by having video_adapter keep a pointer to the
+ // video capturer.
video_adapter_->SetInputFormat(*capture_format);
}
}
}
void ApplyCpuOptions(const VideoOptions& options) {
- bool cpu_adapt;
+ bool cpu_adapt, cpu_smoothing;
float low, med, high;
if (options.adapt_input_to_cpu_usage.Get(&cpu_adapt)) {
video_adapter_->set_cpu_adaptation(cpu_adapt);
}
+ if (options.adapt_cpu_with_smoothing.Get(&cpu_smoothing)) {
+ video_adapter_->set_cpu_smoothing(cpu_smoothing);
+ }
if (options.process_adaptation_threshhold.Get(&med)) {
video_adapter_->set_process_threshold(med);
}
@@ -552,8 +562,9 @@
*processed_frame = original_frame.Copy();
} else {
WebRtcVideoFrame* black_frame = new WebRtcVideoFrame();
- black_frame->InitToBlack(original_frame.GetWidth(),
- original_frame.GetHeight(), 1, 1,
+ black_frame->InitToBlack(static_cast<int>(original_frame.GetWidth()),
+ static_cast<int>(original_frame.GetHeight()),
+ 1, 1,
original_frame.GetElapsedTime(),
original_frame.GetTimeStamp());
*processed_frame = black_frame;
@@ -675,8 +686,6 @@
render_module_.reset(new WebRtcPassthroughRender());
local_renderer_w_ = local_renderer_h_ = 0;
local_renderer_ = NULL;
- video_capturer_ = NULL;
- frame_listeners_ = 0;
capture_started_ = false;
decoder_factory_ = NULL;
encoder_factory_ = NULL;
@@ -712,7 +721,6 @@
}
WebRtcVideoEngine::~WebRtcVideoEngine() {
- ClearCapturer();
LOG(LS_INFO) << "WebRtcVideoEngine::~WebRtcVideoEngine";
if (initialized_) {
Terminate();
@@ -791,7 +799,6 @@
void WebRtcVideoEngine::Terminate() {
LOG(LS_INFO) << "WebRtcVideoEngine::Terminate";
initialized_ = false;
- SetCapture(false);
if (vie_wrapper_->render()->DeRegisterVideoRenderModule(
*render_module_.get()) != 0) {
@@ -847,132 +854,12 @@
return channel;
}
-bool WebRtcVideoEngine::SetVideoCapturer(VideoCapturer* capturer) {
- return SetCapturer(capturer);
-}
-
-VideoCapturer* WebRtcVideoEngine::GetVideoCapturer() const {
- return video_capturer_;
-}
-
bool WebRtcVideoEngine::SetLocalRenderer(VideoRenderer* renderer) {
local_renderer_w_ = local_renderer_h_ = 0;
local_renderer_ = renderer;
return true;
}
-bool WebRtcVideoEngine::SetCapture(bool capture) {
- bool old_capture = capture_started_;
- capture_started_ = capture;
- CaptureState result = UpdateCapturingState();
- if (result == CS_FAILED || result == CS_NO_DEVICE) {
- capture_started_ = old_capture;
- return false;
- }
- return true;
-}
-
-CaptureState WebRtcVideoEngine::UpdateCapturingState() {
- bool capture = capture_started_ && frame_listeners_;
- CaptureState result = CS_RUNNING;
- if (!IsCapturing() && capture) { // Start capturing.
- if (video_capturer_ == NULL) {
- return CS_NO_DEVICE;
- }
-
- VideoFormat capture_format;
- if (!video_capturer_->GetBestCaptureFormat(default_codec_format_,
- &capture_format)) {
- LOG(LS_WARNING) << "Unsupported format:"
- << " width=" << default_codec_format_.width
- << " height=" << default_codec_format_.height
- << ". Supported formats are:";
- const std::vector<VideoFormat>* formats =
- video_capturer_->GetSupportedFormats();
- if (formats) {
- for (std::vector<VideoFormat>::const_iterator i = formats->begin();
- i != formats->end(); ++i) {
- const VideoFormat& format = *i;
- LOG(LS_WARNING) << " " << GetFourccName(format.fourcc) << ":"
- << format.width << "x" << format.height << "x"
- << format.framerate();
- }
- }
- return CS_FAILED;
- }
-
- // Start the video capturer.
- result = video_capturer_->Start(capture_format);
- if (CS_RUNNING != result && CS_STARTING != result) {
- LOG(LS_ERROR) << "Failed to start the video capturer";
- return result;
- }
- } else if (IsCapturing() && !capture) { // Stop capturing.
- video_capturer_->Stop();
- result = CS_STOPPED;
- }
-
- return result;
-}
-
-bool WebRtcVideoEngine::IsCapturing() const {
- return (video_capturer_ != NULL) && video_capturer_->IsRunning();
-}
-
-// TODO(thorcarpenter): Remove this fn, it's only used for unittests!
-void WebRtcVideoEngine::OnFrameCaptured(VideoCapturer* capturer,
- const CapturedFrame* frame) {
- // Crop to desired aspect ratio.
- int cropped_width, cropped_height;
- ComputeCrop(default_codec_format_.width, default_codec_format_.height,
- frame->width, abs(frame->height),
- frame->pixel_width, frame->pixel_height,
- frame->rotation, &cropped_width, &cropped_height);
-
- // This CapturedFrame* will already be in I420. In the future, when
- // WebRtcVideoFrame has support for independent planes, we can just attach
- // to it and update the pointers when cropping.
- WebRtcVideoFrame i420_frame;
- if (!i420_frame.Init(frame, cropped_width, cropped_height)) {
- LOG(LS_ERROR) << "Couldn't convert to I420! "
- << cropped_width << " x " << cropped_height;
- return;
- }
-
- // TODO(janahan): This is the trigger point for Tx video processing.
- // Once the capturer refactoring is done, we will move this into the
- // capturer...it's not there right now because that image is in not in the
- // I420 color space.
- // The clients that subscribe will obtain meta info from the frame.
- // When this trigger is switched over to capturer, need to pass in the real
- // ssrc.
- bool drop_frame = false;
- {
- talk_base::CritScope cs(&signal_media_critical_);
- SignalMediaFrame(kDummyVideoSsrc, &i420_frame, &drop_frame);
- }
- if (drop_frame) {
- LOG(LS_VERBOSE) << "Media Effects dropped a frame.";
- return;
- }
-
- // Send I420 frame to the local renderer.
- if (local_renderer_) {
- if (local_renderer_w_ != static_cast<int>(i420_frame.GetWidth()) ||
- local_renderer_h_ != static_cast<int>(i420_frame.GetHeight())) {
- local_renderer_->SetSize(local_renderer_w_ = i420_frame.GetWidth(),
- local_renderer_h_ = i420_frame.GetHeight(), 0);
- }
- local_renderer_->RenderFrame(&i420_frame);
- }
- // Send I420 frame to the registered senders.
- talk_base::CritScope cs(&channels_crit_);
- for (VideoChannels::iterator it = channels_.begin();
- it != channels_.end(); ++it) {
- if ((*it)->sending()) (*it)->SendFrame(capturer, &i420_frame);
- }
-}
-
const std::vector<VideoCodec>& WebRtcVideoEngine::codecs() const {
return video_codecs_;
}
@@ -1004,7 +891,7 @@
const std::vector<WebRtcVideoEncoderFactory::VideoCodec>& codecs =
encoder_factory_->codecs();
for (size_t j = 0; j < codecs.size(); ++j) {
- VideoCodec codec(GetExternalVideoPayloadType(j),
+ VideoCodec codec(GetExternalVideoPayloadType(static_cast<int>(j)),
codecs[j].name, 0, 0, 0, 0);
if (codec.Matches(in))
return true;
@@ -1136,7 +1023,7 @@
for (size_t i = 0; i < codecs.size(); ++i) {
if (_stricmp(in_codec.name.c_str(), codecs[i].name.c_str()) == 0) {
out_codec->codecType = codecs[i].type;
- out_codec->plType = GetExternalVideoPayloadType(i);
+ out_codec->plType = GetExternalVideoPayloadType(static_cast<int>(i));
talk_base::strcpyn(out_codec->plName, sizeof(out_codec->plName),
codecs[i].name.c_str(), codecs[i].name.length());
found = true;
@@ -1267,12 +1154,13 @@
for (size_t i = 0; i < codecs.size(); ++i) {
if (!found)
found = (in_codec.name == codecs[i].name);
- VideoCodec codec(GetExternalVideoPayloadType(i),
- codecs[i].name,
- codecs[i].max_width,
- codecs[i].max_height,
- codecs[i].max_fps,
- codecs.size() + ARRAY_SIZE(kVideoCodecPrefs) - i);
+ VideoCodec codec(
+ GetExternalVideoPayloadType(static_cast<int>(i)),
+ codecs[i].name,
+ codecs[i].max_width,
+ codecs[i].max_height,
+ codecs[i].max_fps,
+ static_cast<int>(codecs.size() + ARRAY_SIZE(kVideoCodecPrefs) - i));
AddDefaultFeedbackParams(&codec);
video_codecs_.push_back(codec);
external_codec_names.insert(codecs[i].name);
@@ -1287,7 +1175,7 @@
if (found && !is_external_codec) {
VideoCodec codec(pref.payload_type, pref.name,
in_codec.width, in_codec.height, in_codec.framerate,
- ARRAY_SIZE(kVideoCodecPrefs) - i);
+ static_cast<int>(ARRAY_SIZE(kVideoCodecPrefs) - i));
if (_stricmp(kVp8PayloadName, codec.name.c_str()) == 0) {
AddDefaultFeedbackParams(&codec);
}
@@ -1298,32 +1186,6 @@
return true;
}
-bool WebRtcVideoEngine::SetCapturer(VideoCapturer* capturer) {
- if (capturer == NULL) {
- // Stop capturing before clearing the capturer.
- if (!SetCapture(false)) {
- LOG(LS_WARNING) << "Camera failed to stop";
- return false;
- }
- ClearCapturer();
- return true;
- }
-
- // Hook up signals and install the supplied capturer.
- SignalCaptureStateChange.repeat(capturer->SignalStateChange);
- capturer->SignalFrameCaptured.connect(this,
- &WebRtcVideoEngine::OnFrameCaptured);
- ClearCapturer();
- video_capturer_ = capturer;
- // Possibly restart the capturer if it is supposed to be running.
- CaptureState result = UpdateCapturingState();
- if (result == CS_FAILED || result == CS_NO_DEVICE) {
- LOG(LS_WARNING) << "Camera failed to restart";
- return false;
- }
- return true;
-}
-
// Ignore spammy trace messages, mostly from the stats API when we haven't
// gotten RTCP info yet from the remote side.
bool WebRtcVideoEngine::ShouldIgnoreTrace(const std::string& trace) {
@@ -1340,22 +1202,7 @@
int WebRtcVideoEngine::GetNumOfChannels() {
talk_base::CritScope cs(&channels_crit_);
- return channels_.size();
-}
-
-void WebRtcVideoEngine::IncrementFrameListeners() {
- if (++frame_listeners_ == 1) {
- UpdateCapturingState();
- }
- // In the unlikely event of wrapparound.
- ASSERT(frame_listeners_ >= 0);
-}
-
-void WebRtcVideoEngine::DecrementFrameListeners() {
- if (--frame_listeners_ == 0) {
- UpdateCapturingState();
- }
- ASSERT(frame_listeners_ >= 0);
+ return static_cast<int>(channels_.size());
}
void WebRtcVideoEngine::Print(webrtc::TraceLevel level, const char* trace,
@@ -1384,20 +1231,6 @@
}
}
-bool WebRtcVideoEngine::RegisterProcessor(
- VideoProcessor* video_processor) {
- talk_base::CritScope cs(&signal_media_critical_);
- SignalMediaFrame.connect(video_processor,
- &VideoProcessor::OnFrame);
- return true;
-}
-bool WebRtcVideoEngine::UnregisterProcessor(
- VideoProcessor* video_processor) {
- talk_base::CritScope cs(&signal_media_critical_);
- SignalMediaFrame.disconnect(video_processor);
- return true;
-}
-
webrtc::VideoDecoder* WebRtcVideoEngine::CreateExternalDecoder(
webrtc::VideoCodecType type) {
if (decoder_factory_ == NULL) {
@@ -1442,10 +1275,6 @@
return false;
}
-void WebRtcVideoEngine::ClearCapturer() {
- video_capturer_ = NULL;
-}
-
void WebRtcVideoEngine::SetExternalDecoderFactory(
WebRtcVideoDecoderFactory* decoder_factory) {
decoder_factory_ = decoder_factory;
@@ -1996,9 +1825,6 @@
}
send_channel->set_sending(true);
- if (!send_channel->video_capturer()) {
- engine_->IncrementFrameListeners();
- }
return true;
}
@@ -2022,9 +1848,6 @@
return false;
}
send_channel->set_sending(false);
- if (!send_channel->video_capturer()) {
- engine_->DecrementFrameListeners();
- }
return true;
}
@@ -2185,9 +2008,6 @@
}
capturer->SignalVideoFrame.disconnect(this);
send_channel->set_video_capturer(NULL);
- if (send_channel->sending()) {
- engine_->IncrementFrameListeners();
- }
const int64 timestamp = send_channel->local_stream_info()->time_stamp();
if (send_codec_) {
QueueBlackFrame(ssrc, timestamp, send_codec_->maxFramerate);
@@ -2261,8 +2081,8 @@
sinfo.firs_rcvd = -1;
sinfo.nacks_rcvd = -1;
sinfo.rtt_ms = -1;
- sinfo.frame_width = channel_stream_info->width();
- sinfo.frame_height = channel_stream_info->height();
+ sinfo.frame_width = static_cast<int>(channel_stream_info->width());
+ sinfo.frame_height = static_cast<int>(channel_stream_info->height());
sinfo.framerate_input = channel_stream_info->framerate();
sinfo.framerate_sent = send_channel->encoder_observer()->framerate();
sinfo.nominal_bitrate = send_channel->encoder_observer()->bitrate();
@@ -2415,9 +2235,6 @@
return false;
}
VideoCapturer* old_capturer = send_channel->video_capturer();
- if (send_channel->sending() && !old_capturer) {
- engine_->DecrementFrameListeners();
- }
if (old_capturer) {
old_capturer->SignalVideoFrame.disconnect(this);
}
@@ -2454,9 +2271,10 @@
which_channel = video_channel();
}
- engine()->vie()->network()->ReceivedRTPPacket(which_channel,
- packet->data(),
- packet->length());
+ engine()->vie()->network()->ReceivedRTPPacket(
+ which_channel,
+ packet->data(),
+ static_cast<int>(packet->length()));
}
void WebRtcVideoMediaChannel::OnRtcpReceived(talk_base::Buffer* packet) {
@@ -2480,9 +2298,10 @@
if (type == kRtcpTypeSR) {
int which_channel = GetRecvChannelNum(ssrc);
if (which_channel != -1 && !IsDefaultChannel(which_channel)) {
- engine_->vie()->network()->ReceivedRTCPPacket(which_channel,
- packet->data(),
- packet->length());
+ engine_->vie()->network()->ReceivedRTCPPacket(
+ which_channel,
+ packet->data(),
+ static_cast<int>(packet->length()));
}
}
// SR may continue RR and any RR entry may correspond to any one of the send
@@ -2492,9 +2311,10 @@
iter != send_channels_.end(); ++iter) {
WebRtcVideoChannelSendInfo* send_channel = iter->second;
int channel_id = send_channel->channel_id();
- engine_->vie()->network()->ReceivedRTCPPacket(channel_id,
- packet->data(),
- packet->length());
+ engine_->vie()->network()->ReceivedRTCPPacket(
+ channel_id,
+ packet->data(),
+ static_cast<int>(packet->length()));
}
}
@@ -2765,6 +2585,9 @@
SendFrame(capturer, frame);
return;
}
+ // TODO(thorcarpenter): This is broken. One capturer registered on two ssrc
+ // will not send any video to the second ssrc send channel. We should remove
+ // GetSendChannel(capturer) and pass in an ssrc here.
WebRtcVideoChannelSendInfo* send_channel = GetSendChannel(capturer);
if (!send_channel) {
SendFrame(capturer, frame);
@@ -2819,8 +2642,10 @@
}
// Checks if we need to reset vie send codec.
- if (!MaybeResetVieSendCodec(send_channel, frame->GetWidth(),
- frame->GetHeight(), is_screencast, NULL)) {
+ if (!MaybeResetVieSendCodec(send_channel,
+ static_cast<int>(frame->GetWidth()),
+ static_cast<int>(frame->GetHeight()),
+ is_screencast, NULL)) {
LOG(LS_ERROR) << "MaybeResetVieSendCodec failed with "
<< frame->GetWidth() << "x" << frame->GetHeight();
return false;
@@ -2843,8 +2668,8 @@
frame_i420.y_pitch = frame_out->GetYPitch();
frame_i420.u_pitch = frame_out->GetUPitch();
frame_i420.v_pitch = frame_out->GetVPitch();
- frame_i420.width = frame_out->GetWidth();
- frame_i420.height = frame_out->GetHeight();
+ frame_i420.width = static_cast<unsigned short>(frame_out->GetWidth());
+ frame_i420.height = static_cast<unsigned short>(frame_out->GetHeight());
int64 timestamp_ntp_ms = 0;
// TODO(justinlin): Reenable after Windows issues with clock drift are fixed.
@@ -3518,7 +3343,7 @@
void WebRtcVideoMediaChannel::OnMessage(talk_base::Message* msg) {
FlushBlackFrameData* black_frame_data =
- static_cast<FlushBlackFrameData*> (msg->pdata);
+ static_cast<FlushBlackFrameData*>(msg->pdata);
FlushBlackFrame(black_frame_data->ssrc, black_frame_data->timestamp);
delete black_frame_data;
}
@@ -3548,7 +3373,7 @@
FlushBlackFrameData* black_frame_data = new FlushBlackFrameData(
ssrc,
timestamp);
- const int delay_ms = static_cast<int> (
+ const int delay_ms = static_cast<int>(
2 * cricket::VideoFormat::FpsToInterval(framerate) *
talk_base::kNumMillisecsPerSec / talk_base::kNumNanosecsPerSec);
worker_thread()->PostDelayed(delay_ms, this, 0, black_frame_data);
diff --git a/talk/media/webrtc/webrtcvideoengine.h b/talk/media/webrtc/webrtcvideoengine.h
index f2dc18c..2f0fd3e 100644
--- a/talk/media/webrtc/webrtcvideoengine.h
+++ b/talk/media/webrtc/webrtcvideoengine.h
@@ -113,16 +113,8 @@
const std::vector<RtpHeaderExtension>& rtp_header_extensions() const;
void SetLogging(int min_sev, const char* filter);
- // If capturer is NULL, unregisters the capturer and stops capturing.
- // Otherwise sets the capturer and starts capturing.
- bool SetVideoCapturer(VideoCapturer* capturer);
- VideoCapturer* GetVideoCapturer() const;
bool SetLocalRenderer(VideoRenderer* renderer);
- bool SetCapture(bool capture);
sigslot::repeater2<VideoCapturer*, CaptureState> SignalCaptureStateChange;
- CaptureState UpdateCapturingState();
- bool IsCapturing() const;
- void OnFrameCaptured(VideoCapturer* capturer, const CapturedFrame* frame);
// Set the VoiceEngine for A/V sync. This can only be called before Init.
bool SetVoiceEngine(WebRtcVoiceEngine* voice_engine);
@@ -137,9 +129,6 @@
// Enable the render module with timing control.
bool EnableTimedRender();
- bool RegisterProcessor(VideoProcessor* video_processor);
- bool UnregisterProcessor(VideoProcessor* video_processor);
-
// Returns an external decoder for the given codec type. The return value
// can be NULL if decoder factory is not given or it does not support the
// codec type. The caller takes the ownership of the returned object.
@@ -175,9 +164,6 @@
bool ShouldIgnoreTrace(const std::string& trace);
int GetNumOfChannels();
- void IncrementFrameListeners();
- void DecrementFrameListeners();
-
VideoFormat GetStartCaptureFormat() const { return default_codec_format_; }
talk_base::CpuMonitor* cpu_monitor() { return cpu_monitor_.get(); }
@@ -209,11 +195,9 @@
void SetTraceFilter(int filter);
void SetTraceOptions(const std::string& options);
bool InitVideoEngine();
- bool SetCapturer(VideoCapturer* capturer);
// webrtc::TraceCallback implementation.
virtual void Print(webrtc::TraceLevel level, const char* trace, int length);
- void ClearCapturer();
// WebRtcVideoEncoderFactory::Observer implementation.
virtual void OnCodecsAvailable();
@@ -234,8 +218,6 @@
talk_base::CriticalSection channels_crit_;
VideoChannels channels_;
- VideoCapturer* video_capturer_;
- int frame_listeners_;
bool capture_started_;
int local_renderer_w_;
int local_renderer_h_;
diff --git a/talk/media/webrtc/webrtcvideoengine_unittest.cc b/talk/media/webrtc/webrtcvideoengine_unittest.cc
index 37b212f..376f295 100644
--- a/talk/media/webrtc/webrtcvideoengine_unittest.cc
+++ b/talk/media/webrtc/webrtcvideoengine_unittest.cc
@@ -202,11 +202,8 @@
virtual cricket::VideoCodec DefaultCodec() { return kVP8Codec; }
virtual void SetUp() {
Base::SetUp();
- // Need to start the capturer to allow us to pump in frames.
- engine_.SetCapture(true);
}
virtual void TearDown() {
- engine_.SetCapture(false);
Base::TearDown();
}
};
@@ -1356,41 +1353,6 @@
delete channel;
}
-TEST_F(WebRtcVideoMediaChannelTest, TestVideoProcessor_DropFrames) {
- // Connect a video processor.
- cricket::FakeMediaProcessor vp;
- vp.set_drop_frames(false);
- EXPECT_TRUE(engine_.RegisterProcessor(&vp));
- EXPECT_EQ(0, vp.dropped_frame_count());
- // Send the first frame with default codec.
- int packets = NumRtpPackets();
- cricket::VideoCodec codec(DefaultCodec());
- EXPECT_TRUE(SetOneCodec(codec));
- EXPECT_TRUE(SetSend(true));
- EXPECT_TRUE(channel_->SetRender(true));
- EXPECT_EQ(0, renderer_.num_rendered_frames());
- EXPECT_TRUE(WaitAndSendFrame(30));
- EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout);
- // Verify frame was sent.
- EXPECT_TRUE_WAIT(NumRtpPackets() > packets, kTimeout);
- packets = NumRtpPackets();
- EXPECT_EQ(0, vp.dropped_frame_count());
- // Send another frame and expect it to be sent.
- EXPECT_TRUE(WaitAndSendFrame(30));
- EXPECT_FRAME_WAIT(2, codec.width, codec.height, kTimeout);
- EXPECT_TRUE_WAIT(NumRtpPackets() > packets, kTimeout);
- packets = NumRtpPackets();
- EXPECT_EQ(0, vp.dropped_frame_count());
- // Attempt to send a frame and expect it to be dropped.
- vp.set_drop_frames(true);
- EXPECT_TRUE(WaitAndSendFrame(30));
- DrainOutgoingPackets();
- EXPECT_FRAME_WAIT(2, codec.width, codec.height, kTimeout);
- EXPECT_EQ(packets, NumRtpPackets());
- EXPECT_EQ(1, vp.dropped_frame_count());
- // Disconnect video processor.
- EXPECT_TRUE(engine_.UnregisterProcessor(&vp));
-}
TEST_F(WebRtcVideoMediaChannelTest, SetRecvCodecs) {
std::vector<cricket::VideoCodec> codecs;
codecs.push_back(kVP8Codec);
@@ -1433,7 +1395,7 @@
}
TEST_F(WebRtcVideoMediaChannelTest, SendVp8HdAndReceiveAdaptedVp8Vga) {
- EXPECT_TRUE(engine_.SetVideoCapturer(NULL));
+ EXPECT_TRUE(channel_->SetCapturer(kSsrc, NULL));
channel_->UpdateAspectRatio(1280, 720);
video_capturer_.reset(new cricket::FakeVideoCapturer);
const std::vector<cricket::VideoFormat>* formats =
@@ -1502,33 +1464,6 @@
Base::AddRemoveSendStreams();
}
-TEST_F(WebRtcVideoMediaChannelTest, SetVideoCapturer) {
- // Use 123 to verify there's no assumption to the module id
- FakeWebRtcVideoCaptureModule* vcm =
- new FakeWebRtcVideoCaptureModule(NULL, 123);
- talk_base::scoped_ptr<cricket::WebRtcVideoCapturer> capturer(
- new cricket::WebRtcVideoCapturer);
- EXPECT_TRUE(capturer->Init(vcm));
- EXPECT_TRUE(engine_.SetVideoCapturer(capturer.get()));
- EXPECT_FALSE(engine_.IsCapturing());
- EXPECT_TRUE(engine_.SetCapture(true));
- cricket::VideoCodec codec(DefaultCodec());
- EXPECT_TRUE(SetOneCodec(codec));
- EXPECT_TRUE(channel_->SetSend(true));
- EXPECT_TRUE(engine_.IsCapturing());
-
- EXPECT_EQ(engine_.default_codec_format().width, vcm->cap().width);
- EXPECT_EQ(engine_.default_codec_format().height, vcm->cap().height);
- EXPECT_EQ(cricket::VideoFormat::IntervalToFps(
- engine_.default_codec_format().interval),
- vcm->cap().maxFPS);
- EXPECT_EQ(webrtc::kVideoI420, vcm->cap().rawType);
- EXPECT_EQ(webrtc::kVideoCodecUnknown, vcm->cap().codecType);
-
- EXPECT_TRUE(engine_.SetVideoCapturer(NULL));
- EXPECT_FALSE(engine_.IsCapturing());
-}
-
TEST_F(WebRtcVideoMediaChannelTest, SimulateConference) {
Base::SimulateConference();
}
diff --git a/talk/media/webrtc/webrtcvideoframe.cc b/talk/media/webrtc/webrtcvideoframe.cc
index 80f2481..584aac0 100644
--- a/talk/media/webrtc/webrtcvideoframe.cc
+++ b/talk/media/webrtc/webrtcvideoframe.cc
@@ -62,8 +62,8 @@
data_.reset(data);
length_ = length;
uint8_t* new_memory = reinterpret_cast<uint8_t*>(data);
- uint32_t new_length = length;
- uint32_t new_size = length;
+ uint32_t new_length = static_cast<int>(length);
+ uint32_t new_size = static_cast<int>(length);
video_frame_.Swap(new_memory, new_length, new_size);
}
@@ -150,7 +150,7 @@
const uint8* WebRtcVideoFrame::GetVPlane() const {
uint8_t* buffer = frame()->Buffer();
if (buffer) {
- int uv_size = GetChromaSize();
+ int uv_size = static_cast<int>(GetChromaSize());
buffer += frame()->Width() * frame()->Height() + uv_size;
}
return buffer;
@@ -172,7 +172,7 @@
uint8* WebRtcVideoFrame::GetVPlane() {
uint8_t* buffer = frame()->Buffer();
if (buffer) {
- int uv_size = GetChromaSize();
+ int uv_size = static_cast<int>(GetChromaSize());
buffer += frame()->Width() * frame()->Height() + uv_size;
}
return buffer;
@@ -192,7 +192,7 @@
}
bool WebRtcVideoFrame::MakeExclusive() {
- const int length = video_buffer_->length();
+ const int length = static_cast<int>(video_buffer_->length());
RefCountedBuffer* exclusive_buffer = new RefCountedBuffer(length);
memcpy(exclusive_buffer->data(), video_buffer_->data(), length);
Attach(exclusive_buffer, length, frame()->Width(), frame()->Height(),
@@ -228,7 +228,10 @@
if (libyuv::ConvertFromI420(GetYPlane(), GetYPitch(), GetUPlane(),
GetUPitch(), GetVPlane(), GetVPitch(), buffer,
- stride_rgb, width, height, to_fourcc)) {
+ stride_rgb,
+ static_cast<int>(width),
+ static_cast<int>(height),
+ to_fourcc)) {
LOG(LS_WARNING) << "RGB type not supported: " << to_fourcc;
return 0; // 0 indicates error
}
diff --git a/talk/media/webrtc/webrtcvoiceengine.cc b/talk/media/webrtc/webrtcvoiceengine.cc
index f392751..c0522c0 100644
--- a/talk/media/webrtc/webrtcvoiceengine.cc
+++ b/talk/media/webrtc/webrtcvoiceengine.cc
@@ -2344,9 +2344,10 @@
}
// Pass it off to the decoder.
- engine()->voe()->network()->ReceivedRTPPacket(which_channel,
- packet->data(),
- packet->length());
+ engine()->voe()->network()->ReceivedRTPPacket(
+ which_channel,
+ packet->data(),
+ static_cast<unsigned int>(packet->length()));
}
void WebRtcVoiceMediaChannel::OnRtcpReceived(talk_base::Buffer* packet) {
@@ -2357,9 +2358,10 @@
which_channel = voe_channel();
}
- engine()->voe()->network()->ReceivedRTCPPacket(which_channel,
- packet->data(),
- packet->length());
+ engine()->voe()->network()->ReceivedRTCPPacket(
+ which_channel,
+ packet->data(),
+ static_cast<unsigned int>(packet->length()));
}
bool WebRtcVoiceMediaChannel::MuteStream(uint32 ssrc, bool muted) {
@@ -2543,7 +2545,7 @@
rinfo.jitter_buffer_ms = ns.currentBufferSize;
rinfo.jitter_buffer_preferred_ms = ns.preferredBufferSize;
rinfo.expand_rate =
- static_cast<float> (ns.currentExpandRate) / (1 << 14);
+ static_cast<float>(ns.currentExpandRate) / (1 << 14);
}
if (engine()->voe()->sync()) {
int playout_buffer_delay_ms = 0;
@@ -2757,7 +2759,7 @@
int WebRtcSoundclipStream::Read(void *buf, int len) {
size_t res = 0;
mem_.Read(buf, len, &res, NULL);
- return res;
+ return static_cast<int>(res);
}
int WebRtcSoundclipStream::Rewind() {
diff --git a/talk/p2p/base/dtlstransportchannel_unittest.cc b/talk/p2p/base/dtlstransportchannel_unittest.cc
index 8de3b07..cbc3abb 100644
--- a/talk/p2p/base/dtlstransportchannel_unittest.cc
+++ b/talk/p2p/base/dtlstransportchannel_unittest.cc
@@ -206,7 +206,8 @@
// against, and make sure that it doesn't look like DTLS.
memset(packet.get(), sent & 0xff, size);
packet[0] = (srtp) ? 0x80 : 0x00;
- talk_base::SetBE32(packet.get() + kPacketNumOffset, sent);
+ talk_base::SetBE32(packet.get() + kPacketNumOffset,
+ static_cast<uint32>(sent));
// Only set the bypass flag if we've activated DTLS.
int flags = (identity_.get() && srtp) ? cricket::PF_SRTP_BYPASS : 0;
@@ -342,7 +343,7 @@
}
void SetChannelCount(size_t channel_ct) {
- channel_ct_ = channel_ct;
+ channel_ct_ = static_cast<int>(channel_ct);
}
void PrepareDtls(bool c1, bool c2) {
if (c1) {
diff --git a/talk/p2p/base/fakesession.h b/talk/p2p/base/fakesession.h
index 3a825dd..2146abd 100644
--- a/talk/p2p/base/fakesession.h
+++ b/talk/p2p/base/fakesession.h
@@ -175,7 +175,7 @@
} else {
talk_base::Thread::Current()->Send(this, 0, packet);
}
- return len;
+ return static_cast<int>(len);
}
virtual int SetOption(talk_base::Socket::Option opt, int value) {
return true;
diff --git a/talk/p2p/base/port.cc b/talk/p2p/base/port.cc
index b310fea..0f12122 100644
--- a/talk/p2p/base/port.cc
+++ b/talk/p2p/base/port.cc
@@ -473,7 +473,7 @@
return false;
}
} else if (IsGoogleIce()) {
- int remote_frag_len = username_attr_str.size();
+ int remote_frag_len = static_cast<int>(username_attr_str.size());
remote_frag_len -= static_cast<int>(username_fragment().size());
if (remote_frag_len < 0)
return false;
@@ -752,8 +752,10 @@
// connection_ already holds this ping, so subtract one from count.
if (connection_->port()->send_retransmit_count_attribute()) {
- request->AddAttribute(new StunUInt32Attribute(STUN_ATTR_RETRANSMIT_COUNT,
- connection_->pings_since_last_response_.size() - 1));
+ request->AddAttribute(new StunUInt32Attribute(
+ STUN_ATTR_RETRANSMIT_COUNT,
+ static_cast<uint32>(
+ connection_->pings_since_last_response_.size() - 1)));
}
// Adding ICE-specific attributes to the STUN request message.
diff --git a/talk/p2p/base/port_unittest.cc b/talk/p2p/base/port_unittest.cc
index d6aa92d..bb6b22f 100644
--- a/talk/p2p/base/port_unittest.cc
+++ b/talk/p2p/base/port_unittest.cc
@@ -187,7 +187,7 @@
last_stun_buf_.reset(buf);
last_stun_msg_.reset(msg);
}
- return size;
+ return static_cast<int>(size);
}
virtual int SetOption(talk_base::Socket::Option opt, int value) {
return 0;
@@ -789,10 +789,10 @@
// Send a packet.
virtual int Send(const void *pv, size_t cb) {
- return cb;
+ return static_cast<int>(cb);
}
virtual int SendTo(const void *pv, size_t cb, const SocketAddress& addr) {
- return cb;
+ return static_cast<int>(cb);
}
virtual int Close() {
return 0;
@@ -2258,4 +2258,3 @@
EXPECT_TRUE(msg->GetByteString(STUN_ATTR_USE_CANDIDATE) != NULL);
ch1.Stop();
}
-
diff --git a/talk/p2p/base/portallocatorsessionproxy.cc b/talk/p2p/base/portallocatorsessionproxy.cc
index 1a201d3..d804bdc 100644
--- a/talk/p2p/base/portallocatorsessionproxy.cc
+++ b/talk/p2p/base/portallocatorsessionproxy.cc
@@ -115,7 +115,7 @@
}
void PortAllocatorSessionMuxer::OnMessage(talk_base::Message *pmsg) {
- ProxyObjData* proxy = static_cast<ProxyObjData*> (pmsg->pdata);
+ ProxyObjData* proxy = static_cast<ProxyObjData*>(pmsg->pdata);
switch (pmsg->message_id) {
case MSG_SEND_ALLOCATION_DONE:
SendAllocationDone_w(proxy->data());
diff --git a/talk/p2p/base/portallocatorsessionproxy_unittest.cc b/talk/p2p/base/portallocatorsessionproxy_unittest.cc
index fc6dc59..2d3ec3d 100644
--- a/talk/p2p/base/portallocatorsessionproxy_unittest.cc
+++ b/talk/p2p/base/portallocatorsessionproxy_unittest.cc
@@ -63,7 +63,7 @@
void OnCandidatesReady(PortAllocatorSession* session,
const std::vector<Candidate>& candidates) {
EXPECT_EQ(proxy_session_, session);
- candidates_count_ += candidates.size();
+ candidates_count_ += static_cast<int>(candidates.size());
}
void OnCandidatesAllocationDone(PortAllocatorSession* session) {
EXPECT_EQ(proxy_session_, session);
diff --git a/talk/p2p/base/pseudotcp.cc b/talk/p2p/base/pseudotcp.cc
index 2cf2799..6a2c1d2 100644
--- a/talk/p2p/base/pseudotcp.cc
+++ b/talk/p2p/base/pseudotcp.cc
@@ -428,7 +428,7 @@
uint32 PseudoTcp::GetBytesBufferedNotSent() const {
size_t buffered_bytes = 0;
m_sbuf.GetBuffered(&buffered_bytes);
- return m_snd_una + buffered_bytes - m_snd_nxt;
+ return static_cast<uint32>(m_snd_una + buffered_bytes - m_snd_nxt);
}
uint32 PseudoTcp::GetRoundTripTimeEstimateMs() const {
@@ -461,15 +461,16 @@
if (uint32(available_space) - m_rcv_wnd >=
talk_base::_min<uint32>(m_rbuf_len / 2, m_mss)) {
- bool bWasClosed = (m_rcv_wnd == 0); // !?! Not sure about this was closed business
- m_rcv_wnd = available_space;
+ // TODO(jbeda): !?! Not sure about this was closed business
+ bool bWasClosed = (m_rcv_wnd == 0);
+ m_rcv_wnd = static_cast<uint32>(available_space);
if (bWasClosed) {
attemptSend(sfImmediateAck);
}
}
- return read;
+ return static_cast<int>(read);
}
int PseudoTcp::Send(const char* buffer, size_t len) {
@@ -516,18 +517,19 @@
// We can concatenate data if the last segment is the same type
// (control v. regular data), and has not been transmitted yet
- if (!m_slist.empty() && (m_slist.back().bCtrl == bCtrl) && (m_slist.back().xmit == 0)) {
+ if (!m_slist.empty() && (m_slist.back().bCtrl == bCtrl) &&
+ (m_slist.back().xmit == 0)) {
m_slist.back().len += len;
} else {
size_t snd_buffered = 0;
m_sbuf.GetBuffered(&snd_buffered);
- SSegment sseg(m_snd_una + snd_buffered, len, bCtrl);
+ SSegment sseg(static_cast<uint32>(m_snd_una + snd_buffered), len, bCtrl);
m_slist.push_back(sseg);
}
size_t written = 0;
m_sbuf.Write(data, len, &written, NULL);
- return written;
+ return static_cast<uint32>(written);
}
IPseudoTcpNotify::WriteResult PseudoTcp::packet(uint32 seq, uint8 flags,
@@ -1184,8 +1186,8 @@
buf.WriteUInt8(1);
buf.WriteUInt8(m_rwnd_scale);
}
- m_snd_wnd = buf.Length();
- queue(buf.Data(), buf.Length(), true);
+ m_snd_wnd = static_cast<uint32>(buf.Length());
+ queue(buf.Data(), static_cast<uint32>(buf.Length()), true);
}
void
@@ -1290,7 +1292,7 @@
size_t available_space = 0;
m_rbuf.GetWriteRemaining(&available_space);
- m_rcv_wnd = available_space;
+ m_rcv_wnd = static_cast<uint32>(available_space);
}
} // namespace cricket
diff --git a/talk/p2p/base/pseudotcp_unittest.cc b/talk/p2p/base/pseudotcp_unittest.cc
index 09eac16..b9a672e 100644
--- a/talk/p2p/base/pseudotcp_unittest.cc
+++ b/talk/p2p/base/pseudotcp_unittest.cc
@@ -319,7 +319,7 @@
LOG(LS_VERBOSE) << "Flow Controlled";
}
} else {
- sent = tosend = 0;
+ sent = static_cast<int>(tosend = 0);
}
} while (sent > 0);
*done = (tosend == 0);
@@ -439,7 +439,7 @@
LOG(LS_VERBOSE) << "Flow Controlled";
}
} else {
- sent = tosend = 0;
+ sent = static_cast<int>(tosend = 0);
}
} while (sent > 0);
}
@@ -507,11 +507,11 @@
}
uint32 EstimateReceiveWindowSize() const {
- return recv_position_[0];
+ return static_cast<uint32>(recv_position_[0]);
}
uint32 EstimateSendWindowSize() const {
- return send_position_[0] - recv_position_[0];
+ return static_cast<uint32>(send_position_[0] - recv_position_[0]);
}
private:
@@ -566,12 +566,13 @@
LOG(LS_VERBOSE) << "Flow Controlled";
}
} else {
- sent = tosend = 0;
+ sent = static_cast<int>(tosend = 0);
}
} while (sent > 0);
// At this point, we've filled up the available space in the send queue.
- int message_queue_size = talk_base::Thread::Current()->size();
+ int message_queue_size =
+ static_cast<int>(talk_base::Thread::Current()->size());
// The message queue will always have at least 2 messages, an RCLOCK and
// an LCLOCK, since they are added back on the delay queue at the same time
// they are pulled off and therefore are never really removed.
diff --git a/talk/p2p/base/relayport.cc b/talk/p2p/base/relayport.cc
index 7abe942..0cd40e5 100644
--- a/talk/p2p/base/relayport.cc
+++ b/talk/p2p/base/relayport.cc
@@ -349,7 +349,7 @@
}
// The caller of the function is expecting the number of user data bytes,
// rather than the size of the packet.
- return size;
+ return static_cast<int>(size);
}
int RelayPort::SetOption(talk_base::Socket::Option opt, int value) {
diff --git a/talk/p2p/base/relayserver.cc b/talk/p2p/base/relayserver.cc
index 0470e9e..2c05f23 100644
--- a/talk/p2p/base/relayserver.cc
+++ b/talk/p2p/base/relayserver.cc
@@ -162,7 +162,7 @@
}
int RelayServer::GetConnectionCount() const {
- return connections_.size();
+ return static_cast<int>(connections_.size());
}
talk_base::SocketAddressPair RelayServer::GetConnection(int connection) const {
diff --git a/talk/p2p/base/relayserver_unittest.cc b/talk/p2p/base/relayserver_unittest.cc
index 349fe08..7580e45 100644
--- a/talk/p2p/base/relayserver_unittest.cc
+++ b/talk/p2p/base/relayserver_unittest.cc
@@ -95,12 +95,12 @@
void Send1(const StunMessage* msg) {
talk_base::ByteBuffer buf;
msg->Write(&buf);
- SendRaw1(buf.Data(), buf.Length());
+ SendRaw1(buf.Data(), static_cast<int>(buf.Length()));
}
void Send2(const StunMessage* msg) {
talk_base::ByteBuffer buf;
msg->Write(&buf);
- SendRaw2(buf.Data(), buf.Length());
+ SendRaw2(buf.Data(), static_cast<int>(buf.Length()));
}
void SendRaw1(const char* data, int len) {
return Send(client1_.get(), data, len, server_int_addr);
@@ -192,7 +192,7 @@
TEST_F(RelayServerTest, TestBadRequest) {
talk_base::scoped_ptr<StunMessage> res;
- SendRaw1(bad, std::strlen(bad));
+ SendRaw1(bad, static_cast<int>(std::strlen(bad)));
res.reset(Receive1());
ASSERT_TRUE(!res);
@@ -335,7 +335,7 @@
Allocate();
Bind();
- SendRaw1(bad, std::strlen(bad));
+ SendRaw1(bad, static_cast<int>(std::strlen(bad)));
EXPECT_TRUE(Receive1() == NULL);
EXPECT_TRUE(Receive2() == NULL);
}
@@ -481,7 +481,7 @@
Send1(req.get());
EXPECT_EQ(msg1, ReceiveRaw2());
- SendRaw2(msg2, std::strlen(msg2));
+ SendRaw2(msg2, static_cast<int>(std::strlen(msg2)));
res.reset(Receive1());
ASSERT_TRUE(res);
@@ -534,6 +534,6 @@
EXPECT_EQ("Operation Not Supported", err->reason());
// Also verify that traffic from the external client is ignored.
- SendRaw2(msg2, std::strlen(msg2));
+ SendRaw2(msg2, static_cast<int>(std::strlen(msg2)));
EXPECT_TRUE(ReceiveRaw1().empty());
}
diff --git a/talk/p2p/base/session_unittest.cc b/talk/p2p/base/session_unittest.cc
index 73933bb..69028ac 100644
--- a/talk/p2p/base/session_unittest.cc
+++ b/talk/p2p/base/session_unittest.cc
@@ -921,7 +921,7 @@
}
uint32 sent_stanza_count() const {
- return sent_stanzas.size();
+ return static_cast<uint32>(sent_stanzas.size());
}
const buzz::XmlElement* stanza() const {
diff --git a/talk/p2p/base/stun.cc b/talk/p2p/base/stun.cc
index 06a71a1..2a0f6d9 100644
--- a/talk/p2p/base/stun.cc
+++ b/talk/p2p/base/stun.cc
@@ -98,7 +98,7 @@
if (attr_length % 4 != 0) {
attr_length += (4 - (attr_length % 4));
}
- length_ += attr_length + 4;
+ length_ += static_cast<uint16>(attr_length + 4);
return true;
}
@@ -203,7 +203,8 @@
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// |0 0| STUN Message Type | Message Length |
// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- talk_base::SetBE16(temp_data.get() + 2, new_adjusted_len);
+ talk_base::SetBE16(temp_data.get() + 2,
+ static_cast<uint16>(new_adjusted_len));
}
char hmac[kStunMessageIntegritySize];
@@ -238,8 +239,8 @@
if (!Write(&buf))
return false;
- int msg_len_for_hmac = buf.Length() -
- kStunAttributeHeaderSize - msg_integrity_attr->length();
+ int msg_len_for_hmac = static_cast<int>(
+ buf.Length() - kStunAttributeHeaderSize - msg_integrity_attr->length());
char hmac[kStunMessageIntegritySize];
size_t ret = talk_base::ComputeHmac(talk_base::DIGEST_SHA_1,
key, keylen,
@@ -299,8 +300,8 @@
if (!Write(&buf))
return false;
- int msg_len_for_crc32 = buf.Length() -
- kStunAttributeHeaderSize - fingerprint_attr->length();
+ int msg_len_for_crc32 = static_cast<int>(
+ buf.Length() - kStunAttributeHeaderSize - fingerprint_attr->length());
uint32 c = talk_base::ComputeCrc32(buf.Data(), msg_len_for_crc32);
// Insert the correct CRC-32, XORed with a constant, into the attribute.
@@ -380,7 +381,7 @@
for (size_t i = 0; i < attrs_->size(); ++i) {
buf->WriteUInt16((*attrs_)[i]->type());
- buf->WriteUInt16((*attrs_)[i]->length());
+ buf->WriteUInt16(static_cast<uint16>((*attrs_)[i]->length()));
if (!(*attrs_)[i]->Write(buf))
return false;
}
@@ -408,7 +409,8 @@
StunAttribute* StunMessage::CreateAttribute(int type, size_t length) /*const*/ {
StunAttributeValueType value_type = GetAttributeValueType(type);
- return StunAttribute::Create(value_type, type, length, this);
+ return StunAttribute::Create(value_type, type,
+ static_cast<uint16>(length), this);
}
const StunAttribute* StunMessage::GetAttribute(int type) const {
@@ -767,7 +769,7 @@
void StunByteStringAttribute::SetBytes(char* bytes, size_t length) {
delete [] bytes_;
bytes_ = bytes;
- SetLength(length);
+ SetLength(static_cast<uint16>(length));
}
StunErrorCodeAttribute::StunErrorCodeAttribute(uint16 type, int code,
diff --git a/talk/p2p/base/stun_unittest.cc b/talk/p2p/base/stun_unittest.cc
index 43db959..6a5bcd9 100644
--- a/talk/p2p/base/stun_unittest.cc
+++ b/talk/p2p/base/stun_unittest.cc
@@ -924,7 +924,7 @@
talk_base::ByteBuffer out;
EXPECT_TRUE(msg.Write(&out));
ASSERT_EQ(out.Length(), sizeof(kStunMessageWithIPv6MappedAddress));
- int len1 = out.Length();
+ int len1 = static_cast<int>(out.Length());
std::string bytes;
out.ReadString(&bytes, len1);
ASSERT_EQ(0, std::memcmp(bytes.c_str(),
@@ -955,7 +955,7 @@
talk_base::ByteBuffer out;
EXPECT_TRUE(msg.Write(&out));
ASSERT_EQ(out.Length(), sizeof(kStunMessageWithIPv4MappedAddress));
- int len1 = out.Length();
+ int len1 = static_cast<int>(out.Length());
std::string bytes;
out.ReadString(&bytes, len1);
ASSERT_EQ(0, std::memcmp(bytes.c_str(),
@@ -986,7 +986,7 @@
talk_base::ByteBuffer out;
EXPECT_TRUE(msg.Write(&out));
ASSERT_EQ(out.Length(), sizeof(kStunMessageWithIPv6XorMappedAddress));
- int len1 = out.Length();
+ int len1 = static_cast<int>(out.Length());
std::string bytes;
out.ReadString(&bytes, len1);
ASSERT_EQ(0, std::memcmp(bytes.c_str(),
@@ -1017,7 +1017,7 @@
talk_base::ByteBuffer out;
EXPECT_TRUE(msg.Write(&out));
ASSERT_EQ(out.Length(), sizeof(kStunMessageWithIPv4XorMappedAddress));
- int len1 = out.Length();
+ int len1 = static_cast<int>(out.Length());
std::string bytes;
out.ReadString(&bytes, len1);
ASSERT_EQ(0, std::memcmp(bytes.c_str(),
diff --git a/talk/p2p/base/stunserver_unittest.cc b/talk/p2p/base/stunserver_unittest.cc
index 1d2cd0d..7f4db3b 100644
--- a/talk/p2p/base/stunserver_unittest.cc
+++ b/talk/p2p/base/stunserver_unittest.cc
@@ -58,7 +58,7 @@
void Send(const StunMessage& msg) {
talk_base::ByteBuffer buf;
msg.Write(&buf);
- Send(buf.Data(), buf.Length());
+ Send(buf.Data(), static_cast<int>(buf.Length()));
}
void Send(const char* buf, int len) {
client_->SendTo(buf, len, server_addr);
@@ -113,7 +113,7 @@
const char* bad = "this is a completely nonsensical message whose only "
"purpose is to make the parser go 'ack'. it doesn't "
"look anything like a normal stun message";
- Send(bad, std::strlen(bad));
+ Send(bad, static_cast<int>(std::strlen(bad)));
StunMessage* msg = Receive();
ASSERT_TRUE(msg == NULL);
diff --git a/talk/p2p/base/turnport.cc b/talk/p2p/base/turnport.cc
index 9fad274..6c1165d 100644
--- a/talk/p2p/base/turnport.cc
+++ b/talk/p2p/base/turnport.cc
@@ -332,7 +332,7 @@
// The caller of the function is expecting the number of user data bytes,
// rather than the size of the packet.
- return size;
+ return static_cast<int>(size);
}
void TurnPort::OnReadPacket(talk_base::AsyncPacketSocket* socket,
@@ -901,7 +901,7 @@
} else {
// If the channel is bound, we can send the data as a Channel Message.
buf.WriteUInt16(channel_id_);
- buf.WriteUInt16(size);
+ buf.WriteUInt16(static_cast<uint16>(size));
buf.WriteBytes(reinterpret_cast<const char*>(data), size);
}
return port_->Send(buf.Data(), buf.Length());
diff --git a/talk/p2p/base/turnserver.cc b/talk/p2p/base/turnserver.cc
index e82455a..565a087 100644
--- a/talk/p2p/base/turnserver.cc
+++ b/talk/p2p/base/turnserver.cc
@@ -847,7 +847,7 @@
// There is a channel bound to this address. Send as a channel message.
talk_base::ByteBuffer buf;
buf.WriteUInt16(channel->id());
- buf.WriteUInt16(size);
+ buf.WriteUInt16(static_cast<uint16>(size));
buf.WriteBytes(data, size);
server_->Send(&conn_, buf);
} else if (HasPermission(addr.ipaddr())) {
diff --git a/talk/session/media/channel.cc b/talk/session/media/channel.cc
index 1048cdf..66f4054 100644
--- a/talk/session/media/channel.cc
+++ b/talk/session/media/channel.cc
@@ -615,7 +615,7 @@
bool BaseChannel::PacketIsRtcp(const TransportChannel* channel,
const char* data, size_t len) {
return (channel == rtcp_transport_channel_ ||
- rtcp_mux_filter_.DemuxRtcp(data, len));
+ rtcp_mux_filter_.DemuxRtcp(data, static_cast<int>(len)));
}
bool BaseChannel::SendPacket(bool rtcp, talk_base::Buffer* packet) {
@@ -669,9 +669,10 @@
if (srtp_filter_.IsActive()) {
bool res;
char* data = packet->data();
- int len = packet->length();
+ int len = static_cast<int>(packet->length());
if (!rtcp) {
- res = srtp_filter_.ProtectRtp(data, len, packet->capacity(), &len);
+ res = srtp_filter_.ProtectRtp(data, len,
+ static_cast<int>(packet->capacity()), &len);
if (!res) {
int seq_num = -1;
uint32 ssrc = 0;
@@ -683,7 +684,9 @@
return false;
}
} else {
- res = srtp_filter_.ProtectRtcp(data, len, packet->capacity(), &len);
+ res = srtp_filter_.ProtectRtcp(data, len,
+ static_cast<int>(packet->capacity()),
+ &len);
if (!res) {
int type = -1;
GetRtcpType(data, len, &type);
@@ -761,7 +764,7 @@
// Unprotect the packet, if needed.
if (srtp_filter_.IsActive()) {
char* data = packet->data();
- int len = packet->length();
+ int len = static_cast<int>(packet->length());
bool res;
if (!rtcp) {
res = srtp_filter_.UnprotectRtp(data, len, &len);
@@ -1009,15 +1012,21 @@
}
if (rtcp_channel) {
- ret = srtp_filter_.SetRtcpParams(selected_cipher,
- &(*send_key)[0], send_key->size(),
- selected_cipher,
- &(*recv_key)[0], recv_key->size());
+ ret = srtp_filter_.SetRtcpParams(
+ selected_cipher,
+ &(*send_key)[0],
+ static_cast<int>(send_key->size()),
+ selected_cipher,
+ &(*recv_key)[0],
+ static_cast<int>(recv_key->size()));
} else {
- ret = srtp_filter_.SetRtpParams(selected_cipher,
- &(*send_key)[0], send_key->size(),
- selected_cipher,
- &(*recv_key)[0], recv_key->size());
+ ret = srtp_filter_.SetRtpParams(
+ selected_cipher,
+ &(*send_key)[0],
+ static_cast<int>(send_key->size()),
+ selected_cipher,
+ &(*recv_key)[0],
+ static_cast<int>(recv_key->size()));
}
if (!ret)
diff --git a/talk/session/media/channel_unittest.cc b/talk/session/media/channel_unittest.cc
index c9918f8..378f552 100644
--- a/talk/session/media/channel_unittest.cc
+++ b/talk/session/media/channel_unittest.cc
@@ -377,64 +377,78 @@
}
bool SendRtp1() {
- return media_channel1_->SendRtp(rtp_packet_.c_str(), rtp_packet_.size());
+ return media_channel1_->SendRtp(rtp_packet_.c_str(),
+ static_cast<int>(rtp_packet_.size()));
}
bool SendRtp2() {
- return media_channel2_->SendRtp(rtp_packet_.c_str(), rtp_packet_.size());
+ return media_channel2_->SendRtp(rtp_packet_.c_str(),
+ static_cast<int>(rtp_packet_.size()));
}
bool SendRtcp1() {
- return media_channel1_->SendRtcp(rtcp_packet_.c_str(), rtcp_packet_.size());
+ return media_channel1_->SendRtcp(rtcp_packet_.c_str(),
+ static_cast<int>(rtcp_packet_.size()));
}
bool SendRtcp2() {
- return media_channel2_->SendRtcp(rtcp_packet_.c_str(), rtcp_packet_.size());
+ return media_channel2_->SendRtcp(rtcp_packet_.c_str(),
+ static_cast<int>(rtcp_packet_.size()));
}
// Methods to send custom data.
bool SendCustomRtp1(uint32 ssrc, int sequence_number) {
std::string data(CreateRtpData(ssrc, sequence_number));
- return media_channel1_->SendRtp(data.c_str(), data.size());
+ return media_channel1_->SendRtp(data.c_str(),
+ static_cast<int>(data.size()));
}
bool SendCustomRtp2(uint32 ssrc, int sequence_number) {
std::string data(CreateRtpData(ssrc, sequence_number));
- return media_channel2_->SendRtp(data.c_str(), data.size());
+ return media_channel2_->SendRtp(data.c_str(),
+ static_cast<int>(data.size()));
}
bool SendCustomRtcp1(uint32 ssrc) {
std::string data(CreateRtcpData(ssrc));
- return media_channel1_->SendRtcp(data.c_str(), data.size());
+ return media_channel1_->SendRtcp(data.c_str(),
+ static_cast<int>(data.size()));
}
bool SendCustomRtcp2(uint32 ssrc) {
std::string data(CreateRtcpData(ssrc));
- return media_channel2_->SendRtcp(data.c_str(), data.size());
+ return media_channel2_->SendRtcp(data.c_str(),
+ static_cast<int>(data.size()));
}
bool CheckRtp1() {
- return media_channel1_->CheckRtp(rtp_packet_.c_str(), rtp_packet_.size());
+ return media_channel1_->CheckRtp(rtp_packet_.c_str(),
+ static_cast<int>(rtp_packet_.size()));
}
bool CheckRtp2() {
- return media_channel2_->CheckRtp(rtp_packet_.c_str(), rtp_packet_.size());
+ return media_channel2_->CheckRtp(rtp_packet_.c_str(),
+ static_cast<int>(rtp_packet_.size()));
}
bool CheckRtcp1() {
return media_channel1_->CheckRtcp(rtcp_packet_.c_str(),
- rtcp_packet_.size());
+ static_cast<int>(rtcp_packet_.size()));
}
bool CheckRtcp2() {
return media_channel2_->CheckRtcp(rtcp_packet_.c_str(),
- rtcp_packet_.size());
+ static_cast<int>(rtcp_packet_.size()));
}
// Methods to check custom data.
bool CheckCustomRtp1(uint32 ssrc, int sequence_number) {
std::string data(CreateRtpData(ssrc, sequence_number));
- return media_channel1_->CheckRtp(data.c_str(), data.size());
+ return media_channel1_->CheckRtp(data.c_str(),
+ static_cast<int>(data.size()));
}
bool CheckCustomRtp2(uint32 ssrc, int sequence_number) {
std::string data(CreateRtpData(ssrc, sequence_number));
- return media_channel2_->CheckRtp(data.c_str(), data.size());
+ return media_channel2_->CheckRtp(data.c_str(),
+ static_cast<int>(data.size()));
}
bool CheckCustomRtcp1(uint32 ssrc) {
std::string data(CreateRtcpData(ssrc));
- return media_channel1_->CheckRtcp(data.c_str(), data.size());
+ return media_channel1_->CheckRtcp(data.c_str(),
+ static_cast<int>(data.size()));
}
bool CheckCustomRtcp2(uint32 ssrc) {
std::string data(CreateRtcpData(ssrc));
- return media_channel2_->CheckRtcp(data.c_str(), data.size());
+ return media_channel2_->CheckRtcp(data.c_str(),
+ static_cast<int>(data.size()));
}
std::string CreateRtpData(uint32 ssrc, int sequence_number) {
std::string data(rtp_packet_);
@@ -1744,7 +1758,7 @@
void TestSrtpError() {
static const unsigned char kBadPacket[] = {
- 0x90, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01
+ 0x84, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01
};
CreateChannels(RTCP | SECURE, RTCP | SECURE);
EXPECT_FALSE(channel1_->secure());
diff --git a/talk/session/media/channelmanager.cc b/talk/session/media/channelmanager.cc
index 063a6c8..88e7f79 100644
--- a/talk/session/media/channelmanager.cc
+++ b/talk/session/media/channelmanager.cc
@@ -713,26 +713,6 @@
return ret;
}
-bool ChannelManager::SetVideoCapturer(VideoCapturer* capturer) {
- bool ret = true;
- if (initialized_) {
- ret = worker_thread_->Invoke<bool>(
- Bind(&MediaEngineInterface::SetVideoCapturer,
- media_engine_.get(), capturer));
- }
- return ret;
-}
-
-bool ChannelManager::SetVideoCapture(bool capture) {
- bool ret = initialized_ && worker_thread_->Invoke<bool>(
- Bind(&MediaEngineInterface::SetVideoCapture,
- media_engine_.get(), capture));
- if (ret) {
- capturing_ = capture;
- }
- return ret;
-}
-
void ChannelManager::SetVoiceLogging(int level, const char* filter) {
if (initialized_) {
worker_thread_->Invoke<void>(
diff --git a/talk/session/media/channelmanager.h b/talk/session/media/channelmanager.h
index 6d53c63..e5e6e44 100644
--- a/talk/session/media/channelmanager.h
+++ b/talk/session/media/channelmanager.h
@@ -166,8 +166,6 @@
// Sets the externally provided video capturer. The ssrc is the ssrc of the
// (video) stream for which the video capturer should be set.
bool SetVideoCapturer(VideoCapturer* capturer);
- // Starts and stops the local camera and renders it to the local renderer.
- bool SetVideoCapture(bool capture);
bool capturing() const { return capturing_; }
// Configures the logging output of the mediaengine(s).
diff --git a/talk/session/media/channelmanager_unittest.cc b/talk/session/media/channelmanager_unittest.cc
index 20db58d..32321eb 100644
--- a/talk/session/media/channelmanager_unittest.cc
+++ b/talk/session/media/channelmanager_unittest.cc
@@ -524,20 +524,6 @@
EXPECT_STREQ("test-video", fme_->video_logfilter().c_str());
}
-// Test that SetVideoCapture passes through the right value.
-TEST_F(ChannelManagerTest, SetVideoCapture) {
- // Should fail until we are initialized.
- EXPECT_FALSE(fme_->capture());
- EXPECT_FALSE(cm_->SetVideoCapture(true));
- EXPECT_FALSE(fme_->capture());
- EXPECT_TRUE(cm_->Init());
- EXPECT_FALSE(fme_->capture());
- EXPECT_TRUE(cm_->SetVideoCapture(true));
- EXPECT_TRUE(fme_->capture());
- EXPECT_TRUE(cm_->SetVideoCapture(false));
- EXPECT_FALSE(fme_->capture());
-}
-
// Test that the Video/Voice Processors register and unregister
TEST_F(ChannelManagerTest, RegisterProcessors) {
cricket::FakeMediaProcessor fmp;
diff --git a/talk/session/media/mediasession.cc b/talk/session/media/mediasession.cc
index 3d00418..2c087e9 100644
--- a/talk/session/media/mediasession.cc
+++ b/talk/session/media/mediasession.cc
@@ -92,7 +92,7 @@
#ifdef HAVE_SRTP
static bool AddCryptoParams(const std::string& cipher_suite,
CryptoParamsVec *out) {
- int size = out->size();
+ int size = static_cast<int>(out->size());
out->resize(size + 1);
return CreateCryptoParams(size, cipher_suite, &out->at(size));
diff --git a/talk/session/media/mediasession_unittest.cc b/talk/session/media/mediasession_unittest.cc
index 5b0a859..6e04915 100644
--- a/talk/session/media/mediasession_unittest.cc
+++ b/talk/session/media/mediasession_unittest.cc
@@ -329,11 +329,11 @@
}
ASSERT_TRUE(desc.get() != NULL);
const cricket::MediaContentDescription* audio_media_desc =
- static_cast<const cricket::MediaContentDescription*> (
+ static_cast<const cricket::MediaContentDescription*>(
desc.get()->GetContentDescriptionByName("audio"));
ASSERT_TRUE(audio_media_desc != NULL);
const cricket::MediaContentDescription* video_media_desc =
- static_cast<const cricket::MediaContentDescription*> (
+ static_cast<const cricket::MediaContentDescription*>(
desc.get()->GetContentDescriptionByName("video"));
ASSERT_TRUE(video_media_desc != NULL);
EXPECT_TRUE(CompareCryptoParams(audio_media_desc->cryptos(),
@@ -345,7 +345,7 @@
// Verify the selected crypto is one from the reference audio
// media content.
const cricket::MediaContentDescription* ref_audio_media_desc =
- static_cast<const cricket::MediaContentDescription*> (
+ static_cast<const cricket::MediaContentDescription*>(
ref_desc.get()->GetContentDescriptionByName("audio"));
bool found = false;
for (size_t i = 0; i < ref_audio_media_desc->cryptos().size(); ++i) {
@@ -394,7 +394,7 @@
const cricket::ContentDescription* description = content->description;
ASSERT(description != NULL);
const cricket::AudioContentDescription* audio_content_desc =
- static_cast<const cricket::AudioContentDescription*> (description);
+ static_cast<const cricket::AudioContentDescription*>(description);
ASSERT(audio_content_desc != NULL);
for (size_t i = 0; i < audio_content_desc->codecs().size(); ++i) {
if (audio_content_desc->codecs()[i].name == "CN")
@@ -1751,7 +1751,7 @@
audio_media_desc = static_cast<const cricket::MediaContentDescription*>(
offer->GetContentDescriptionByName("audio"));
ASSERT_TRUE(audio_media_desc != NULL);
- video_media_desc = static_cast<const cricket::MediaContentDescription*> (
+ video_media_desc = static_cast<const cricket::MediaContentDescription*>(
offer->GetContentDescriptionByName("video"));
ASSERT_TRUE(video_media_desc != NULL);
EXPECT_EQ(2u, audio_media_desc->cryptos().size());
@@ -1768,10 +1768,10 @@
answer.reset(f2_.CreateAnswer(offer.get(), options, NULL));
ASSERT_TRUE(answer.get() != NULL);
- audio_media_desc = static_cast<const cricket::MediaContentDescription*> (
+ audio_media_desc = static_cast<const cricket::MediaContentDescription*>(
answer->GetContentDescriptionByName("audio"));
ASSERT_TRUE(audio_media_desc != NULL);
- video_media_desc = static_cast<const cricket::MediaContentDescription*> (
+ video_media_desc = static_cast<const cricket::MediaContentDescription*>(
answer->GetContentDescriptionByName("video"));
ASSERT_TRUE(video_media_desc != NULL);
EXPECT_EQ(1u, audio_media_desc->cryptos().size());
@@ -1789,10 +1789,10 @@
answer.reset(f2_.CreateAnswer(offer.get(), options, NULL));
ASSERT_TRUE(answer.get() != NULL);
- audio_media_desc = static_cast<const cricket::MediaContentDescription*> (
+ audio_media_desc = static_cast<const cricket::MediaContentDescription*>(
answer->GetContentDescriptionByName("audio"));
ASSERT_TRUE(audio_media_desc != NULL);
- video_media_desc = static_cast<const cricket::MediaContentDescription*> (
+ video_media_desc = static_cast<const cricket::MediaContentDescription*>(
answer->GetContentDescriptionByName("video"));
ASSERT_TRUE(video_media_desc != NULL);
EXPECT_TRUE(audio_media_desc->cryptos().empty());
diff --git a/talk/xmpp/jid.cc b/talk/xmpp/jid.cc
index 66d5cde..45838710c 100644
--- a/talk/xmpp/jid.cc
+++ b/talk/xmpp/jid.cc
@@ -322,7 +322,7 @@
std::string* buf, bool* valid) {
*valid = false;
- int start_len = buf->length();
+ int start_len = static_cast<int>(buf->length());
for (std::string::const_iterator i = start; i < end; ++i) {
bool char_valid = true;
unsigned char ch = *i;
@@ -338,7 +338,7 @@
}
}
- int count = buf->length() - start_len;
+ int count = static_cast<int>(buf->length() - start_len);
if (count == 0) {
return;
}
diff --git a/talk/xmpp/xmppclient.cc b/talk/xmpp/xmppclient.cc
index f7d7cf2..9c49a9c 100644
--- a/talk/xmpp/xmppclient.cc
+++ b/talk/xmpp/xmppclient.cc
@@ -379,7 +379,7 @@
return;
//#ifdef _DEBUG
- client_->SignalLogInput(bytes, bytes_read);
+ client_->SignalLogInput(bytes, static_cast<int>(bytes_read));
//#endif
engine_->HandleInput(bytes, bytes_read);
@@ -403,7 +403,7 @@
void XmppClient::Private::WriteOutput(const char* bytes, size_t len) {
//#ifdef _DEBUG
- client_->SignalLogOutput(bytes, len);
+ client_->SignalLogOutput(bytes, static_cast<int>(len));
//#endif
socket_->Write(bytes, len);