blob: b6c022dd112dd4104f57040711b6572492d94455 [file] [log] [blame]
Niels Möller0c4f7be2018-05-07 14:01:37 +02001/*
2 * Copyright (c) 2018 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 API_TRANSPORT_BITRATE_SETTINGS_H_
12#define API_TRANSPORT_BITRATE_SETTINGS_H_
13
Mirko Bonadei738bfa72019-09-17 14:47:38 +020014#include <algorithm>
15
Danil Chapovalov0bc58cf2018-06-21 13:32:56 +020016#include "absl/types/optional.h"
Mirko Bonadei66e76792019-04-02 11:33:59 +020017#include "rtc_base/system/rtc_export.h"
Niels Möller0c4f7be2018-05-07 14:01:37 +020018
19namespace webrtc {
20
21// Configuration of send bitrate. The |start_bitrate_bps| value is
22// used for multiple purposes, both as a prior in the bandwidth
23// estimator, and for initial configuration of the encoder. We may
24// want to create separate apis for those, and use a smaller struct
25// with only the min and max constraints.
Mirko Bonadei66e76792019-04-02 11:33:59 +020026struct RTC_EXPORT BitrateSettings {
Niels Möller0c4f7be2018-05-07 14:01:37 +020027 BitrateSettings();
28 ~BitrateSettings();
29 BitrateSettings(const BitrateSettings&);
30 // 0 <= min <= start <= max should hold for set parameters.
Danil Chapovalov0bc58cf2018-06-21 13:32:56 +020031 absl::optional<int> min_bitrate_bps;
32 absl::optional<int> start_bitrate_bps;
33 absl::optional<int> max_bitrate_bps;
Niels Möller0c4f7be2018-05-07 14:01:37 +020034};
35
Mirko Bonadei738bfa72019-09-17 14:47:38 +020036// TODO(srte): BitrateConstraints and BitrateSettings should be merged.
37// Both represent the same kind data, but are using different default
38// initializer and representation of unset values.
39struct BitrateConstraints {
40 int min_bitrate_bps = 0;
41 int start_bitrate_bps = kDefaultStartBitrateBps;
42 int max_bitrate_bps = -1;
43
44 private:
45 static constexpr int kDefaultStartBitrateBps = 300000;
46};
47
Niels Möller0c4f7be2018-05-07 14:01:37 +020048} // namespace webrtc
49
50#endif // API_TRANSPORT_BITRATE_SETTINGS_H_