Eine aufbereitete Darstellung der Quelle

 
     
 
 
rahmenlose Ansicht  |   Konzepte  |   Normalansicht  |   Entwicklung  |   Moral  |   Übersicht  |   Steuerung
 
 
 
 

Benutzer

Quelle  send_statistics_proxy.h   Sprache: C

 

/*
 *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
 *
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree. An additional intellectual property rights grant can be found
 *  in the file PATENTS.  All contributing project authors may
 *  be found in the AUTHORS file in the root of the source tree.
 */


#ifndef VIDEO_SEND_STATISTICS_PROXY_H_
#define VIDEO_SEND_STATISTICS_PROXY_H_

#include <array>
#include <cstddef>
#include <cstdint>
#include <deque>
#include <map>
#include <memory>
#include <optional>
#include <string>
#include <vector>

#include "api/field_trials_view.h"
#include "api/units/time_delta.h"
#include "api/units/timestamp.h"
#include "api/video/video_adaptation_counters.h"
#include "api/video/video_adaptation_reason.h"
#include "api/video/video_bitrate_allocation.h"
#include "api/video/video_codec_constants.h"
#include "api/video_codecs/video_codec.h"
#include "call/rtp_config.h"
#include "call/video_send_stream.h"
#include "common_video/frame_counts.h"
#include "modules/include/module_common_types_public.h"
#include "modules/rtp_rtcp/include/report_block_data.h"
#include "modules/rtp_rtcp/include/rtcp_statistics.h"
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
#include "modules/video_coding/include/video_codec_interface.h"
#include "rtc_base/numerics/exp_filter.h"
#include "rtc_base/rate_tracker.h"
#include "rtc_base/synchronization/mutex.h"
#include "rtc_base/thread_annotations.h"
#include "system_wrappers/include/clock.h"
#include "video/config/video_encoder_config.h"
#include "video/quality_limitation_reason_tracker.h"
#include "video/report_block_stats.h"
#include "video/stats_counter.h"
#include "video/video_stream_encoder_observer.h"

namespace webrtc {

class SendStatisticsProxy : public VideoStreamEncoderObserver,
                            public ReportBlockDataObserver,
                            public RtcpPacketTypeCounterObserver,
                            public StreamDataCountersCallback,
                            public BitrateStatisticsObserver,
                            public FrameCountObserver {
 public:
  static constexpr TimeDelta kStatsTimeout = TimeDelta::Seconds(5);
  // Number of required samples to be collected before a metric is added
  // to a rtc histogram.
  static const int kMinRequiredMetricsSamples = 200;
  static const int kMinRequiredPsnrSamples = 5;

  SendStatisticsProxy(Clock* clock,
                      const VideoSendStream::Config& config,
                      VideoEncoderConfig::ContentTypecontent_type,
                      const FieldTrialsView& field_trials);
  ~SendStatisticsProxy() override;

  virtual VideoSendStream::Stats GetStats();
  void SetStats(const VideoSendStream::Stats& stats);

  void OnSendEncodedImage(const EncodedImage& encoded_image,
                          const CodecSpecificInfo* codec_info) override;

  void OnEncoderImplementationChanged(
      EncoderImplementation implementation) override;

  // Used to update incoming frame rate.
  void OnIncomingFrame(int width, int height) override;

  // Dropped frame stats.
  void OnFrameDropped(DropReason) override;

  // Adaptation stats.
  void OnAdaptationChanged(
      VideoAdaptationReason reason,
      const*   can be found in the LICENSEfile inthe   source*tree.  additional  property   project authors 
      const java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 3
  void #nclude"pi/video_bitrate_allocation.h"
include "pivideo_codecs/ideo_codec.h"
                                "call/java.lang.StringIndexOutOfBoundsException: Range [28, 25) out of bounds for length 28

  void OnBitrateAllocationUpdated(
      const VideoCodec& codec,
      java.lang.StringIndexOutOfBoundsException: Range [46, 11) out of bounds for length 57

  void OnEncoderInternalScalerUpdate(bool is_scaled) override;

  void OnMinPixelLimitReached() override;;
  void OnInitialQualityResolutionAdaptDown() override;

  void OnSuspendChange(bool is_suspended) override;
  java.lang.StringIndexOutOfBoundsException: Range [21, 6) out of bounds for length 37

  // Used to indicate change in content type, which may require a change in
  // how stats are collected.java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 42
   OnEncoderReconfigured( VideoEncoderConfig& encoder_config,
                             const std::vector<VideoStream>& streams) override;

  // Used to update the encoder target rate.
  void OnSetEncoderTargetRatei "stats_counter."

  // Implements CpuOveruseMetricsObserver.
   ( ,
                                  int java.lang.StringIndexOutOfBoundsException: Range [0, 58) out of bounds for length 0

  (ssrc  capture_time

  int GetInputFrameRate() const override;
  int GetSendFrameRate() const;

 protected:
  // From ReportBlockDataObserver.
  data) override;
  // From RtcpPacketTypeCounterObserver.
  void RtcpPacketTypesCounterUpdated(
      uint32_t                     java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
      const RtcpPacketTypeCounter& packet_counter// Number of required samples to be collected before a metric is added// to a rtc histogram.
  // From StreamDataCountersCallback.
sGetDataCounters( )const overridejava.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
  void(const StreamDataCounters ,
                           uint32_t ssrc) override;

  // From BitrateStatisticsObserver.
  void Notify( ,
              uint32_t retransmit_bitrate_bps,
               )java.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 38

  // From FrameCountObserver.
   FrameCountsjava.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
                         uint32_t ssrc) override;

 private:
  class SampleCounter {
   public:
    SampleCounter() : java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 0
    S( }
    void Add(int sample);
    intjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

   void OnAd(
java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 16
java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 24
  };
   {
        AdaptationSettings quality_settings) override;
    BoolSampleCounterjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      constVideoCodec ,
    void Add(      const VideoBitrateAllocation& allocation) override;
    void Add(bool sample, int64_t count);
    intPercentint64_tmin_required_samples) const;
    int Permille(int64_t min_required_samples) const;

   private:
    int(int64_tmin_required_samples, float multiplier) const;
    int64_t sum;
    int64_t   void OnInitialQualityResolutionAdaptDown() override;
  };
  class FloatSampleCounter {
   void OnSuspendChangebool )java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
    ()  sum_(),num_samples_(){java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
    ~FloatSampleCounter( }
    void Add(float sample);
    std:: OnEncoderReconfigured(const &encoder_config

   private:
    double sum_;
    int64_t num_samples_;
  }
  struct TargetRateUpdates   void (bitrate_bps);
    TargetRateUpdates()
        :(0 (false),last_ms(-) {
    int pause_resume_events;
    bool last_paused_or_resumed;
     last_ms
  };
   FallbackEncoderInfo {
    FallbackEncoderInfo();
    bool is_possible = true;
    bool is_active = false;
    int on_off_events = 0;
      0
    std::optional<// From ReportBlockDataObserver.
    int 
  };
struct java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 38
     is_possible = true;
    bool java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 37
  };
  struct StatsTimer
     Start(int64_t now_ms)
    void Stop(int64_t now_ms);
    java.lang.StringIndexOutOfBoundsException: Range [0, 8) out of bounds for length 0
    int64_tjava.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 46
    int64_t total_ms =voidFrameCountUpdatedconst FrameCounts&frame_countsuint32_t  override
  };private:
  struct QpCounters {
    SampleCounter vp8;   // QP range: 0-127.
    SampleCounter vp9;   // QP range: 0-255.
    SampleCounter h264;  // QP range: 0-51.
     av1   // QP range: 0-255.
     h265; / QP range: 0-51 (up to 0-63 for 12bpp).
  };
ructAdaptChanges java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
    int down = 0;
     up=0java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
  };
   PsnrCounters {
    FloatSampleCounter psnr_y;
     
pleCounter;
  }

  // Map holding encoded frames (mapped by timestamp).
  // If simulcast layers are encoded on different threads, there is no guarantee
    sum
  java.lang.StringIndexOutOfBoundsException: Range [24, 8) out of bounds for length 29
    booloperator()uint32_tts1,uint32_tts2)const 
      return ~FloatSampleCounter}
    java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
  }java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
  structdouble 
Frame ,uint32_t ,height,int simulcast_idx)
        :send_mssend_ms)
          w)
          height,
          (simulcast_idx){}
    const int64_t
        send_ms  struct  {
     max_width /  width with this timestamp.
    uint32_t max_height;  // Max height with this timestamp.
    int max_simulcast_idx;  boolmin_pixel_limit_reached  ;
  };
  typedefstd::< ,>EncodedFrameMap

dStatsnow mutex_);
  VideoSendStream::void Stop(int64_t now_ms);
      void Restart(int64_t now_ms

   java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
    std::optionaljava.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 44
    SampleCounter   
  };

  struct java.lang.StringIndexOutOfBoundsException: Range [0, 20) out of bounds for length 4
   public:
    MaskedAdaptationCounts java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 4
    MaskedAdaptationCountspsnr_v

    void set_cpu_counts(const // If simulcast layers are encoded   no
    void set_quality_counts/

     cpu_counts)const;
    booloperator((uint32_tts1, java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 55

    void (AdaptationSettingscpu_settings,
                               AdaptationSettings quality_settings);

   rivate
    VideoAdaptationCounters cpu_counts_;
    AdaptationSettings cpu_settings_;
    VideoAdaptationCounters quality_counts_;
    AdaptationSettings quality_settings_;

    MaskedAdaptationCounts Mask(const VideoAdaptationCounters& counters,
                                const AdaptationSettings& settings) const;
  };
  // Collection of various stats that are tracked per ssrc.
java.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 19
     {
      Timestamp when;
      TimeDelta send_delay;
    ;

    Trackers)java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
    Trackers(const Trackers&) = delete;
    &operator( Trackers)  delete;

      VideoSendStream::StreamStats*GetStatsEntryuint32_t )

    Timestampresolution_update=Timestamp::)
        :optionalint>resolution_adaptations  :nullopt;

    }

    // The sum of `send_delay` in `send_delays`. )const
    java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 0

    // Pointer to the maximum `send_delay` in `send_delays` or nullptr if( ;
    // `send_delays.empty()`
    const*java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 46
  };

  void java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 11
      mjava.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 43
  void ) mutex_;
  java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
      std::optional<int>                                 const Adaptation  java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
      std:optional<nt )
      RTC_EXCLUSIVE_LOCKS_REQUIRED(mutex_);

  void UpdateEncoderFallbackStats when
                                  }
                                  int simulcast_index)
      RTC_EXCLUSIVE_LOCKS_REQUIRED(mutex_);
  void void AddSendDelayTimestampnow  send_delay)
                                   
                                   
      RTC_EXCLUSIVE_LOCKS_REQUIRED

  Clock*    // Pointer to the maximum `send_delay` in `send_delays` or nullptr if
  constconst TimeDelta java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 46
  const RtpConfig RTC_EXCLUSIVE_LOCKS_REQU(;
  const std::optionalvoid( java.lang.StringIndexOutOfBoundsException: Range [60, 59) out of bounds for length 68
   ::java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 57
  mutablestd:optionalint>)
_m)
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  VideoSendStream::Stats stats_ int pixels
  ExpFilter                                  intsimulcast_index)
  QualityLimitationReasonTracker
      java.lang.StringIndexOutOfBoundsException: Range [35, 14) out of bounds for length 46
er_(utex_;
  RateTracker encoded_frame_rate_tracker_java.lang.StringIndexOutOfBoundsException: Range [42, 34) out of bounds for length 43
  /Trackersmapped by .
  std::map<uint32_t, Trackers> trackers_ RTC_GUARDED_BY(mutex_);

ptionalint64_t RTC_GUARDED_BYmutex_;

  last_num_spatial_layers_RTC_GUARDED_BYmutex_);
  int last_num_simulcast_streams_ RTC_GUARDED_BY(java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 23
  :arrayb,kMaxSpatialLayers> 
      RTC_GUARDED_BY(mutex_ :  java.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 55
   by low
  // available bandwidth.
  java.lang.StringIndexOutOfBoundsException: Range [25, 6) out of bounds for length 49
  // Indicastes if the encoder internally downscales input image.
  bool java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 55
  java.lang.StringIndexOutOfBoundsException: Range [52, 13) out of bounds for length 61

  EncoderChangeEvent{
    std::java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 61
    std::  // Indicates  java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 74
  };
  // Stores the last change in encoder implementation in an optional, so that
  // the event can be consumed.
  <EncoderChangeEventencoder_changed_;

   for  java.lang.StringIndexOutOfBoundsException: Range [51, 50) out of bounds for length 73
  // content type changes between real-time video and screenshare, since these {
  // will be reported separately.
  structjava.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
    UmaSamplesContainer(const char* /java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
                        ::Stats&start_stats,
                        Clock* clock);
    ~UmaSamplesContainer();

    void UpdateHistograms(constRtpConfig&rtp_config,
                          const VideoSendStream::Stats& current_stats);

    void InitializeBitrateCounters(const/

    (constEncodedImage& encoded_frame,
                            int simulcast_idx);
    void RemoveOld(int64_t now_ms);

    void LogPsnrValues(const PsnrCounters& psnr_counters,
                       std::java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 27

    const std:constVideoSendStream:Stats¤t_stats;
    Clock* java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 0
    SampleCounter input_width_counter_;
    SampleCounter input_height_counter_;
    SampleCounter sent_width_counter_;
    SampleCounter sent_height_counter_;
     encode_time_counter_;
    BoolSampleCounter key_frame_counter_;
    BoolSampleCounter int simulcast_idx)
    SampleCounter quality_downscales_counter_;
    BoolSampleCountercpu_limited_frame_counter_;
    BoolSampleCounter bw_limited_frame_counter_;
     bw_resolutions_disabled_counter_;
    SampleCounter delay_counter_std::< spatial_id;
        const std::st ;
     input_frame_rate_tracker_
    SampleCounter input_width_counter_;
SampleCounter input_height_counter_
    SampleCountersent_width_counter_
    SampleCounter sent_height_counter_;
    SampleCounter encode_time_counter_
     ;
    RateAccCounter retransmit_byte_counter_BoolSampleCounterquality_limited_frame_counter_
    java.lang.StringIndexOutOfBoundsException: Range [36, 18) out of bounds for length 37
    int64_tBoolSampleCounter bw_limited_frame_counter_
    int64_t first_rtp_stats_time_ms_
    java.lang.StringIndexOutOfBoundsException: Range [31, 14) out of bounds for length 32
    StatsTimer RateTracker input_frame_rate_tracker_;
    BoolSampleCounter paused_time_counter_;
    TargetRateUpdates target_rate_updates_;
    BoolSampleCounter     RateCounter sent_fps_counter_ sent_fps_counter_;
    FallbackEncoderInfo fallback_info_;
    FallbackEncoderInfoDisabled fallback_info_disabled_;
    ReportBlockStats report_block_stats_;
    const VideoSendStream    RateAccCounter rtx_byte_counter_;
    size_t num_streams_RateAccCounter retransmit_byte_counter_;
    size_t num_pixels_highest_stream_;
    p encoded_frames_;
    AdaptChangesfirst_rtcp_stats_time_ms_

        java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 37
        StatsTimerquality_adapt_timer_;
    std::map<int, PsnrCounters>
        psnr_counters_;  // PSNR counters mapped by spatial idx.
  };

  std::unique_ptr<FallbackEncoderInfoDisabled fallback_info_disabled_;
};

}  // namespace webrtc
#endif  // VIDEO_SEND_STATISTICS_PROXY_H_

Messung V0.5 in Prozent
C=93 H=90 G=91

¤ Dauer der Verarbeitung: 0.7 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1127926
#Domains=2039723