| 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_builder.h" | 5 #include "media/cast/net/rtcp/rtcp_builder.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 296 << ", NACK: " << nack_string_builder.GetString(); | 296 << ", NACK: " << nack_string_builder.GetString(); |
| 297 DCHECK_LE(number_of_loss_fields, kRtcpMaxCastLossFields); | 297 DCHECK_LE(number_of_loss_fields, kRtcpMaxCastLossFields); |
| 298 *cast_loss_field_pos = static_cast<uint8>(number_of_loss_fields); | 298 *cast_loss_field_pos = static_cast<uint8>(number_of_loss_fields); |
| 299 } | 299 } |
| 300 | 300 |
| 301 void RtcpBuilder::AddSR(const RtcpSenderInfo& sender_info) { | 301 void RtcpBuilder::AddSR(const RtcpSenderInfo& sender_info) { |
| 302 AddRtcpHeader(kPacketTypeSenderReport, 0); | 302 AddRtcpHeader(kPacketTypeSenderReport, 0); |
| 303 writer_.WriteU32(ssrc_); | 303 writer_.WriteU32(ssrc_); |
| 304 writer_.WriteU32(sender_info.ntp_seconds); | 304 writer_.WriteU32(sender_info.ntp_seconds); |
| 305 writer_.WriteU32(sender_info.ntp_fraction); | 305 writer_.WriteU32(sender_info.ntp_fraction); |
| 306 writer_.WriteU32(sender_info.rtp_timestamp); | 306 writer_.WriteU32(sender_info.rtp_timestamp.lower_32_bits()); |
| 307 writer_.WriteU32(sender_info.send_packet_count); | 307 writer_.WriteU32(sender_info.send_packet_count); |
| 308 writer_.WriteU32(static_cast<uint32>(sender_info.send_octet_count)); | 308 writer_.WriteU32(static_cast<uint32>(sender_info.send_octet_count)); |
| 309 } | 309 } |
| 310 | 310 |
| 311 /* | 311 /* |
| 312 0 1 2 3 | 312 0 1 2 3 |
| 313 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 313 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 |
| 314 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 314 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| 315 |V=2|P|reserved | PT=XR=207 | length | | 315 |V=2|P|reserved | PT=XR=207 | length | |
| 316 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 316 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 350 AddRtcpHeader(kPacketTypeApplicationDefined, kReceiverLogSubtype); | 350 AddRtcpHeader(kPacketTypeApplicationDefined, kReceiverLogSubtype); |
| 351 writer_.WriteU32(ssrc_); // Add our own SSRC. | 351 writer_.WriteU32(ssrc_); // Add our own SSRC. |
| 352 writer_.WriteU32(kCast); | 352 writer_.WriteU32(kCast); |
| 353 | 353 |
| 354 while (!receiver_log_message.empty() && | 354 while (!receiver_log_message.empty() && |
| 355 total_number_of_messages_to_send > 0) { | 355 total_number_of_messages_to_send > 0) { |
| 356 RtcpReceiverFrameLogMessage& frame_log_messages( | 356 RtcpReceiverFrameLogMessage& frame_log_messages( |
| 357 receiver_log_message.front()); | 357 receiver_log_message.front()); |
| 358 | 358 |
| 359 // Add our frame header. | 359 // Add our frame header. |
| 360 writer_.WriteU32(frame_log_messages.rtp_timestamp_); | 360 writer_.WriteU32(frame_log_messages.rtp_timestamp_.lower_32_bits()); |
| 361 size_t messages_in_frame = frame_log_messages.event_log_messages_.size(); | 361 size_t messages_in_frame = frame_log_messages.event_log_messages_.size(); |
| 362 if (messages_in_frame > total_number_of_messages_to_send) { | 362 if (messages_in_frame > total_number_of_messages_to_send) { |
| 363 // We are running out of space. | 363 // We are running out of space. |
| 364 messages_in_frame = total_number_of_messages_to_send; | 364 messages_in_frame = total_number_of_messages_to_send; |
| 365 } | 365 } |
| 366 // Keep track of how many messages we have left to send. | 366 // Keep track of how many messages we have left to send. |
| 367 total_number_of_messages_to_send -= messages_in_frame; | 367 total_number_of_messages_to_send -= messages_in_frame; |
| 368 | 368 |
| 369 // On the wire format is number of messages - 1. | 369 // On the wire format is number of messages - 1. |
| 370 writer_.WriteU8(static_cast<uint8>(messages_in_frame - 1)); | 370 writer_.WriteU8(static_cast<uint8>(messages_in_frame - 1)); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 428 | 428 |
| 429 // Account for the RTCP header for an application-defined packet. | 429 // Account for the RTCP header for an application-defined packet. |
| 430 remaining_space -= kRtcpCastLogHeaderSize; | 430 remaining_space -= kRtcpCastLogHeaderSize; |
| 431 | 431 |
| 432 ReceiverRtcpEventSubscriber::RtcpEvents::const_reverse_iterator rit = | 432 ReceiverRtcpEventSubscriber::RtcpEvents::const_reverse_iterator rit = |
| 433 rtcp_events.rbegin(); | 433 rtcp_events.rbegin(); |
| 434 | 434 |
| 435 while (rit != rtcp_events.rend() && | 435 while (rit != rtcp_events.rend() && |
| 436 remaining_space >= | 436 remaining_space >= |
| 437 kRtcpReceiverFrameLogSize + kRtcpReceiverEventLogSize) { | 437 kRtcpReceiverFrameLogSize + kRtcpReceiverEventLogSize) { |
| 438 const RtpTimestamp rtp_timestamp = rit->first; | 438 const RtpTimeTicks rtp_timestamp = rit->first; |
| 439 RtcpReceiverFrameLogMessage frame_log(rtp_timestamp); | 439 RtcpReceiverFrameLogMessage frame_log(rtp_timestamp); |
| 440 remaining_space -= kRtcpReceiverFrameLogSize; | 440 remaining_space -= kRtcpReceiverFrameLogSize; |
| 441 ++number_of_frames; | 441 ++number_of_frames; |
| 442 | 442 |
| 443 // Get all events of a single frame. | 443 // Get all events of a single frame. |
| 444 sorted_log_messages.clear(); | 444 sorted_log_messages.clear(); |
| 445 do { | 445 do { |
| 446 RtcpReceiverEventLogMessage event_log_message; | 446 RtcpReceiverEventLogMessage event_log_message; |
| 447 event_log_message.type = rit->second.type; | 447 event_log_message.type = rit->second.type; |
| 448 event_log_message.event_timestamp = rit->second.timestamp; | 448 event_log_message.event_timestamp = rit->second.timestamp; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 480 receiver_log_message->push_front(frame_log); | 480 receiver_log_message->push_front(frame_log); |
| 481 } | 481 } |
| 482 | 482 |
| 483 VLOG(3) << "number of frames: " << number_of_frames; | 483 VLOG(3) << "number of frames: " << number_of_frames; |
| 484 VLOG(3) << "total messages to send: " << *total_number_of_messages_to_send; | 484 VLOG(3) << "total messages to send: " << *total_number_of_messages_to_send; |
| 485 return number_of_frames > 0; | 485 return number_of_frames > 0; |
| 486 } | 486 } |
| 487 | 487 |
| 488 } // namespace cast | 488 } // namespace cast |
| 489 } // namespace media | 489 } // namespace media |
| OLD | NEW |