| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "media/cast/net/rtcp/rtcp_utility.h" | 5 #include "media/cast/net/rtcp/rtcp_utility.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "media/cast/net/cast_transport_defines.h" | 8 #include "media/cast/net/cast_transport_defines.h" |
| 9 | 9 |
| 10 namespace media { | 10 namespace media { |
| (...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 305 | 305 |
| 306 switch (block_type) { | 306 switch (block_type) { |
| 307 case 4: // RRTR. RFC3611 Section 4.4. | 307 case 4: // RRTR. RFC3611 Section 4.4. |
| 308 if (block_length != 2) | 308 if (block_length != 2) |
| 309 return false; | 309 return false; |
| 310 if (!ParseExtendedReportReceiverReferenceTimeReport(reader, | 310 if (!ParseExtendedReportReceiverReferenceTimeReport(reader, |
| 311 remote_ssrc)) | 311 remote_ssrc)) |
| 312 return false; | 312 return false; |
| 313 break; | 313 break; |
| 314 | 314 |
| 315 case 5: // DLRR. RFC3611 Section 4.5. | |
| 316 if (block_length % 3 != 0) | |
| 317 return false; | |
| 318 for (int block = 0; block < block_length / 3; block++) | |
| 319 if (!ParseExtendedReportDelaySinceLastReceiverReport(reader)) | |
| 320 return false; | |
| 321 return true; | |
| 322 | |
| 323 default: | 315 default: |
| 324 // Skip unknown item. | 316 // Skip unknown item. |
| 325 if (!reader->Skip(block_length * 4)) | 317 if (!reader->Skip(block_length * 4)) |
| 326 return false; | 318 return false; |
| 327 } | 319 } |
| 328 } | 320 } |
| 329 | 321 |
| 330 return true; | 322 return true; |
| 331 } | 323 } |
| 332 | 324 |
| 333 bool RtcpParser::ParseExtendedReportReceiverReferenceTimeReport( | 325 bool RtcpParser::ParseExtendedReportReceiverReferenceTimeReport( |
| 334 base::BigEndianReader* reader, | 326 base::BigEndianReader* reader, |
| 335 uint32 remote_ssrc) { | 327 uint32 remote_ssrc) { |
| 336 receiver_reference_time_report_.remote_ssrc = remote_ssrc; | 328 receiver_reference_time_report_.remote_ssrc = remote_ssrc; |
| 337 if(!reader->ReadU32(&receiver_reference_time_report_.ntp_seconds) || | 329 if(!reader->ReadU32(&receiver_reference_time_report_.ntp_seconds) || |
| 338 !reader->ReadU32(&receiver_reference_time_report_.ntp_fraction)) | 330 !reader->ReadU32(&receiver_reference_time_report_.ntp_fraction)) |
| 339 return false; | 331 return false; |
| 340 | 332 |
| 341 has_receiver_reference_time_report_ = true; | 333 has_receiver_reference_time_report_ = true; |
| 342 return true; | 334 return true; |
| 343 } | 335 } |
| 344 | 336 |
| 345 bool RtcpParser::ParseExtendedReportDelaySinceLastReceiverReport( | |
| 346 base::BigEndianReader* reader) { | |
| 347 uint32 ssrc, last_report, delay; | |
| 348 if (!reader->ReadU32(&ssrc) || | |
| 349 !reader->ReadU32(&last_report) || | |
| 350 !reader->ReadU32(&delay)) | |
| 351 return false; | |
| 352 | |
| 353 if (ssrc == remote_ssrc_) { | |
| 354 last_report_ = last_report; | |
| 355 delay_since_last_report_ = delay; | |
| 356 has_last_report_ = true; | |
| 357 } | |
| 358 | |
| 359 has_last_report_ = true; | |
| 360 return true; | |
| 361 } | |
| 362 | |
| 363 // Converts a log event type to an integer value. | 337 // Converts a log event type to an integer value. |
| 364 // NOTE: We have only allocated 4 bits to represent the type of event over the | 338 // NOTE: We have only allocated 4 bits to represent the type of event over the |
| 365 // wire. Therefore, this function can only return values from 0 to 15. | 339 // wire. Therefore, this function can only return values from 0 to 15. |
| 366 uint8 ConvertEventTypeToWireFormat(CastLoggingEvent event) { | 340 uint8 ConvertEventTypeToWireFormat(CastLoggingEvent event) { |
| 367 switch (event) { | 341 switch (event) { |
| 368 case FRAME_ACK_SENT: | 342 case FRAME_ACK_SENT: |
| 369 return 11; | 343 return 11; |
| 370 case FRAME_PLAYOUT: | 344 case FRAME_PLAYOUT: |
| 371 return 12; | 345 return 12; |
| 372 case FRAME_DECODED: | 346 case FRAME_DECODED: |
| (...skipping 29 matching lines...) Expand all Loading... |
| 402 default: | 376 default: |
| 403 // If the sender adds new log messages we will end up here until we add | 377 // If the sender adds new log messages we will end up here until we add |
| 404 // the new messages in the receiver. | 378 // the new messages in the receiver. |
| 405 VLOG(1) << "Unexpected log message received: " << static_cast<int>(event); | 379 VLOG(1) << "Unexpected log message received: " << static_cast<int>(event); |
| 406 return UNKNOWN; | 380 return UNKNOWN; |
| 407 } | 381 } |
| 408 } | 382 } |
| 409 | 383 |
| 410 } // namespace cast | 384 } // namespace cast |
| 411 } // namespace media | 385 } // namespace media |
| OLD | NEW |