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/logging/stats_event_subscriber.h" | 5 #include "media/cast/logging/stats_event_subscriber.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cmath> | 8 #include <cmath> |
9 | 9 |
10 #include "base/format_macros.h" | 10 #include "base/format_macros.h" |
(...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
477 base::TimeDelta receiver_offset_upper_bound; | 477 base::TimeDelta receiver_offset_upper_bound; |
478 if (!offset_estimator_->GetReceiverOffsetBounds( | 478 if (!offset_estimator_->GetReceiverOffsetBounds( |
479 &receiver_offset_lower_bound, &receiver_offset_upper_bound)) { | 479 &receiver_offset_lower_bound, &receiver_offset_upper_bound)) { |
480 return false; | 480 return false; |
481 } | 481 } |
482 | 482 |
483 *offset = (receiver_offset_lower_bound + receiver_offset_upper_bound) / 2; | 483 *offset = (receiver_offset_lower_bound + receiver_offset_upper_bound) / 2; |
484 return true; | 484 return true; |
485 } | 485 } |
486 | 486 |
487 void StatsEventSubscriber::MaybeInsertFrameInfo(RtpTimestamp rtp_timestamp, | 487 void StatsEventSubscriber::MaybeInsertFrameInfo(RtpTimeTicks rtp_timestamp, |
488 const FrameInfo& frame_info) { | 488 const FrameInfo& frame_info) { |
489 // No need to insert if |rtp_timestamp| is the smaller than every key in the | 489 // No need to insert if |rtp_timestamp| is the smaller than every key in the |
490 // map as it is just going to get erased anyway. | 490 // map as it is just going to get erased anyway. |
491 if (recent_frame_infos_.size() == kMaxFrameInfoMapSize && | 491 if (recent_frame_infos_.size() == kMaxFrameInfoMapSize && |
492 rtp_timestamp < recent_frame_infos_.begin()->first) { | 492 rtp_timestamp < recent_frame_infos_.begin()->first) { |
493 return; | 493 return; |
494 } | 494 } |
495 | 495 |
496 recent_frame_infos_.insert(std::make_pair(rtp_timestamp, frame_info)); | 496 recent_frame_infos_.insert(std::make_pair(rtp_timestamp, frame_info)); |
497 | 497 |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
589 base::TimeTicks receiver_time) { | 589 base::TimeTicks receiver_time) { |
590 base::TimeDelta receiver_offset; | 590 base::TimeDelta receiver_offset; |
591 if (!GetReceiverOffset(&receiver_offset)) | 591 if (!GetReceiverOffset(&receiver_offset)) |
592 return; | 592 return; |
593 base::TimeTicks sender_time = receiver_time - receiver_offset; | 593 base::TimeTicks sender_time = receiver_time - receiver_offset; |
594 last_response_received_time_ = sender_time; | 594 last_response_received_time_ = sender_time; |
595 } | 595 } |
596 | 596 |
597 void StatsEventSubscriber::ErasePacketSentTime( | 597 void StatsEventSubscriber::ErasePacketSentTime( |
598 const PacketEvent& packet_event) { | 598 const PacketEvent& packet_event) { |
599 std::pair<RtpTimestamp, uint16_t> key( | 599 std::pair<RtpTimeTicks, uint16_t> key( |
600 std::make_pair(packet_event.rtp_timestamp, packet_event.packet_id)); | 600 std::make_pair(packet_event.rtp_timestamp, packet_event.packet_id)); |
601 packet_sent_times_.erase(key); | 601 packet_sent_times_.erase(key); |
602 } | 602 } |
603 | 603 |
604 void StatsEventSubscriber::RecordPacketRelatedLatencies( | 604 void StatsEventSubscriber::RecordPacketRelatedLatencies( |
605 const PacketEvent& packet_event) { | 605 const PacketEvent& packet_event) { |
606 // Log queueing latency. | 606 // Log queueing latency. |
607 if (packet_event.type == PACKET_SENT_TO_NETWORK) { | 607 if (packet_event.type == PACKET_SENT_TO_NETWORK) { |
608 FrameInfoMap::iterator it = | 608 FrameInfoMap::iterator it = |
609 recent_frame_infos_.find(packet_event.rtp_timestamp); | 609 recent_frame_infos_.find(packet_event.rtp_timestamp); |
610 if (it != recent_frame_infos_.end()) { | 610 if (it != recent_frame_infos_.end()) { |
611 base::TimeDelta latency = | 611 base::TimeDelta latency = |
612 packet_event.timestamp - it->second.encode_end_time; | 612 packet_event.timestamp - it->second.encode_end_time; |
613 total_queueing_latency_ += latency; | 613 total_queueing_latency_ += latency; |
614 queueing_latency_datapoints_++; | 614 queueing_latency_datapoints_++; |
615 histograms_[QUEUEING_LATENCY_MS_HISTO]->Add( | 615 histograms_[QUEUEING_LATENCY_MS_HISTO]->Add( |
616 latency.InMillisecondsF()); | 616 latency.InMillisecondsF()); |
617 } | 617 } |
618 } | 618 } |
619 | 619 |
620 // Log network latency and total packet latency; | 620 // Log network latency and total packet latency; |
621 base::TimeDelta receiver_offset; | 621 base::TimeDelta receiver_offset; |
622 if (!GetReceiverOffset(&receiver_offset)) | 622 if (!GetReceiverOffset(&receiver_offset)) |
623 return; | 623 return; |
624 | 624 |
625 std::pair<RtpTimestamp, uint16_t> key( | 625 std::pair<RtpTimeTicks, uint16_t> key( |
626 std::make_pair(packet_event.rtp_timestamp, packet_event.packet_id)); | 626 std::make_pair(packet_event.rtp_timestamp, packet_event.packet_id)); |
627 PacketEventTimeMap::iterator it = packet_sent_times_.find(key); | 627 PacketEventTimeMap::iterator it = packet_sent_times_.find(key); |
628 if (it == packet_sent_times_.end()) { | 628 if (it == packet_sent_times_.end()) { |
629 std::pair<base::TimeTicks, CastLoggingEvent> value = | 629 std::pair<base::TimeTicks, CastLoggingEvent> value = |
630 std::make_pair(packet_event.timestamp, packet_event.type); | 630 std::make_pair(packet_event.timestamp, packet_event.type); |
631 packet_sent_times_.insert(std::make_pair(key, value)); | 631 packet_sent_times_.insert(std::make_pair(key, value)); |
632 if (packet_sent_times_.size() > kMaxPacketEventTimeMapSize) | 632 if (packet_sent_times_.size() > kMaxPacketEventTimeMapSize) |
633 packet_sent_times_.erase(packet_sent_times_.begin()); | 633 packet_sent_times_.erase(packet_sent_times_.begin()); |
634 } else { | 634 } else { |
635 std::pair<base::TimeTicks, CastLoggingEvent> value = it->second; | 635 std::pair<base::TimeTicks, CastLoggingEvent> value = it->second; |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
747 : event_counter(0), sum_size(0) {} | 747 : event_counter(0), sum_size(0) {} |
748 StatsEventSubscriber::PacketLogStats::~PacketLogStats() {} | 748 StatsEventSubscriber::PacketLogStats::~PacketLogStats() {} |
749 | 749 |
750 StatsEventSubscriber::FrameInfo::FrameInfo() : encoded(false) { | 750 StatsEventSubscriber::FrameInfo::FrameInfo() : encoded(false) { |
751 } | 751 } |
752 StatsEventSubscriber::FrameInfo::~FrameInfo() { | 752 StatsEventSubscriber::FrameInfo::~FrameInfo() { |
753 } | 753 } |
754 | 754 |
755 } // namespace cast | 755 } // namespace cast |
756 } // namespace media | 756 } // namespace media |
OLD | NEW |