/* * Copyright (c) 2020 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_ADAPTATION_OVERUSE_FRAME_DETECTOR_H_ #define VIDEO_ADAPTATION_OVERUSE_FRAME_DETECTOR_H_ #include <list> #include <memory> #include "absl/types/optional.h" #include "api/environment/environment.h" #include "api/field_trials_view.h" #include "api/sequence_checker.h" #include "api/task_queue/task_queue_base.h" #include "rtc_base/experiments/field_trial_parser.h" #include "rtc_base/numerics/exp_filter.h" #include "rtc_base/system/no_unique_address.h" #include "rtc_base/task_utils/repeating_task.h" #include "rtc_base/thread_annotations.h" #include "video/video_stream_encoder_observer.h" namespace webrtc { class VideoFrame; struct CpuOveruseOptions { … }; class OveruseFrameDetectorObserverInterface { … }; // Use to detect system overuse based on the send-side processing time of // incoming frames. All methods must be called on a single task queue but it can // be created and destroyed on an arbitrary thread. // OveruseFrameDetector::StartCheckForOveruse must be called to periodically // check for overuse. class OveruseFrameDetector { … }; } // namespace webrtc #endif // VIDEO_ADAPTATION_OVERUSE_FRAME_DETECTOR_H_