/* * Copyright (c) 2015 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 CALL_BITRATE_ALLOCATOR_H_ #define CALL_BITRATE_ALLOCATOR_H_ #include <stdint.h> #include <map> #include <memory> #include <string> #include <utility> #include <vector> #include "api/call/bitrate_allocation.h" #include "api/field_trials_view.h" #include "api/sequence_checker.h" #include "api/transport/network_types.h" #include "api/units/data_rate.h" #include "rtc_base/system/no_unique_address.h" namespace webrtc { class Clock; // Used by all send streams with adaptive bitrate, to get the currently // allocated bitrate for the send stream. The current network properties are // given at the same time, to let the send stream decide about possible loss // protection. class BitrateAllocatorObserver { … }; // Struct describing parameters for how a media stream should get bitrate // allocated to it. enum class TrackRateElasticity { … }; struct MediaStreamAllocationConfig { … }; // Interface used for mocking class BitrateAllocatorInterface { … }; namespace bitrate_allocator_impl { struct AllocatableTrack { … }; } // namespace bitrate_allocator_impl // Usage: this class will register multiple RtcpBitrateObserver's one at each // RTCP module. It will aggregate the results and run one bandwidth estimation // and push the result to the encoders via BitrateAllocatorObserver(s). class BitrateAllocator : public BitrateAllocatorInterface { … }; // TODO(b/350555527): Remove after experiment DataRate GetElasticRateAllocationFieldTrialParameter( const FieldTrialsView& field_trials); } // namespace webrtc #endif // CALL_BITRATE_ALLOCATOR_H_