OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/rtcp/rtcp_receiver.h" | 5 #include "media/cast/rtcp/rtcp_receiver.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "media/cast/rtcp/rtcp_utility.h" | 8 #include "media/cast/rtcp/rtcp_utility.h" |
9 #include "media/cast/transport/cast_transport_defines.h" | 9 #include "media/cast/transport/cast_transport_defines.h" |
10 | 10 |
(...skipping 551 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
562 if (receiver_feedback_) { | 562 if (receiver_feedback_) { |
563 receiver_feedback_->OnReceivedSenderLog(sender_log); | 563 receiver_feedback_->OnReceivedSenderLog(sender_log); |
564 } | 564 } |
565 } | 565 } |
566 | 566 |
567 void RtcpReceiver::HandlePayloadSpecificCastItem(RtcpParser* rtcp_parser) { | 567 void RtcpReceiver::HandlePayloadSpecificCastItem(RtcpParser* rtcp_parser) { |
568 const RtcpField& rtcp_field = rtcp_parser->Field(); | 568 const RtcpField& rtcp_field = rtcp_parser->Field(); |
569 RtcpCastMessage cast_message(remote_ssrc_); | 569 RtcpCastMessage cast_message(remote_ssrc_); |
570 cast_message.ack_frame_id_ = ack_frame_id_wrap_helper_.MapTo32bitsFrameId( | 570 cast_message.ack_frame_id_ = ack_frame_id_wrap_helper_.MapTo32bitsFrameId( |
571 rtcp_field.cast_item.last_frame_id); | 571 rtcp_field.cast_item.last_frame_id); |
| 572 cast_message.target_delay_ms_ = rtcp_field.cast_item.target_delay_ms; |
572 | 573 |
573 RtcpFieldTypes packet_type = rtcp_parser->Iterate(); | 574 RtcpFieldTypes packet_type = rtcp_parser->Iterate(); |
574 while (packet_type == kRtcpPayloadSpecificCastNackItemCode) { | 575 while (packet_type == kRtcpPayloadSpecificCastNackItemCode) { |
575 const RtcpField& rtcp_field = rtcp_parser->Field(); | 576 const RtcpField& rtcp_field = rtcp_parser->Field(); |
576 HandlePayloadSpecificCastNackItem( | 577 HandlePayloadSpecificCastNackItem( |
577 &rtcp_field, &cast_message.missing_frames_and_packets_); | 578 &rtcp_field, &cast_message.missing_frames_and_packets_); |
578 packet_type = rtcp_parser->Iterate(); | 579 packet_type = rtcp_parser->Iterate(); |
579 } | 580 } |
580 if (sender_feedback_) { | 581 if (sender_feedback_) { |
581 sender_feedback_->OnReceivedCastFeedback(cast_message); | 582 sender_feedback_->OnReceivedCastFeedback(cast_message); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
630 void RtcpReceiver::HandleFIRItem(const RtcpField* rtcp_field) { | 631 void RtcpReceiver::HandleFIRItem(const RtcpField* rtcp_field) { |
631 // Is it our sender that is requested to generate a new keyframe. | 632 // Is it our sender that is requested to generate a new keyframe. |
632 if (ssrc_ != rtcp_field->fir_item.ssrc) | 633 if (ssrc_ != rtcp_field->fir_item.ssrc) |
633 return; | 634 return; |
634 | 635 |
635 VLOG(2) << "Cast RTCP received FIR on our SSRC " << ssrc_; | 636 VLOG(2) << "Cast RTCP received FIR on our SSRC " << ssrc_; |
636 } | 637 } |
637 | 638 |
638 } // namespace cast | 639 } // namespace cast |
639 } // namespace media | 640 } // namespace media |
OLD | NEW |