blob: 0ffc78b4de4772368b5a1cbf9ab06997243d4956 [file] [log] [blame]
Henrik Boströmb04b2a12019-12-10 14:14:09 +01001/*
2 * Copyright 2019 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#include "call/adaptation/resource.h"
12
Evan Shrubsoleaa6fbc12020-02-25 16:26:01 +010013#include "absl/algorithm/container.h"
Henrik Boström48258ac2020-02-06 12:49:57 +010014#include "rtc_base/checks.h"
Henrik Boströmb04b2a12019-12-10 14:14:09 +010015
16namespace webrtc {
17
Henrik Boström48258ac2020-02-06 12:49:57 +010018ResourceListener::~ResourceListener() {}
Henrik Boströmb04b2a12019-12-10 14:14:09 +010019
Henrik Boströmdc4f75f2020-04-20 12:04:12 +020020Resource::Resource() : usage_state_(absl::nullopt), listener_(nullptr) {}
Henrik Boströmb04b2a12019-12-10 14:14:09 +010021
Henrik Boströmdc4f75f2020-04-20 12:04:12 +020022Resource::~Resource() {}
23
24void Resource::SetResourceListener(ResourceListener* listener) {
25 // If you want to change listener you need to unregister the old listener by
26 // setting it to null first.
27 RTC_DCHECK(!listener_ || !listener) << "A listener is already set";
28 listener_ = listener;
Evan Shrubsoleaa6fbc12020-02-25 16:26:01 +010029}
Henrik Boströmb04b2a12019-12-10 14:14:09 +010030
Henrik Boströmdc4f75f2020-04-20 12:04:12 +020031absl::optional<ResourceUsageState> Resource::usage_state() const {
Henrik Boström48258ac2020-02-06 12:49:57 +010032 return usage_state_;
33}
34
Henrik Boströmdc4f75f2020-04-20 12:04:12 +020035void Resource::ClearUsageState() {
36 usage_state_ = absl::nullopt;
37}
38
Henrik Boströmb613e3a2020-04-17 13:48:21 +020039bool Resource::IsAdaptationUpAllowed(
40 const VideoStreamInputState& input_state,
41 const VideoSourceRestrictions& restrictions_before,
42 const VideoSourceRestrictions& restrictions_after,
43 const Resource& reason_resource) const {
44 return true;
45}
46
Henrik Boström48258ac2020-02-06 12:49:57 +010047ResourceListenerResponse Resource::OnResourceUsageStateMeasured(
48 ResourceUsageState usage_state) {
Henrik Boström48258ac2020-02-06 12:49:57 +010049 usage_state_ = usage_state;
Henrik Boströmdc4f75f2020-04-20 12:04:12 +020050 if (!listener_)
51 return ResourceListenerResponse::kNothing;
52 return listener_->OnResourceUsageStateMeasured(*this);
Henrik Boströmb04b2a12019-12-10 14:14:09 +010053}
54
55} // namespace webrtc