Line data Source code
1 : /*
2 : * Copyright (c) 2016 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 WEBRTC_MODULES_AUDIO_CODING_AUDIO_NETWORK_ADAPTOR_INCLUDE_AUDIO_NETWORK_ADAPTOR_H_
12 : #define WEBRTC_MODULES_AUDIO_CODING_AUDIO_NETWORK_ADAPTOR_INCLUDE_AUDIO_NETWORK_ADAPTOR_H_
13 :
14 : #include "webrtc/base/optional.h"
15 :
16 : namespace webrtc {
17 :
18 : // An AudioNetworkAdaptor optimizes the audio experience by suggesting a
19 : // suitable runtime configuration (bit rate, frame length, FEC, etc.) to the
20 : // encoder based on network metrics.
21 0 : class AudioNetworkAdaptor {
22 : public:
23 0 : struct EncoderRuntimeConfig {
24 : EncoderRuntimeConfig();
25 : EncoderRuntimeConfig(const EncoderRuntimeConfig& other);
26 : ~EncoderRuntimeConfig();
27 : rtc::Optional<int> bitrate_bps;
28 : rtc::Optional<int> frame_length_ms;
29 : rtc::Optional<float> uplink_packet_loss_fraction;
30 : rtc::Optional<bool> enable_fec;
31 : rtc::Optional<bool> enable_dtx;
32 :
33 : // Some encoders can encode fewer channels than the actual input to make
34 : // better use of the bandwidth. |num_channels| sets the number of channels
35 : // to encode.
36 : rtc::Optional<size_t> num_channels;
37 : };
38 :
39 0 : virtual ~AudioNetworkAdaptor() = default;
40 :
41 : virtual void SetUplinkBandwidth(int uplink_bandwidth_bps) = 0;
42 :
43 : virtual void SetUplinkPacketLossFraction(
44 : float uplink_packet_loss_fraction) = 0;
45 :
46 : virtual void SetRtt(int rtt_ms) = 0;
47 :
48 : virtual void SetTargetAudioBitrate(int target_audio_bitrate_bps) = 0;
49 :
50 : virtual void SetOverhead(size_t overhead_bytes_per_packet) = 0;
51 :
52 : virtual EncoderRuntimeConfig GetEncoderRuntimeConfig() = 0;
53 :
54 : virtual void StartDebugDump(FILE* file_handle) = 0;
55 :
56 : virtual void StopDebugDump() = 0;
57 : };
58 :
59 : } // namespace webrtc
60 :
61 : #endif // WEBRTC_MODULES_AUDIO_CODING_AUDIO_NETWORK_ADAPTOR_INCLUDE_AUDIO_NETWORK_ADAPTOR_H_
|