| /* | |
| * Copyright (c) 2022 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 API_VIDEO_CODECS_SIMULCAST_STREAM_H_ | |
| #define API_VIDEO_CODECS_SIMULCAST_STREAM_H_ | |
| #include <optional> | |
| #include "api/video_codecs/scalability_mode.h" | |
| #include "api/video_codecs/sdp_video_format.h" | |
| #include "rtc_base/system/rtc_export.h" | |
| namespace webrtc { | |
| // TODO(bugs.webrtc.org/6883): Unify with struct VideoStream, part of | |
| // VideoEncoderConfig. | |
| struct RTC_EXPORT SimulcastStream { | |
| // Temporary utility methods for transition from numberOfTemporalLayers | |
| // setting to ScalabilityMode. | |
| unsigned char GetNumberOfTemporalLayers() const; | |
| std::optional<ScalabilityMode> GetScalabilityMode() const; | |
| void SetNumberOfTemporalLayers(unsigned char n); | |
| bool operator==(const SimulcastStream& other) const; | |
| bool operator!=(const SimulcastStream& other) const { | |
| return !(*this == other); | |
| } | |
| int width = 0; | |
| int height = 0; | |
| float maxFramerate = 0; // fps. | |
| unsigned char numberOfTemporalLayers = 1; | |
| unsigned int maxBitrate = 0; // kilobits/sec. | |
| unsigned int targetBitrate = 0; // kilobits/sec. | |
| unsigned int minBitrate = 0; // kilobits/sec. | |
| unsigned int qpMax = 0; // minimum quality | |
| bool active = false; // encoded and sent. | |
| // The video format for this stream. | |
| // This should be set for mixed-codec simulcast, while for other cases, | |
| // it is optional and can be unset. | |
| std::optional<SdpVideoFormat> format; | |
| }; | |
| } // namespace webrtc | |
| #endif // API_VIDEO_CODECS_SIMULCAST_STREAM_H_ |