OLD | NEW |
1 /* | 1 /* |
2 * libjingle | 2 * libjingle |
3 * Copyright 2004 Google Inc. | 3 * Copyright 2004 Google Inc. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are met: | 6 * modification, are permitted provided that the following conditions are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright notice, | 8 * 1. Redistributions of source code must retain the above copyright notice, |
9 * this list of conditions and the following disclaimer. | 9 * this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright notice, | 10 * 2. Redistributions in binary form must reproduce the above copyright notice, |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 *error_desc = message; | 64 *error_desc = message; |
65 } | 65 } |
66 } | 66 } |
67 | 67 |
68 struct PacketMessageData : public rtc::MessageData { | 68 struct PacketMessageData : public rtc::MessageData { |
69 rtc::Buffer packet; | 69 rtc::Buffer packet; |
70 rtc::DiffServCodePoint dscp; | 70 rtc::DiffServCodePoint dscp; |
71 }; | 71 }; |
72 | 72 |
73 struct ScreencastEventMessageData : public rtc::MessageData { | 73 struct ScreencastEventMessageData : public rtc::MessageData { |
74 ScreencastEventMessageData(uint32 s, rtc::WindowEvent we) | 74 ScreencastEventMessageData(uint32_t s, rtc::WindowEvent we) |
75 : ssrc(s), | 75 : ssrc(s), event(we) {} |
76 event(we) { | 76 uint32_t ssrc; |
77 } | |
78 uint32 ssrc; | |
79 rtc::WindowEvent event; | 77 rtc::WindowEvent event; |
80 }; | 78 }; |
81 | 79 |
82 struct VoiceChannelErrorMessageData : public rtc::MessageData { | 80 struct VoiceChannelErrorMessageData : public rtc::MessageData { |
83 VoiceChannelErrorMessageData(uint32 in_ssrc, | 81 VoiceChannelErrorMessageData(uint32_t in_ssrc, |
84 VoiceMediaChannel::Error in_error) | 82 VoiceMediaChannel::Error in_error) |
85 : ssrc(in_ssrc), | 83 : ssrc(in_ssrc), error(in_error) {} |
86 error(in_error) { | 84 uint32_t ssrc; |
87 } | |
88 uint32 ssrc; | |
89 VoiceMediaChannel::Error error; | 85 VoiceMediaChannel::Error error; |
90 }; | 86 }; |
91 | 87 |
92 struct VideoChannelErrorMessageData : public rtc::MessageData { | 88 struct VideoChannelErrorMessageData : public rtc::MessageData { |
93 VideoChannelErrorMessageData(uint32 in_ssrc, | 89 VideoChannelErrorMessageData(uint32_t in_ssrc, |
94 VideoMediaChannel::Error in_error) | 90 VideoMediaChannel::Error in_error) |
95 : ssrc(in_ssrc), | 91 : ssrc(in_ssrc), error(in_error) {} |
96 error(in_error) { | 92 uint32_t ssrc; |
97 } | |
98 uint32 ssrc; | |
99 VideoMediaChannel::Error error; | 93 VideoMediaChannel::Error error; |
100 }; | 94 }; |
101 | 95 |
102 struct DataChannelErrorMessageData : public rtc::MessageData { | 96 struct DataChannelErrorMessageData : public rtc::MessageData { |
103 DataChannelErrorMessageData(uint32 in_ssrc, | 97 DataChannelErrorMessageData(uint32_t in_ssrc, |
104 DataMediaChannel::Error in_error) | 98 DataMediaChannel::Error in_error) |
105 : ssrc(in_ssrc), | 99 : ssrc(in_ssrc), error(in_error) {} |
106 error(in_error) {} | 100 uint32_t ssrc; |
107 uint32 ssrc; | |
108 DataMediaChannel::Error error; | 101 DataMediaChannel::Error error; |
109 }; | 102 }; |
110 | 103 |
111 | 104 |
112 struct VideoChannel::ScreencastDetailsData { | 105 struct VideoChannel::ScreencastDetailsData { |
113 explicit ScreencastDetailsData(uint32 s) | 106 explicit ScreencastDetailsData(uint32_t s) |
114 : ssrc(s), fps(0), screencast_max_pixels(0) { | 107 : ssrc(s), fps(0), screencast_max_pixels(0) {} |
115 } | 108 uint32_t ssrc; |
116 uint32 ssrc; | |
117 int fps; | 109 int fps; |
118 int screencast_max_pixels; | 110 int screencast_max_pixels; |
119 }; | 111 }; |
120 | 112 |
121 static const char* PacketType(bool rtcp) { | 113 static const char* PacketType(bool rtcp) { |
122 return (!rtcp) ? "RTP" : "RTCP"; | 114 return (!rtcp) ? "RTP" : "RTCP"; |
123 } | 115 } |
124 | 116 |
125 static bool ValidPacket(bool rtcp, const rtc::Buffer* packet) { | 117 static bool ValidPacket(bool rtcp, const rtc::Buffer* packet) { |
126 // Check the packet size. We could check the header too if needed. | 118 // Check the packet size. We could check the header too if needed. |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
319 worker_thread_->Invoke<void>(Bind( | 311 worker_thread_->Invoke<void>(Bind( |
320 enable ? &BaseChannel::EnableMedia_w : &BaseChannel::DisableMedia_w, | 312 enable ? &BaseChannel::EnableMedia_w : &BaseChannel::DisableMedia_w, |
321 this)); | 313 this)); |
322 return true; | 314 return true; |
323 } | 315 } |
324 | 316 |
325 bool BaseChannel::AddRecvStream(const StreamParams& sp) { | 317 bool BaseChannel::AddRecvStream(const StreamParams& sp) { |
326 return InvokeOnWorker(Bind(&BaseChannel::AddRecvStream_w, this, sp)); | 318 return InvokeOnWorker(Bind(&BaseChannel::AddRecvStream_w, this, sp)); |
327 } | 319 } |
328 | 320 |
329 bool BaseChannel::RemoveRecvStream(uint32 ssrc) { | 321 bool BaseChannel::RemoveRecvStream(uint32_t ssrc) { |
330 return InvokeOnWorker(Bind(&BaseChannel::RemoveRecvStream_w, this, ssrc)); | 322 return InvokeOnWorker(Bind(&BaseChannel::RemoveRecvStream_w, this, ssrc)); |
331 } | 323 } |
332 | 324 |
333 bool BaseChannel::AddSendStream(const StreamParams& sp) { | 325 bool BaseChannel::AddSendStream(const StreamParams& sp) { |
334 return InvokeOnWorker( | 326 return InvokeOnWorker( |
335 Bind(&MediaChannel::AddSendStream, media_channel(), sp)); | 327 Bind(&MediaChannel::AddSendStream, media_channel(), sp)); |
336 } | 328 } |
337 | 329 |
338 bool BaseChannel::RemoveSendStream(uint32 ssrc) { | 330 bool BaseChannel::RemoveSendStream(uint32_t ssrc) { |
339 return InvokeOnWorker( | 331 return InvokeOnWorker( |
340 Bind(&MediaChannel::RemoveSendStream, media_channel(), ssrc)); | 332 Bind(&MediaChannel::RemoveSendStream, media_channel(), ssrc)); |
341 } | 333 } |
342 | 334 |
343 bool BaseChannel::SetLocalContent(const MediaContentDescription* content, | 335 bool BaseChannel::SetLocalContent(const MediaContentDescription* content, |
344 ContentAction action, | 336 ContentAction action, |
345 std::string* error_desc) { | 337 std::string* error_desc) { |
346 return InvokeOnWorker(Bind(&BaseChannel::SetLocalContent_w, | 338 return InvokeOnWorker(Bind(&BaseChannel::SetLocalContent_w, |
347 this, content, action, error_desc)); | 339 this, content, action, error_desc)); |
348 } | 340 } |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
522 res = srtp_filter_.ProtectRtp( | 514 res = srtp_filter_.ProtectRtp( |
523 data, len, static_cast<int>(packet->capacity()), &len); | 515 data, len, static_cast<int>(packet->capacity()), &len); |
524 #else | 516 #else |
525 options.packet_time_params.rtp_sendtime_extension_id = | 517 options.packet_time_params.rtp_sendtime_extension_id = |
526 rtp_abs_sendtime_extn_id_; | 518 rtp_abs_sendtime_extn_id_; |
527 res = srtp_filter_.ProtectRtp( | 519 res = srtp_filter_.ProtectRtp( |
528 data, len, static_cast<int>(packet->capacity()), &len, | 520 data, len, static_cast<int>(packet->capacity()), &len, |
529 &options.packet_time_params.srtp_packet_index); | 521 &options.packet_time_params.srtp_packet_index); |
530 // If protection succeeds, let's get auth params from srtp. | 522 // If protection succeeds, let's get auth params from srtp. |
531 if (res) { | 523 if (res) { |
532 uint8* auth_key = NULL; | 524 uint8_t* auth_key = NULL; |
533 int key_len; | 525 int key_len; |
534 res = srtp_filter_.GetRtpAuthParams( | 526 res = srtp_filter_.GetRtpAuthParams( |
535 &auth_key, &key_len, &options.packet_time_params.srtp_auth_tag_len); | 527 &auth_key, &key_len, &options.packet_time_params.srtp_auth_tag_len); |
536 if (res) { | 528 if (res) { |
537 options.packet_time_params.srtp_auth_key.resize(key_len); | 529 options.packet_time_params.srtp_auth_key.resize(key_len); |
538 options.packet_time_params.srtp_auth_key.assign(auth_key, | 530 options.packet_time_params.srtp_auth_key.assign(auth_key, |
539 auth_key + key_len); | 531 auth_key + key_len); |
540 } | 532 } |
541 } | 533 } |
542 #endif | 534 #endif |
543 if (!res) { | 535 if (!res) { |
544 int seq_num = -1; | 536 int seq_num = -1; |
545 uint32 ssrc = 0; | 537 uint32_t ssrc = 0; |
546 GetRtpSeqNum(data, len, &seq_num); | 538 GetRtpSeqNum(data, len, &seq_num); |
547 GetRtpSsrc(data, len, &ssrc); | 539 GetRtpSsrc(data, len, &ssrc); |
548 LOG(LS_ERROR) << "Failed to protect " << content_name_ | 540 LOG(LS_ERROR) << "Failed to protect " << content_name_ |
549 << " RTP packet: size=" << len | 541 << " RTP packet: size=" << len |
550 << ", seqnum=" << seq_num << ", SSRC=" << ssrc; | 542 << ", seqnum=" << seq_num << ", SSRC=" << ssrc; |
551 return false; | 543 return false; |
552 } | 544 } |
553 } else { | 545 } else { |
554 res = srtp_filter_.ProtectRtcp(data, len, | 546 res = srtp_filter_.ProtectRtcp(data, len, |
555 static_cast<int>(packet->capacity()), | 547 static_cast<int>(packet->capacity()), |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
616 | 608 |
617 // Unprotect the packet, if needed. | 609 // Unprotect the packet, if needed. |
618 if (srtp_filter_.IsActive()) { | 610 if (srtp_filter_.IsActive()) { |
619 char* data = packet->data<char>(); | 611 char* data = packet->data<char>(); |
620 int len = static_cast<int>(packet->size()); | 612 int len = static_cast<int>(packet->size()); |
621 bool res; | 613 bool res; |
622 if (!rtcp) { | 614 if (!rtcp) { |
623 res = srtp_filter_.UnprotectRtp(data, len, &len); | 615 res = srtp_filter_.UnprotectRtp(data, len, &len); |
624 if (!res) { | 616 if (!res) { |
625 int seq_num = -1; | 617 int seq_num = -1; |
626 uint32 ssrc = 0; | 618 uint32_t ssrc = 0; |
627 GetRtpSeqNum(data, len, &seq_num); | 619 GetRtpSeqNum(data, len, &seq_num); |
628 GetRtpSsrc(data, len, &ssrc); | 620 GetRtpSsrc(data, len, &ssrc); |
629 LOG(LS_ERROR) << "Failed to unprotect " << content_name_ | 621 LOG(LS_ERROR) << "Failed to unprotect " << content_name_ |
630 << " RTP packet: size=" << len | 622 << " RTP packet: size=" << len |
631 << ", seqnum=" << seq_num << ", SSRC=" << ssrc; | 623 << ", seqnum=" << seq_num << ", SSRC=" << ssrc; |
632 return; | 624 return; |
633 } | 625 } |
634 } else { | 626 } else { |
635 res = srtp_filter_.UnprotectRtcp(data, len, &len); | 627 res = srtp_filter_.UnprotectRtcp(data, len, &len); |
636 if (!res) { | 628 if (!res) { |
(...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1032 } | 1024 } |
1033 | 1025 |
1034 bool BaseChannel::AddRecvStream_w(const StreamParams& sp) { | 1026 bool BaseChannel::AddRecvStream_w(const StreamParams& sp) { |
1035 ASSERT(worker_thread() == rtc::Thread::Current()); | 1027 ASSERT(worker_thread() == rtc::Thread::Current()); |
1036 if (!media_channel()->AddRecvStream(sp)) | 1028 if (!media_channel()->AddRecvStream(sp)) |
1037 return false; | 1029 return false; |
1038 | 1030 |
1039 return bundle_filter_.AddStream(sp); | 1031 return bundle_filter_.AddStream(sp); |
1040 } | 1032 } |
1041 | 1033 |
1042 bool BaseChannel::RemoveRecvStream_w(uint32 ssrc) { | 1034 bool BaseChannel::RemoveRecvStream_w(uint32_t ssrc) { |
1043 ASSERT(worker_thread() == rtc::Thread::Current()); | 1035 ASSERT(worker_thread() == rtc::Thread::Current()); |
1044 bundle_filter_.RemoveStream(ssrc); | 1036 bundle_filter_.RemoveStream(ssrc); |
1045 return media_channel()->RemoveRecvStream(ssrc); | 1037 return media_channel()->RemoveRecvStream(ssrc); |
1046 } | 1038 } |
1047 | 1039 |
1048 bool BaseChannel::UpdateLocalStreams_w(const std::vector<StreamParams>& streams, | 1040 bool BaseChannel::UpdateLocalStreams_w(const std::vector<StreamParams>& streams, |
1049 ContentAction action, | 1041 ContentAction action, |
1050 std::string* error_desc) { | 1042 std::string* error_desc) { |
1051 if (!VERIFY(action == CA_OFFER || action == CA_ANSWER || | 1043 if (!VERIFY(action == CA_OFFER || action == CA_ANSWER || |
1052 action == CA_PRANSWER || action == CA_UPDATE)) | 1044 action == CA_PRANSWER || action == CA_UPDATE)) |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1252 if (!BaseChannel::Init()) { | 1244 if (!BaseChannel::Init()) { |
1253 return false; | 1245 return false; |
1254 } | 1246 } |
1255 media_channel()->SignalMediaError.connect( | 1247 media_channel()->SignalMediaError.connect( |
1256 this, &VoiceChannel::OnVoiceChannelError); | 1248 this, &VoiceChannel::OnVoiceChannelError); |
1257 srtp_filter()->SignalSrtpError.connect( | 1249 srtp_filter()->SignalSrtpError.connect( |
1258 this, &VoiceChannel::OnSrtpError); | 1250 this, &VoiceChannel::OnSrtpError); |
1259 return true; | 1251 return true; |
1260 } | 1252 } |
1261 | 1253 |
1262 bool VoiceChannel::SetRemoteRenderer(uint32 ssrc, AudioRenderer* renderer) { | 1254 bool VoiceChannel::SetRemoteRenderer(uint32_t ssrc, AudioRenderer* renderer) { |
1263 return InvokeOnWorker(Bind(&VoiceMediaChannel::SetRemoteRenderer, | 1255 return InvokeOnWorker(Bind(&VoiceMediaChannel::SetRemoteRenderer, |
1264 media_channel(), ssrc, renderer)); | 1256 media_channel(), ssrc, renderer)); |
1265 } | 1257 } |
1266 | 1258 |
1267 bool VoiceChannel::SetAudioSend(uint32 ssrc, bool mute, | 1259 bool VoiceChannel::SetAudioSend(uint32_t ssrc, |
| 1260 bool mute, |
1268 const AudioOptions* options, | 1261 const AudioOptions* options, |
1269 AudioRenderer* renderer) { | 1262 AudioRenderer* renderer) { |
1270 return InvokeOnWorker(Bind(&VoiceMediaChannel::SetAudioSend, | 1263 return InvokeOnWorker(Bind(&VoiceMediaChannel::SetAudioSend, |
1271 media_channel(), ssrc, mute, options, renderer)); | 1264 media_channel(), ssrc, mute, options, renderer)); |
1272 } | 1265 } |
1273 | 1266 |
1274 bool VoiceChannel::SetRingbackTone(const void* buf, int len) { | 1267 bool VoiceChannel::SetRingbackTone(const void* buf, int len) { |
1275 return InvokeOnWorker(Bind(&VoiceChannel::SetRingbackTone_w, this, buf, len)); | 1268 return InvokeOnWorker(Bind(&VoiceChannel::SetRingbackTone_w, this, buf, len)); |
1276 } | 1269 } |
1277 | 1270 |
1278 // TODO(juberti): Handle early media the right way. We should get an explicit | 1271 // TODO(juberti): Handle early media the right way. We should get an explicit |
1279 // ringing message telling us to start playing local ringback, which we cancel | 1272 // ringing message telling us to start playing local ringback, which we cancel |
1280 // if any early media actually arrives. For now, we do the opposite, which is | 1273 // if any early media actually arrives. For now, we do the opposite, which is |
1281 // to wait 1 second for early media, and start playing local ringback if none | 1274 // to wait 1 second for early media, and start playing local ringback if none |
1282 // arrives. | 1275 // arrives. |
1283 void VoiceChannel::SetEarlyMedia(bool enable) { | 1276 void VoiceChannel::SetEarlyMedia(bool enable) { |
1284 if (enable) { | 1277 if (enable) { |
1285 // Start the early media timeout | 1278 // Start the early media timeout |
1286 worker_thread()->PostDelayed(kEarlyMediaTimeout, this, | 1279 worker_thread()->PostDelayed(kEarlyMediaTimeout, this, |
1287 MSG_EARLYMEDIATIMEOUT); | 1280 MSG_EARLYMEDIATIMEOUT); |
1288 } else { | 1281 } else { |
1289 // Stop the timeout if currently going. | 1282 // Stop the timeout if currently going. |
1290 worker_thread()->Clear(this, MSG_EARLYMEDIATIMEOUT); | 1283 worker_thread()->Clear(this, MSG_EARLYMEDIATIMEOUT); |
1291 } | 1284 } |
1292 } | 1285 } |
1293 | 1286 |
1294 bool VoiceChannel::PlayRingbackTone(uint32 ssrc, bool play, bool loop) { | 1287 bool VoiceChannel::PlayRingbackTone(uint32_t ssrc, bool play, bool loop) { |
1295 return InvokeOnWorker(Bind(&VoiceChannel::PlayRingbackTone_w, | 1288 return InvokeOnWorker(Bind(&VoiceChannel::PlayRingbackTone_w, |
1296 this, ssrc, play, loop)); | 1289 this, ssrc, play, loop)); |
1297 } | 1290 } |
1298 | 1291 |
1299 bool VoiceChannel::PressDTMF(int digit, bool playout) { | 1292 bool VoiceChannel::PressDTMF(int digit, bool playout) { |
1300 int flags = DF_SEND; | 1293 int flags = DF_SEND; |
1301 if (playout) { | 1294 if (playout) { |
1302 flags |= DF_PLAY; | 1295 flags |= DF_PLAY; |
1303 } | 1296 } |
1304 int duration_ms = 160; | 1297 int duration_ms = 160; |
1305 return InsertDtmf(0, digit, duration_ms, flags); | 1298 return InsertDtmf(0, digit, duration_ms, flags); |
1306 } | 1299 } |
1307 | 1300 |
1308 bool VoiceChannel::CanInsertDtmf() { | 1301 bool VoiceChannel::CanInsertDtmf() { |
1309 return InvokeOnWorker(Bind(&VoiceMediaChannel::CanInsertDtmf, | 1302 return InvokeOnWorker(Bind(&VoiceMediaChannel::CanInsertDtmf, |
1310 media_channel())); | 1303 media_channel())); |
1311 } | 1304 } |
1312 | 1305 |
1313 bool VoiceChannel::InsertDtmf(uint32 ssrc, int event_code, int duration, | 1306 bool VoiceChannel::InsertDtmf(uint32_t ssrc, |
| 1307 int event_code, |
| 1308 int duration, |
1314 int flags) { | 1309 int flags) { |
1315 return InvokeOnWorker(Bind(&VoiceChannel::InsertDtmf_w, this, | 1310 return InvokeOnWorker(Bind(&VoiceChannel::InsertDtmf_w, this, |
1316 ssrc, event_code, duration, flags)); | 1311 ssrc, event_code, duration, flags)); |
1317 } | 1312 } |
1318 | 1313 |
1319 bool VoiceChannel::SetOutputScaling(uint32 ssrc, double left, double right) { | 1314 bool VoiceChannel::SetOutputScaling(uint32_t ssrc, double left, double right) { |
1320 return InvokeOnWorker(Bind(&VoiceMediaChannel::SetOutputScaling, | 1315 return InvokeOnWorker(Bind(&VoiceMediaChannel::SetOutputScaling, |
1321 media_channel(), ssrc, left, right)); | 1316 media_channel(), ssrc, left, right)); |
1322 } | 1317 } |
1323 | 1318 |
1324 bool VoiceChannel::GetStats(VoiceMediaInfo* stats) { | 1319 bool VoiceChannel::GetStats(VoiceMediaInfo* stats) { |
1325 return InvokeOnWorker(Bind(&VoiceMediaChannel::GetStats, | 1320 return InvokeOnWorker(Bind(&VoiceMediaChannel::GetStats, |
1326 media_channel(), stats)); | 1321 media_channel(), stats)); |
1327 } | 1322 } |
1328 | 1323 |
1329 void VoiceChannel::StartMediaMonitor(int cms) { | 1324 void VoiceChannel::StartMediaMonitor(int cms) { |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1503 set_remote_content_direction(content->direction()); | 1498 set_remote_content_direction(content->direction()); |
1504 ChangeState(); | 1499 ChangeState(); |
1505 return true; | 1500 return true; |
1506 } | 1501 } |
1507 | 1502 |
1508 bool VoiceChannel::SetRingbackTone_w(const void* buf, int len) { | 1503 bool VoiceChannel::SetRingbackTone_w(const void* buf, int len) { |
1509 ASSERT(worker_thread() == rtc::Thread::Current()); | 1504 ASSERT(worker_thread() == rtc::Thread::Current()); |
1510 return media_channel()->SetRingbackTone(static_cast<const char*>(buf), len); | 1505 return media_channel()->SetRingbackTone(static_cast<const char*>(buf), len); |
1511 } | 1506 } |
1512 | 1507 |
1513 bool VoiceChannel::PlayRingbackTone_w(uint32 ssrc, bool play, bool loop) { | 1508 bool VoiceChannel::PlayRingbackTone_w(uint32_t ssrc, bool play, bool loop) { |
1514 ASSERT(worker_thread() == rtc::Thread::Current()); | 1509 ASSERT(worker_thread() == rtc::Thread::Current()); |
1515 if (play) { | 1510 if (play) { |
1516 LOG(LS_INFO) << "Playing ringback tone, loop=" << loop; | 1511 LOG(LS_INFO) << "Playing ringback tone, loop=" << loop; |
1517 } else { | 1512 } else { |
1518 LOG(LS_INFO) << "Stopping ringback tone"; | 1513 LOG(LS_INFO) << "Stopping ringback tone"; |
1519 } | 1514 } |
1520 return media_channel()->PlayRingbackTone(ssrc, play, loop); | 1515 return media_channel()->PlayRingbackTone(ssrc, play, loop); |
1521 } | 1516 } |
1522 | 1517 |
1523 void VoiceChannel::HandleEarlyMediaTimeout() { | 1518 void VoiceChannel::HandleEarlyMediaTimeout() { |
1524 // This occurs on the main thread, not the worker thread. | 1519 // This occurs on the main thread, not the worker thread. |
1525 if (!received_media_) { | 1520 if (!received_media_) { |
1526 LOG(LS_INFO) << "No early media received before timeout"; | 1521 LOG(LS_INFO) << "No early media received before timeout"; |
1527 SignalEarlyMediaTimeout(this); | 1522 SignalEarlyMediaTimeout(this); |
1528 } | 1523 } |
1529 } | 1524 } |
1530 | 1525 |
1531 bool VoiceChannel::InsertDtmf_w(uint32 ssrc, int event, int duration, | 1526 bool VoiceChannel::InsertDtmf_w(uint32_t ssrc, |
| 1527 int event, |
| 1528 int duration, |
1532 int flags) { | 1529 int flags) { |
1533 if (!enabled()) { | 1530 if (!enabled()) { |
1534 return false; | 1531 return false; |
1535 } | 1532 } |
1536 | 1533 |
1537 return media_channel()->InsertDtmf(ssrc, event, duration, flags); | 1534 return media_channel()->InsertDtmf(ssrc, event, duration, flags); |
1538 } | 1535 } |
1539 | 1536 |
1540 void VoiceChannel::OnMessage(rtc::Message *pmsg) { | 1537 void VoiceChannel::OnMessage(rtc::Message *pmsg) { |
1541 switch (pmsg->message_id) { | 1538 switch (pmsg->message_id) { |
(...skipping 22 matching lines...) Expand all Loading... |
1564 VoiceMediaChannel* media_channel, const VoiceMediaInfo& info) { | 1561 VoiceMediaChannel* media_channel, const VoiceMediaInfo& info) { |
1565 ASSERT(media_channel == this->media_channel()); | 1562 ASSERT(media_channel == this->media_channel()); |
1566 SignalMediaMonitor(this, info); | 1563 SignalMediaMonitor(this, info); |
1567 } | 1564 } |
1568 | 1565 |
1569 void VoiceChannel::OnAudioMonitorUpdate(AudioMonitor* monitor, | 1566 void VoiceChannel::OnAudioMonitorUpdate(AudioMonitor* monitor, |
1570 const AudioInfo& info) { | 1567 const AudioInfo& info) { |
1571 SignalAudioMonitor(this, info); | 1568 SignalAudioMonitor(this, info); |
1572 } | 1569 } |
1573 | 1570 |
1574 void VoiceChannel::OnVoiceChannelError( | 1571 void VoiceChannel::OnVoiceChannelError(uint32_t ssrc, |
1575 uint32 ssrc, VoiceMediaChannel::Error err) { | 1572 VoiceMediaChannel::Error err) { |
1576 VoiceChannelErrorMessageData* data = new VoiceChannelErrorMessageData( | 1573 VoiceChannelErrorMessageData* data = new VoiceChannelErrorMessageData( |
1577 ssrc, err); | 1574 ssrc, err); |
1578 signaling_thread()->Post(this, MSG_CHANNEL_ERROR, data); | 1575 signaling_thread()->Post(this, MSG_CHANNEL_ERROR, data); |
1579 } | 1576 } |
1580 | 1577 |
1581 void VoiceChannel::OnSrtpError(uint32 ssrc, SrtpFilter::Mode mode, | 1578 void VoiceChannel::OnSrtpError(uint32_t ssrc, |
| 1579 SrtpFilter::Mode mode, |
1582 SrtpFilter::Error error) { | 1580 SrtpFilter::Error error) { |
1583 switch (error) { | 1581 switch (error) { |
1584 case SrtpFilter::ERROR_FAIL: | 1582 case SrtpFilter::ERROR_FAIL: |
1585 OnVoiceChannelError(ssrc, (mode == SrtpFilter::PROTECT) ? | 1583 OnVoiceChannelError(ssrc, (mode == SrtpFilter::PROTECT) ? |
1586 VoiceMediaChannel::ERROR_REC_SRTP_ERROR : | 1584 VoiceMediaChannel::ERROR_REC_SRTP_ERROR : |
1587 VoiceMediaChannel::ERROR_PLAY_SRTP_ERROR); | 1585 VoiceMediaChannel::ERROR_PLAY_SRTP_ERROR); |
1588 break; | 1586 break; |
1589 case SrtpFilter::ERROR_AUTH: | 1587 case SrtpFilter::ERROR_AUTH: |
1590 OnVoiceChannelError(ssrc, (mode == SrtpFilter::PROTECT) ? | 1588 OnVoiceChannelError(ssrc, (mode == SrtpFilter::PROTECT) ? |
1591 VoiceMediaChannel::ERROR_REC_SRTP_AUTH_FAILED : | 1589 VoiceMediaChannel::ERROR_REC_SRTP_AUTH_FAILED : |
(...skipping 29 matching lines...) Expand all Loading... |
1621 return false; | 1619 return false; |
1622 } | 1620 } |
1623 media_channel()->SignalMediaError.connect( | 1621 media_channel()->SignalMediaError.connect( |
1624 this, &VideoChannel::OnVideoChannelError); | 1622 this, &VideoChannel::OnVideoChannelError); |
1625 srtp_filter()->SignalSrtpError.connect( | 1623 srtp_filter()->SignalSrtpError.connect( |
1626 this, &VideoChannel::OnSrtpError); | 1624 this, &VideoChannel::OnSrtpError); |
1627 return true; | 1625 return true; |
1628 } | 1626 } |
1629 | 1627 |
1630 void VoiceChannel::SendLastMediaError() { | 1628 void VoiceChannel::SendLastMediaError() { |
1631 uint32 ssrc; | 1629 uint32_t ssrc; |
1632 VoiceMediaChannel::Error error; | 1630 VoiceMediaChannel::Error error; |
1633 media_channel()->GetLastMediaError(&ssrc, &error); | 1631 media_channel()->GetLastMediaError(&ssrc, &error); |
1634 SignalMediaError(this, ssrc, error); | 1632 SignalMediaError(this, ssrc, error); |
1635 } | 1633 } |
1636 | 1634 |
1637 VideoChannel::~VideoChannel() { | 1635 VideoChannel::~VideoChannel() { |
1638 std::vector<uint32> screencast_ssrcs; | 1636 std::vector<uint32_t> screencast_ssrcs; |
1639 ScreencastMap::iterator iter; | 1637 ScreencastMap::iterator iter; |
1640 while (!screencast_capturers_.empty()) { | 1638 while (!screencast_capturers_.empty()) { |
1641 if (!RemoveScreencast(screencast_capturers_.begin()->first)) { | 1639 if (!RemoveScreencast(screencast_capturers_.begin()->first)) { |
1642 LOG(LS_ERROR) << "Unable to delete screencast with ssrc " | 1640 LOG(LS_ERROR) << "Unable to delete screencast with ssrc " |
1643 << screencast_capturers_.begin()->first; | 1641 << screencast_capturers_.begin()->first; |
1644 ASSERT(false); | 1642 ASSERT(false); |
1645 break; | 1643 break; |
1646 } | 1644 } |
1647 } | 1645 } |
1648 | 1646 |
1649 StopMediaMonitor(); | 1647 StopMediaMonitor(); |
1650 // this can't be done in the base class, since it calls a virtual | 1648 // this can't be done in the base class, since it calls a virtual |
1651 DisableMedia_w(); | 1649 DisableMedia_w(); |
1652 | 1650 |
1653 Deinit(); | 1651 Deinit(); |
1654 } | 1652 } |
1655 | 1653 |
1656 bool VideoChannel::SetRenderer(uint32 ssrc, VideoRenderer* renderer) { | 1654 bool VideoChannel::SetRenderer(uint32_t ssrc, VideoRenderer* renderer) { |
1657 worker_thread()->Invoke<void>(Bind( | 1655 worker_thread()->Invoke<void>(Bind( |
1658 &VideoMediaChannel::SetRenderer, media_channel(), ssrc, renderer)); | 1656 &VideoMediaChannel::SetRenderer, media_channel(), ssrc, renderer)); |
1659 return true; | 1657 return true; |
1660 } | 1658 } |
1661 | 1659 |
1662 bool VideoChannel::ApplyViewRequest(const ViewRequest& request) { | 1660 bool VideoChannel::ApplyViewRequest(const ViewRequest& request) { |
1663 return InvokeOnWorker(Bind(&VideoChannel::ApplyViewRequest_w, this, request)); | 1661 return InvokeOnWorker(Bind(&VideoChannel::ApplyViewRequest_w, this, request)); |
1664 } | 1662 } |
1665 | 1663 |
1666 bool VideoChannel::AddScreencast(uint32 ssrc, VideoCapturer* capturer) { | 1664 bool VideoChannel::AddScreencast(uint32_t ssrc, VideoCapturer* capturer) { |
1667 return worker_thread()->Invoke<bool>(Bind( | 1665 return worker_thread()->Invoke<bool>(Bind( |
1668 &VideoChannel::AddScreencast_w, this, ssrc, capturer)); | 1666 &VideoChannel::AddScreencast_w, this, ssrc, capturer)); |
1669 } | 1667 } |
1670 | 1668 |
1671 bool VideoChannel::SetCapturer(uint32 ssrc, VideoCapturer* capturer) { | 1669 bool VideoChannel::SetCapturer(uint32_t ssrc, VideoCapturer* capturer) { |
1672 return InvokeOnWorker(Bind(&VideoMediaChannel::SetCapturer, | 1670 return InvokeOnWorker(Bind(&VideoMediaChannel::SetCapturer, |
1673 media_channel(), ssrc, capturer)); | 1671 media_channel(), ssrc, capturer)); |
1674 } | 1672 } |
1675 | 1673 |
1676 bool VideoChannel::RemoveScreencast(uint32 ssrc) { | 1674 bool VideoChannel::RemoveScreencast(uint32_t ssrc) { |
1677 return InvokeOnWorker(Bind(&VideoChannel::RemoveScreencast_w, this, ssrc)); | 1675 return InvokeOnWorker(Bind(&VideoChannel::RemoveScreencast_w, this, ssrc)); |
1678 } | 1676 } |
1679 | 1677 |
1680 bool VideoChannel::IsScreencasting() { | 1678 bool VideoChannel::IsScreencasting() { |
1681 return InvokeOnWorker(Bind(&VideoChannel::IsScreencasting_w, this)); | 1679 return InvokeOnWorker(Bind(&VideoChannel::IsScreencasting_w, this)); |
1682 } | 1680 } |
1683 | 1681 |
1684 int VideoChannel::GetScreencastFps(uint32 ssrc) { | 1682 int VideoChannel::GetScreencastFps(uint32_t ssrc) { |
1685 ScreencastDetailsData data(ssrc); | 1683 ScreencastDetailsData data(ssrc); |
1686 worker_thread()->Invoke<void>(Bind( | 1684 worker_thread()->Invoke<void>(Bind( |
1687 &VideoChannel::GetScreencastDetails_w, this, &data)); | 1685 &VideoChannel::GetScreencastDetails_w, this, &data)); |
1688 return data.fps; | 1686 return data.fps; |
1689 } | 1687 } |
1690 | 1688 |
1691 int VideoChannel::GetScreencastMaxPixels(uint32 ssrc) { | 1689 int VideoChannel::GetScreencastMaxPixels(uint32_t ssrc) { |
1692 ScreencastDetailsData data(ssrc); | 1690 ScreencastDetailsData data(ssrc); |
1693 worker_thread()->Invoke<void>(Bind( | 1691 worker_thread()->Invoke<void>(Bind( |
1694 &VideoChannel::GetScreencastDetails_w, this, &data)); | 1692 &VideoChannel::GetScreencastDetails_w, this, &data)); |
1695 return data.screencast_max_pixels; | 1693 return data.screencast_max_pixels; |
1696 } | 1694 } |
1697 | 1695 |
1698 bool VideoChannel::SendIntraFrame() { | 1696 bool VideoChannel::SendIntraFrame() { |
1699 worker_thread()->Invoke<void>(Bind( | 1697 worker_thread()->Invoke<void>(Bind( |
1700 &VideoMediaChannel::SendIntraFrame, media_channel())); | 1698 &VideoMediaChannel::SendIntraFrame, media_channel())); |
1701 return true; | 1699 return true; |
1702 } | 1700 } |
1703 | 1701 |
1704 bool VideoChannel::RequestIntraFrame() { | 1702 bool VideoChannel::RequestIntraFrame() { |
1705 worker_thread()->Invoke<void>(Bind( | 1703 worker_thread()->Invoke<void>(Bind( |
1706 &VideoMediaChannel::RequestIntraFrame, media_channel())); | 1704 &VideoMediaChannel::RequestIntraFrame, media_channel())); |
1707 return true; | 1705 return true; |
1708 } | 1706 } |
1709 | 1707 |
1710 bool VideoChannel::SetVideoSend(uint32 ssrc, bool mute, | 1708 bool VideoChannel::SetVideoSend(uint32_t ssrc, |
| 1709 bool mute, |
1711 const VideoOptions* options) { | 1710 const VideoOptions* options) { |
1712 return InvokeOnWorker(Bind(&VideoMediaChannel::SetVideoSend, | 1711 return InvokeOnWorker(Bind(&VideoMediaChannel::SetVideoSend, |
1713 media_channel(), ssrc, mute, options)); | 1712 media_channel(), ssrc, mute, options)); |
1714 } | 1713 } |
1715 | 1714 |
1716 void VideoChannel::ChangeState() { | 1715 void VideoChannel::ChangeState() { |
1717 // Render incoming data if we're the active call, and we have the local | 1716 // Render incoming data if we're the active call, and we have the local |
1718 // content. We receive data on the default channel and multiplexed streams. | 1717 // content. We receive data on the default channel and multiplexed streams. |
1719 bool recv = IsReadyToReceive(); | 1718 bool recv = IsReadyToReceive(); |
1720 if (!media_channel()->SetRender(recv)) { | 1719 if (!media_channel()->SetRender(recv)) { |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1881 << it->selector.ssrc << ", '" | 1880 << it->selector.ssrc << ", '" |
1882 << it->selector.groupid << "', '" | 1881 << it->selector.groupid << "', '" |
1883 << it->selector.streamid << "'" | 1882 << it->selector.streamid << "'" |
1884 << ") is not in the local streams."; | 1883 << ") is not in the local streams."; |
1885 } | 1884 } |
1886 } | 1885 } |
1887 | 1886 |
1888 return ret; | 1887 return ret; |
1889 } | 1888 } |
1890 | 1889 |
1891 bool VideoChannel::AddScreencast_w(uint32 ssrc, VideoCapturer* capturer) { | 1890 bool VideoChannel::AddScreencast_w(uint32_t ssrc, VideoCapturer* capturer) { |
1892 if (screencast_capturers_.find(ssrc) != screencast_capturers_.end()) { | 1891 if (screencast_capturers_.find(ssrc) != screencast_capturers_.end()) { |
1893 return false; | 1892 return false; |
1894 } | 1893 } |
1895 capturer->SignalStateChange.connect(this, &VideoChannel::OnStateChange); | 1894 capturer->SignalStateChange.connect(this, &VideoChannel::OnStateChange); |
1896 screencast_capturers_[ssrc] = capturer; | 1895 screencast_capturers_[ssrc] = capturer; |
1897 return true; | 1896 return true; |
1898 } | 1897 } |
1899 | 1898 |
1900 bool VideoChannel::RemoveScreencast_w(uint32 ssrc) { | 1899 bool VideoChannel::RemoveScreencast_w(uint32_t ssrc) { |
1901 ScreencastMap::iterator iter = screencast_capturers_.find(ssrc); | 1900 ScreencastMap::iterator iter = screencast_capturers_.find(ssrc); |
1902 if (iter == screencast_capturers_.end()) { | 1901 if (iter == screencast_capturers_.end()) { |
1903 return false; | 1902 return false; |
1904 } | 1903 } |
1905 // Clean up VideoCapturer. | 1904 // Clean up VideoCapturer. |
1906 delete iter->second; | 1905 delete iter->second; |
1907 screencast_capturers_.erase(iter); | 1906 screencast_capturers_.erase(iter); |
1908 return true; | 1907 return true; |
1909 } | 1908 } |
1910 | 1909 |
1911 bool VideoChannel::IsScreencasting_w() const { | 1910 bool VideoChannel::IsScreencasting_w() const { |
1912 return !screencast_capturers_.empty(); | 1911 return !screencast_capturers_.empty(); |
1913 } | 1912 } |
1914 | 1913 |
1915 void VideoChannel::GetScreencastDetails_w( | 1914 void VideoChannel::GetScreencastDetails_w( |
1916 ScreencastDetailsData* data) const { | 1915 ScreencastDetailsData* data) const { |
1917 ScreencastMap::const_iterator iter = screencast_capturers_.find(data->ssrc); | 1916 ScreencastMap::const_iterator iter = screencast_capturers_.find(data->ssrc); |
1918 if (iter == screencast_capturers_.end()) { | 1917 if (iter == screencast_capturers_.end()) { |
1919 return; | 1918 return; |
1920 } | 1919 } |
1921 VideoCapturer* capturer = iter->second; | 1920 VideoCapturer* capturer = iter->second; |
1922 const VideoFormat* video_format = capturer->GetCaptureFormat(); | 1921 const VideoFormat* video_format = capturer->GetCaptureFormat(); |
1923 data->fps = VideoFormat::IntervalToFps(video_format->interval); | 1922 data->fps = VideoFormat::IntervalToFps(video_format->interval); |
1924 data->screencast_max_pixels = capturer->screencast_max_pixels(); | 1923 data->screencast_max_pixels = capturer->screencast_max_pixels(); |
1925 } | 1924 } |
1926 | 1925 |
1927 void VideoChannel::OnScreencastWindowEvent_s(uint32 ssrc, | 1926 void VideoChannel::OnScreencastWindowEvent_s(uint32_t ssrc, |
1928 rtc::WindowEvent we) { | 1927 rtc::WindowEvent we) { |
1929 ASSERT(signaling_thread() == rtc::Thread::Current()); | 1928 ASSERT(signaling_thread() == rtc::Thread::Current()); |
1930 SignalScreencastWindowEvent(ssrc, we); | 1929 SignalScreencastWindowEvent(ssrc, we); |
1931 } | 1930 } |
1932 | 1931 |
1933 void VideoChannel::OnMessage(rtc::Message *pmsg) { | 1932 void VideoChannel::OnMessage(rtc::Message *pmsg) { |
1934 switch (pmsg->message_id) { | 1933 switch (pmsg->message_id) { |
1935 case MSG_SCREENCASTWINDOWEVENT: { | 1934 case MSG_SCREENCASTWINDOWEVENT: { |
1936 const ScreencastEventMessageData* data = | 1935 const ScreencastEventMessageData* data = |
1937 static_cast<ScreencastEventMessageData*>(pmsg->pdata); | 1936 static_cast<ScreencastEventMessageData*>(pmsg->pdata); |
(...skipping 20 matching lines...) Expand all Loading... |
1958 } | 1957 } |
1959 | 1958 |
1960 // TODO(pthatcher): Look into removing duplicate code between | 1959 // TODO(pthatcher): Look into removing duplicate code between |
1961 // audio, video, and data, perhaps by using templates. | 1960 // audio, video, and data, perhaps by using templates. |
1962 void VideoChannel::OnMediaMonitorUpdate( | 1961 void VideoChannel::OnMediaMonitorUpdate( |
1963 VideoMediaChannel* media_channel, const VideoMediaInfo &info) { | 1962 VideoMediaChannel* media_channel, const VideoMediaInfo &info) { |
1964 ASSERT(media_channel == this->media_channel()); | 1963 ASSERT(media_channel == this->media_channel()); |
1965 SignalMediaMonitor(this, info); | 1964 SignalMediaMonitor(this, info); |
1966 } | 1965 } |
1967 | 1966 |
1968 void VideoChannel::OnScreencastWindowEvent(uint32 ssrc, | 1967 void VideoChannel::OnScreencastWindowEvent(uint32_t ssrc, |
1969 rtc::WindowEvent event) { | 1968 rtc::WindowEvent event) { |
1970 ScreencastEventMessageData* pdata = | 1969 ScreencastEventMessageData* pdata = |
1971 new ScreencastEventMessageData(ssrc, event); | 1970 new ScreencastEventMessageData(ssrc, event); |
1972 signaling_thread()->Post(this, MSG_SCREENCASTWINDOWEVENT, pdata); | 1971 signaling_thread()->Post(this, MSG_SCREENCASTWINDOWEVENT, pdata); |
1973 } | 1972 } |
1974 | 1973 |
1975 void VideoChannel::OnStateChange(VideoCapturer* capturer, CaptureState ev) { | 1974 void VideoChannel::OnStateChange(VideoCapturer* capturer, CaptureState ev) { |
1976 // Map capturer events to window events. In the future we may want to simply | 1975 // Map capturer events to window events. In the future we may want to simply |
1977 // pass these events up directly. | 1976 // pass these events up directly. |
1978 rtc::WindowEvent we; | 1977 rtc::WindowEvent we; |
1979 if (ev == CS_STOPPED) { | 1978 if (ev == CS_STOPPED) { |
1980 we = rtc::WE_CLOSE; | 1979 we = rtc::WE_CLOSE; |
1981 } else if (ev == CS_PAUSED) { | 1980 } else if (ev == CS_PAUSED) { |
1982 we = rtc::WE_MINIMIZE; | 1981 we = rtc::WE_MINIMIZE; |
1983 } else if (ev == CS_RUNNING && previous_we_ == rtc::WE_MINIMIZE) { | 1982 } else if (ev == CS_RUNNING && previous_we_ == rtc::WE_MINIMIZE) { |
1984 we = rtc::WE_RESTORE; | 1983 we = rtc::WE_RESTORE; |
1985 } else { | 1984 } else { |
1986 return; | 1985 return; |
1987 } | 1986 } |
1988 previous_we_ = we; | 1987 previous_we_ = we; |
1989 | 1988 |
1990 uint32 ssrc = 0; | 1989 uint32_t ssrc = 0; |
1991 if (!GetLocalSsrc(capturer, &ssrc)) { | 1990 if (!GetLocalSsrc(capturer, &ssrc)) { |
1992 return; | 1991 return; |
1993 } | 1992 } |
1994 | 1993 |
1995 OnScreencastWindowEvent(ssrc, we); | 1994 OnScreencastWindowEvent(ssrc, we); |
1996 } | 1995 } |
1997 | 1996 |
1998 bool VideoChannel::GetLocalSsrc(const VideoCapturer* capturer, uint32* ssrc) { | 1997 bool VideoChannel::GetLocalSsrc(const VideoCapturer* capturer, uint32_t* ssrc) { |
1999 *ssrc = 0; | 1998 *ssrc = 0; |
2000 for (ScreencastMap::iterator iter = screencast_capturers_.begin(); | 1999 for (ScreencastMap::iterator iter = screencast_capturers_.begin(); |
2001 iter != screencast_capturers_.end(); ++iter) { | 2000 iter != screencast_capturers_.end(); ++iter) { |
2002 if (iter->second == capturer) { | 2001 if (iter->second == capturer) { |
2003 *ssrc = iter->first; | 2002 *ssrc = iter->first; |
2004 return true; | 2003 return true; |
2005 } | 2004 } |
2006 } | 2005 } |
2007 return false; | 2006 return false; |
2008 } | 2007 } |
2009 | 2008 |
2010 void VideoChannel::OnVideoChannelError(uint32 ssrc, | 2009 void VideoChannel::OnVideoChannelError(uint32_t ssrc, |
2011 VideoMediaChannel::Error error) { | 2010 VideoMediaChannel::Error error) { |
2012 VideoChannelErrorMessageData* data = new VideoChannelErrorMessageData( | 2011 VideoChannelErrorMessageData* data = new VideoChannelErrorMessageData( |
2013 ssrc, error); | 2012 ssrc, error); |
2014 signaling_thread()->Post(this, MSG_CHANNEL_ERROR, data); | 2013 signaling_thread()->Post(this, MSG_CHANNEL_ERROR, data); |
2015 } | 2014 } |
2016 | 2015 |
2017 void VideoChannel::OnSrtpError(uint32 ssrc, SrtpFilter::Mode mode, | 2016 void VideoChannel::OnSrtpError(uint32_t ssrc, |
| 2017 SrtpFilter::Mode mode, |
2018 SrtpFilter::Error error) { | 2018 SrtpFilter::Error error) { |
2019 switch (error) { | 2019 switch (error) { |
2020 case SrtpFilter::ERROR_FAIL: | 2020 case SrtpFilter::ERROR_FAIL: |
2021 OnVideoChannelError(ssrc, (mode == SrtpFilter::PROTECT) ? | 2021 OnVideoChannelError(ssrc, (mode == SrtpFilter::PROTECT) ? |
2022 VideoMediaChannel::ERROR_REC_SRTP_ERROR : | 2022 VideoMediaChannel::ERROR_REC_SRTP_ERROR : |
2023 VideoMediaChannel::ERROR_PLAY_SRTP_ERROR); | 2023 VideoMediaChannel::ERROR_PLAY_SRTP_ERROR); |
2024 break; | 2024 break; |
2025 case SrtpFilter::ERROR_AUTH: | 2025 case SrtpFilter::ERROR_AUTH: |
2026 OnVideoChannelError(ssrc, (mode == SrtpFilter::PROTECT) ? | 2026 OnVideoChannelError(ssrc, (mode == SrtpFilter::PROTECT) ? |
2027 VideoMediaChannel::ERROR_REC_SRTP_AUTH_FAILED : | 2027 VideoMediaChannel::ERROR_REC_SRTP_AUTH_FAILED : |
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2280 break; | 2280 break; |
2281 } | 2281 } |
2282 case MSG_CHANNEL_ERROR: { | 2282 case MSG_CHANNEL_ERROR: { |
2283 const DataChannelErrorMessageData* data = | 2283 const DataChannelErrorMessageData* data = |
2284 static_cast<DataChannelErrorMessageData*>(pmsg->pdata); | 2284 static_cast<DataChannelErrorMessageData*>(pmsg->pdata); |
2285 SignalMediaError(this, data->ssrc, data->error); | 2285 SignalMediaError(this, data->ssrc, data->error); |
2286 delete data; | 2286 delete data; |
2287 break; | 2287 break; |
2288 } | 2288 } |
2289 case MSG_STREAMCLOSEDREMOTELY: { | 2289 case MSG_STREAMCLOSEDREMOTELY: { |
2290 rtc::TypedMessageData<uint32>* data = | 2290 rtc::TypedMessageData<uint32_t>* data = |
2291 static_cast<rtc::TypedMessageData<uint32>*>(pmsg->pdata); | 2291 static_cast<rtc::TypedMessageData<uint32_t>*>(pmsg->pdata); |
2292 SignalStreamClosedRemotely(data->data()); | 2292 SignalStreamClosedRemotely(data->data()); |
2293 delete data; | 2293 delete data; |
2294 break; | 2294 break; |
2295 } | 2295 } |
2296 default: | 2296 default: |
2297 BaseChannel::OnMessage(pmsg); | 2297 BaseChannel::OnMessage(pmsg); |
2298 break; | 2298 break; |
2299 } | 2299 } |
2300 } | 2300 } |
2301 | 2301 |
(...skipping 24 matching lines...) Expand all Loading... |
2326 SignalMediaMonitor(this, info); | 2326 SignalMediaMonitor(this, info); |
2327 } | 2327 } |
2328 | 2328 |
2329 void DataChannel::OnDataReceived( | 2329 void DataChannel::OnDataReceived( |
2330 const ReceiveDataParams& params, const char* data, size_t len) { | 2330 const ReceiveDataParams& params, const char* data, size_t len) { |
2331 DataReceivedMessageData* msg = new DataReceivedMessageData( | 2331 DataReceivedMessageData* msg = new DataReceivedMessageData( |
2332 params, data, len); | 2332 params, data, len); |
2333 signaling_thread()->Post(this, MSG_DATARECEIVED, msg); | 2333 signaling_thread()->Post(this, MSG_DATARECEIVED, msg); |
2334 } | 2334 } |
2335 | 2335 |
2336 void DataChannel::OnDataChannelError( | 2336 void DataChannel::OnDataChannelError(uint32_t ssrc, |
2337 uint32 ssrc, DataMediaChannel::Error err) { | 2337 DataMediaChannel::Error err) { |
2338 DataChannelErrorMessageData* data = new DataChannelErrorMessageData( | 2338 DataChannelErrorMessageData* data = new DataChannelErrorMessageData( |
2339 ssrc, err); | 2339 ssrc, err); |
2340 signaling_thread()->Post(this, MSG_CHANNEL_ERROR, data); | 2340 signaling_thread()->Post(this, MSG_CHANNEL_ERROR, data); |
2341 } | 2341 } |
2342 | 2342 |
2343 void DataChannel::OnDataChannelReadyToSend(bool writable) { | 2343 void DataChannel::OnDataChannelReadyToSend(bool writable) { |
2344 // This is usded for congestion control to indicate that the stream is ready | 2344 // This is usded for congestion control to indicate that the stream is ready |
2345 // to send by the MediaChannel, as opposed to OnReadyToSend, which indicates | 2345 // to send by the MediaChannel, as opposed to OnReadyToSend, which indicates |
2346 // that the transport channel is ready. | 2346 // that the transport channel is ready. |
2347 signaling_thread()->Post(this, MSG_READYTOSENDDATA, | 2347 signaling_thread()->Post(this, MSG_READYTOSENDDATA, |
2348 new DataChannelReadyToSendMessageData(writable)); | 2348 new DataChannelReadyToSendMessageData(writable)); |
2349 } | 2349 } |
2350 | 2350 |
2351 void DataChannel::OnSrtpError(uint32 ssrc, SrtpFilter::Mode mode, | 2351 void DataChannel::OnSrtpError(uint32_t ssrc, |
| 2352 SrtpFilter::Mode mode, |
2352 SrtpFilter::Error error) { | 2353 SrtpFilter::Error error) { |
2353 switch (error) { | 2354 switch (error) { |
2354 case SrtpFilter::ERROR_FAIL: | 2355 case SrtpFilter::ERROR_FAIL: |
2355 OnDataChannelError(ssrc, (mode == SrtpFilter::PROTECT) ? | 2356 OnDataChannelError(ssrc, (mode == SrtpFilter::PROTECT) ? |
2356 DataMediaChannel::ERROR_SEND_SRTP_ERROR : | 2357 DataMediaChannel::ERROR_SEND_SRTP_ERROR : |
2357 DataMediaChannel::ERROR_RECV_SRTP_ERROR); | 2358 DataMediaChannel::ERROR_RECV_SRTP_ERROR); |
2358 break; | 2359 break; |
2359 case SrtpFilter::ERROR_AUTH: | 2360 case SrtpFilter::ERROR_AUTH: |
2360 OnDataChannelError(ssrc, (mode == SrtpFilter::PROTECT) ? | 2361 OnDataChannelError(ssrc, (mode == SrtpFilter::PROTECT) ? |
2361 DataMediaChannel::ERROR_SEND_SRTP_AUTH_FAILED : | 2362 DataMediaChannel::ERROR_SEND_SRTP_AUTH_FAILED : |
(...skipping 10 matching lines...) Expand all Loading... |
2372 } | 2373 } |
2373 | 2374 |
2374 void DataChannel::GetSrtpCiphers(std::vector<std::string>* ciphers) const { | 2375 void DataChannel::GetSrtpCiphers(std::vector<std::string>* ciphers) const { |
2375 GetSupportedDataCryptoSuites(ciphers); | 2376 GetSupportedDataCryptoSuites(ciphers); |
2376 } | 2377 } |
2377 | 2378 |
2378 bool DataChannel::ShouldSetupDtlsSrtp() const { | 2379 bool DataChannel::ShouldSetupDtlsSrtp() const { |
2379 return (data_channel_type_ == DCT_RTP); | 2380 return (data_channel_type_ == DCT_RTP); |
2380 } | 2381 } |
2381 | 2382 |
2382 void DataChannel::OnStreamClosedRemotely(uint32 sid) { | 2383 void DataChannel::OnStreamClosedRemotely(uint32_t sid) { |
2383 rtc::TypedMessageData<uint32>* message = | 2384 rtc::TypedMessageData<uint32_t>* message = |
2384 new rtc::TypedMessageData<uint32>(sid); | 2385 new rtc::TypedMessageData<uint32_t>(sid); |
2385 signaling_thread()->Post(this, MSG_STREAMCLOSEDREMOTELY, message); | 2386 signaling_thread()->Post(this, MSG_STREAMCLOSEDREMOTELY, message); |
2386 } | 2387 } |
2387 | 2388 |
2388 } // namespace cricket | 2389 } // namespace cricket |
OLD | NEW |