LCOV - code coverage report
Current view: top level - media/webrtc/trunk/webrtc/video - send_delay_stats.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 5 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 2 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  *  Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
       3             :  *
       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
       6             :  *  tree. An additional intellectual property rights grant can be found
       7             :  *  in the file PATENTS.  All contributing project authors may
       8             :  *  be found in the AUTHORS file in the root of the source tree.
       9             :  */
      10             : 
      11             : #ifndef WEBRTC_VIDEO_SEND_DELAY_STATS_H_
      12             : #define WEBRTC_VIDEO_SEND_DELAY_STATS_H_
      13             : 
      14             : #include <map>
      15             : #include <memory>
      16             : #include <set>
      17             : 
      18             : #include "webrtc/base/criticalsection.h"
      19             : #include "webrtc/base/thread_annotations.h"
      20             : #include "webrtc/common_types.h"
      21             : #include "webrtc/modules/include/module_common_types.h"
      22             : #include "webrtc/system_wrappers/include/clock.h"
      23             : #include "webrtc/video/stats_counter.h"
      24             : #include "webrtc/video_send_stream.h"
      25             : 
      26             : namespace webrtc {
      27             : 
      28             : class SendDelayStats : public SendPacketObserver {
      29             :  public:
      30             :   explicit SendDelayStats(Clock* clock);
      31             :   virtual ~SendDelayStats();
      32             : 
      33             :   // Adds the configured ssrcs for the rtp streams.
      34             :   // Stats will be calculated for these streams.
      35             :   void AddSsrcs(const VideoSendStream::Config& config);
      36             : 
      37             :   // Called when a packet is sent (leaving socket).
      38             :   bool OnSentPacket(int packet_id, int64_t time_ms);
      39             : 
      40             :  protected:
      41             :   // From SendPacketObserver.
      42             :   // Called when a packet is sent to the transport.
      43             :   void OnSendPacket(uint16_t packet_id,
      44             :                     int64_t capture_time_ms,
      45             :                     uint32_t ssrc) override;
      46             : 
      47             :  private:
      48             :   // Map holding sent packets (mapped by sequence number).
      49             :   struct SequenceNumberOlderThan {
      50           0 :     bool operator()(uint16_t seq1, uint16_t seq2) const {
      51           0 :       return IsNewerSequenceNumber(seq2, seq1);
      52             :     }
      53             :   };
      54             :   struct Packet {
      55           0 :     Packet(uint32_t ssrc, int64_t capture_time_ms, int64_t send_time_ms)
      56           0 :         : ssrc(ssrc),
      57             :           capture_time_ms(capture_time_ms),
      58           0 :           send_time_ms(send_time_ms) {}
      59             :     uint32_t ssrc;
      60             :     int64_t capture_time_ms;
      61             :     int64_t send_time_ms;
      62             :   };
      63             :   typedef std::map<uint16_t, Packet, SequenceNumberOlderThan> PacketMap;
      64             : 
      65             :   void UpdateHistograms();
      66             :   void RemoveOld(int64_t now, PacketMap* packets)
      67             :       EXCLUSIVE_LOCKS_REQUIRED(crit_);
      68             :   AvgCounter* GetSendDelayCounter(uint32_t ssrc)
      69             :       EXCLUSIVE_LOCKS_REQUIRED(crit_);
      70             : 
      71             :   Clock* const clock_;
      72             :   rtc::CriticalSection crit_;
      73             : 
      74             :   PacketMap packets_ GUARDED_BY(crit_);
      75             :   size_t num_old_packets_ GUARDED_BY(crit_);
      76             :   size_t num_skipped_packets_ GUARDED_BY(crit_);
      77             : 
      78             :   std::set<uint32_t> ssrcs_ GUARDED_BY(crit_);
      79             : 
      80             :   // Mapped by SSRC.
      81             :   std::map<uint32_t, std::unique_ptr<AvgCounter>> send_delay_counters_
      82             :       GUARDED_BY(crit_);
      83             : };
      84             : 
      85             : }  // namespace webrtc
      86             : #endif  // WEBRTC_VIDEO_SEND_DELAY_STATS_H_

Generated by: LCOV version 1.13