| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2013 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 1193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1204 if (status == DELIVERY_OK) | 1204 if (status == DELIVERY_OK) |
| 1205 event_log_->LogRtpHeader(kIncomingPacket, media_type, packet, length); | 1205 event_log_->LogRtpHeader(kIncomingPacket, media_type, packet, length); |
| 1206 return status; | 1206 return status; |
| 1207 } | 1207 } |
| 1208 } | 1208 } |
| 1209 if (media_type == MediaType::ANY || media_type == MediaType::VIDEO) { | 1209 if (media_type == MediaType::ANY || media_type == MediaType::VIDEO) { |
| 1210 auto it = video_receive_ssrcs_.find(ssrc); | 1210 auto it = video_receive_ssrcs_.find(ssrc); |
| 1211 if (it != video_receive_ssrcs_.end()) { | 1211 if (it != video_receive_ssrcs_.end()) { |
| 1212 received_bytes_per_second_counter_.Add(static_cast<int>(length)); | 1212 received_bytes_per_second_counter_.Add(static_cast<int>(length)); |
| 1213 received_video_bytes_per_second_counter_.Add(static_cast<int>(length)); | 1213 received_video_bytes_per_second_counter_.Add(static_cast<int>(length)); |
| 1214 // TODO(brandtr): Notify the BWE of received media packets here. | 1214 it->second->OnRtpPacket(*parsed_packet); |
| 1215 auto status = it->second->DeliverRtp(packet, length, packet_time) | 1215 |
| 1216 // Deliver media packets to FlexFEC subsystem. |
| 1217 auto it_bounds = flexfec_receive_ssrcs_media_.equal_range(ssrc); |
| 1218 for (auto it = it_bounds.first; it != it_bounds.second; ++it) |
| 1219 it->second->AddAndProcessReceivedPacket(*parsed_packet); |
| 1220 |
| 1221 event_log_->LogRtpHeader(kIncomingPacket, media_type, packet, length); |
| 1222 return DELIVERY_OK; |
| 1223 } |
| 1224 } |
| 1225 if (media_type == MediaType::ANY || media_type == MediaType::VIDEO) { |
| 1226 auto it = flexfec_receive_ssrcs_protection_.find(ssrc); |
| 1227 if (it != flexfec_receive_ssrcs_protection_.end()) { |
| 1228 auto status = it->second->AddAndProcessReceivedPacket(*parsed_packet) |
| 1216 ? DELIVERY_OK | 1229 ? DELIVERY_OK |
| 1217 : DELIVERY_PACKET_ERROR; | 1230 : DELIVERY_PACKET_ERROR; |
| 1218 // Deliver media packets to FlexFEC subsystem. RTP header extensions need | |
| 1219 // not be parsed, as FlexFEC is oblivious to the semantic meaning of the | |
| 1220 // packet contents beyond the 12 byte RTP base header. The BWE is fed | |
| 1221 // information about these media packets from the regular media pipeline. | |
| 1222 if (parsed_packet) { | |
| 1223 auto it_bounds = flexfec_receive_ssrcs_media_.equal_range(ssrc); | |
| 1224 for (auto it = it_bounds.first; it != it_bounds.second; ++it) | |
| 1225 it->second->AddAndProcessReceivedPacket(*parsed_packet); | |
| 1226 } | |
| 1227 if (status == DELIVERY_OK) | 1231 if (status == DELIVERY_OK) |
| 1228 event_log_->LogRtpHeader(kIncomingPacket, media_type, packet, length); | 1232 event_log_->LogRtpHeader(kIncomingPacket, media_type, packet, length); |
| 1229 return status; | 1233 return status; |
| 1230 } | 1234 } |
| 1231 } | 1235 } |
| 1232 if (media_type == MediaType::ANY || media_type == MediaType::VIDEO) { | |
| 1233 auto it = flexfec_receive_ssrcs_protection_.find(ssrc); | |
| 1234 if (it != flexfec_receive_ssrcs_protection_.end()) { | |
| 1235 if (parsed_packet) { | |
| 1236 auto status = it->second->AddAndProcessReceivedPacket(*parsed_packet) | |
| 1237 ? DELIVERY_OK | |
| 1238 : DELIVERY_PACKET_ERROR; | |
| 1239 if (status == DELIVERY_OK) | |
| 1240 event_log_->LogRtpHeader(kIncomingPacket, media_type, packet, length); | |
| 1241 return status; | |
| 1242 } | |
| 1243 } | |
| 1244 } | |
| 1245 return DELIVERY_UNKNOWN_SSRC; | 1236 return DELIVERY_UNKNOWN_SSRC; |
| 1246 } | 1237 } |
| 1247 | 1238 |
| 1248 PacketReceiver::DeliveryStatus Call::DeliverPacket( | 1239 PacketReceiver::DeliveryStatus Call::DeliverPacket( |
| 1249 MediaType media_type, | 1240 MediaType media_type, |
| 1250 const uint8_t* packet, | 1241 const uint8_t* packet, |
| 1251 size_t length, | 1242 size_t length, |
| 1252 const PacketTime& packet_time) { | 1243 const PacketTime& packet_time) { |
| 1253 // TODO(solenberg): Tests call this function on a network thread, libjingle | 1244 // TODO(solenberg): Tests call this function on a network thread, libjingle |
| 1254 // calls on the worker thread. We should move towards always using a network | 1245 // calls on the worker thread. We should move towards always using a network |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1297 if (media_type != MediaType::AUDIO || | 1288 if (media_type != MediaType::AUDIO || |
| 1298 (use_send_side_bwe && header.extension.hasTransportSequenceNumber)) { | 1289 (use_send_side_bwe && header.extension.hasTransportSequenceNumber)) { |
| 1299 congestion_controller_->OnReceivedPacket( | 1290 congestion_controller_->OnReceivedPacket( |
| 1300 packet.arrival_time_ms(), packet.payload_size() + packet.padding_size(), | 1291 packet.arrival_time_ms(), packet.payload_size() + packet.padding_size(), |
| 1301 header); | 1292 header); |
| 1302 } | 1293 } |
| 1303 } | 1294 } |
| 1304 | 1295 |
| 1305 } // namespace internal | 1296 } // namespace internal |
| 1306 } // namespace webrtc | 1297 } // namespace webrtc |
| OLD | NEW |