2020-01-07 10:15:04 +01:00
|
|
|
/*
|
2020-03-10 19:08:05 +01:00
|
|
|
* Copyright 2020 The WebRTC Project Authors. All rights reserved.
|
2020-01-07 10:15:04 +01:00
|
|
|
*
|
|
|
|
|
* 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.
|
|
|
|
|
*/
|
|
|
|
|
|
2020-03-10 19:08:05 +01:00
|
|
|
#ifndef CALL_ADAPTATION_RESOURCE_ADAPTATION_PROCESSOR_INTERFACE_H_
|
|
|
|
|
#define CALL_ADAPTATION_RESOURCE_ADAPTATION_PROCESSOR_INTERFACE_H_
|
2020-01-07 10:15:04 +01:00
|
|
|
|
2020-01-21 17:45:35 +01:00
|
|
|
#include "absl/types/optional.h"
|
2020-01-16 13:55:29 +01:00
|
|
|
#include "api/rtp_parameters.h"
|
2020-01-22 16:16:04 +01:00
|
|
|
#include "api/video/video_frame.h"
|
2020-03-06 13:32:03 +01:00
|
|
|
#include "call/adaptation/encoder_settings.h"
|
2020-02-25 16:26:01 +01:00
|
|
|
#include "call/adaptation/resource.h"
|
2020-01-13 11:27:18 +01:00
|
|
|
#include "call/adaptation/video_source_restrictions.h"
|
2020-01-10 15:44:01 +01:00
|
|
|
|
2020-01-07 10:15:04 +01:00
|
|
|
namespace webrtc {
|
|
|
|
|
|
2020-01-10 15:44:01 +01:00
|
|
|
// The listener is responsible for carrying out the reconfiguration of the video
|
|
|
|
|
// source such that the VideoSourceRestrictions are fulfilled.
|
2020-03-10 19:08:05 +01:00
|
|
|
class ResourceAdaptationProcessorListener {
|
2020-01-10 15:44:01 +01:00
|
|
|
public:
|
2020-03-10 19:08:05 +01:00
|
|
|
virtual ~ResourceAdaptationProcessorListener();
|
2020-01-10 15:44:01 +01:00
|
|
|
|
|
|
|
|
virtual void OnVideoSourceRestrictionsUpdated(
|
|
|
|
|
VideoSourceRestrictions restrictions) = 0;
|
|
|
|
|
};
|
|
|
|
|
|
2020-01-07 10:15:04 +01:00
|
|
|
// Responsible for reconfiguring encoded streams based on resource consumption,
|
|
|
|
|
// such as scaling down resolution or frame rate when CPU is overused. This
|
|
|
|
|
// interface is meant to be injectable into VideoStreamEncoder.
|
2020-03-10 19:08:05 +01:00
|
|
|
class ResourceAdaptationProcessorInterface {
|
2020-01-07 10:15:04 +01:00
|
|
|
public:
|
2020-03-10 19:08:05 +01:00
|
|
|
virtual ~ResourceAdaptationProcessorInterface();
|
2020-01-07 10:15:04 +01:00
|
|
|
|
2020-01-16 13:55:29 +01:00
|
|
|
virtual void StartResourceAdaptation(
|
2020-03-10 19:08:05 +01:00
|
|
|
ResourceAdaptationProcessorListener* adaptation_listener) = 0;
|
2020-01-16 13:55:29 +01:00
|
|
|
virtual void StopResourceAdaptation() = 0;
|
2020-02-25 16:26:01 +01:00
|
|
|
// The resource must out-live the module.
|
|
|
|
|
virtual void AddResource(Resource* resource) = 0;
|
2020-01-16 13:55:29 +01:00
|
|
|
virtual void SetDegradationPreference(
|
|
|
|
|
DegradationPreference degradation_preference) = 0;
|
2020-01-07 10:15:04 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
} // namespace webrtc
|
|
|
|
|
|
2020-03-10 19:08:05 +01:00
|
|
|
#endif // CALL_ADAPTATION_RESOURCE_ADAPTATION_PROCESSOR_INTERFACE_H_
|