| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 1344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1355 _engineStatisticsPtr->SetLastError( | 1355 _engineStatisticsPtr->SetLastError( |
| 1356 VE_INVALID_OPERATION, kTraceWarning, | 1356 VE_INVALID_OPERATION, kTraceWarning, |
| 1357 "DeRegisterExternalTransport() external transport already " | 1357 "DeRegisterExternalTransport() external transport already " |
| 1358 "disabled"); | 1358 "disabled"); |
| 1359 } | 1359 } |
| 1360 _externalTransport = false; | 1360 _externalTransport = false; |
| 1361 _transportPtr = NULL; | 1361 _transportPtr = NULL; |
| 1362 return 0; | 1362 return 0; |
| 1363 } | 1363 } |
| 1364 | 1364 |
| 1365 // TODO(nisse): Delete this method together with ReceivedRTPPacket. | |
| 1366 // It's a temporary hack to support both ReceivedRTPPacket and | |
| 1367 // OnRtpPacket interfaces without too much code duplication. | |
| 1368 bool Channel::OnRtpPacketWithHeader(const uint8_t* received_packet, | |
| 1369 size_t length, | |
| 1370 RTPHeader *header) { | |
| 1371 // Store playout timestamp for the received RTP packet | |
| 1372 UpdatePlayoutTimestamp(false); | |
| 1373 | |
| 1374 header->payload_type_frequency = | |
| 1375 rtp_payload_registry_->GetPayloadTypeFrequency(header->payloadType); | |
| 1376 if (header->payload_type_frequency < 0) | |
| 1377 return false; | |
| 1378 bool in_order = IsPacketInOrder(*header); | |
| 1379 rtp_receive_statistics_->IncomingPacket( | |
| 1380 *header, length, IsPacketRetransmitted(*header, in_order)); | |
| 1381 rtp_payload_registry_->SetIncomingPayloadType(*header); | |
| 1382 | |
| 1383 return ReceivePacket(received_packet, length, *header, in_order); | |
| 1384 } | |
| 1385 | |
| 1386 int32_t Channel::ReceivedRTPPacket(const uint8_t* received_packet, | |
| 1387 size_t length, | |
| 1388 const PacketTime& packet_time) { | |
| 1389 WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId, _channelId), | |
| 1390 "Channel::ReceivedRTPPacket()"); | |
| 1391 | |
| 1392 RTPHeader header; | |
| 1393 if (!rtp_header_parser_->Parse(received_packet, length, &header)) { | |
| 1394 WEBRTC_TRACE(webrtc::kTraceDebug, webrtc::kTraceVoice, _channelId, | |
| 1395 "Incoming packet: invalid RTP header"); | |
| 1396 return -1; | |
| 1397 } | |
| 1398 return OnRtpPacketWithHeader(received_packet, length, &header) ? 0 : -1; | |
| 1399 } | |
| 1400 | |
| 1401 void Channel::OnRtpPacket(const RtpPacketReceived& packet) { | 1365 void Channel::OnRtpPacket(const RtpPacketReceived& packet) { |
| 1402 WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId, _channelId), | 1366 WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId, _channelId), |
| 1403 "Channel::ReceivedRTPPacket()"); | 1367 "Channel::OnRtpPacket()"); |
| 1404 | 1368 |
| 1405 RTPHeader header; | 1369 RTPHeader header; |
| 1406 packet.GetHeader(&header); | 1370 packet.GetHeader(&header); |
| 1407 OnRtpPacketWithHeader(packet.data(), packet.size(), &header); | 1371 |
| 1372 // Store playout timestamp for the received RTP packet |
| 1373 UpdatePlayoutTimestamp(false); |
| 1374 |
| 1375 header.payload_type_frequency = |
| 1376 rtp_payload_registry_->GetPayloadTypeFrequency(header.payloadType); |
| 1377 if (header.payload_type_frequency >= 0) { |
| 1378 bool in_order = IsPacketInOrder(header); |
| 1379 rtp_receive_statistics_->IncomingPacket( |
| 1380 header, packet.size(), IsPacketRetransmitted(header, in_order)); |
| 1381 rtp_payload_registry_->SetIncomingPayloadType(header); |
| 1382 |
| 1383 ReceivePacket(packet.data(), packet.size(), header, in_order); |
| 1384 } |
| 1408 } | 1385 } |
| 1409 | 1386 |
| 1410 bool Channel::ReceivePacket(const uint8_t* packet, | 1387 bool Channel::ReceivePacket(const uint8_t* packet, |
| 1411 size_t packet_length, | 1388 size_t packet_length, |
| 1412 const RTPHeader& header, | 1389 const RTPHeader& header, |
| 1413 bool in_order) { | 1390 bool in_order) { |
| 1414 const uint8_t* payload = packet + header.headerLength; | 1391 const uint8_t* payload = packet + header.headerLength; |
| 1415 assert(packet_length >= header.headerLength); | 1392 assert(packet_length >= header.headerLength); |
| 1416 size_t payload_length = packet_length - header.headerLength; | 1393 size_t payload_length = packet_length - header.headerLength; |
| 1417 PayloadUnion payload_specific; | 1394 PayloadUnion payload_specific; |
| (...skipping 688 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2106 int64_t min_rtt = 0; | 2083 int64_t min_rtt = 0; |
| 2107 if (_rtpRtcpModule->RTT(remoteSSRC, &rtt, &avg_rtt, &min_rtt, &max_rtt) != | 2084 if (_rtpRtcpModule->RTT(remoteSSRC, &rtt, &avg_rtt, &min_rtt, &max_rtt) != |
| 2108 0) { | 2085 0) { |
| 2109 return 0; | 2086 return 0; |
| 2110 } | 2087 } |
| 2111 return rtt; | 2088 return rtt; |
| 2112 } | 2089 } |
| 2113 | 2090 |
| 2114 } // namespace voe | 2091 } // namespace voe |
| 2115 } // namespace webrtc | 2092 } // namespace webrtc |
| OLD | NEW |