| Index: webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.h
|
| diff --git a/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.h b/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.h
|
| index 48fb494dbe180bb7b151c5fe36767c83c84411be..150a84162cd80af34f7f367e7c7b4fdb83cdf97c 100644
|
| --- a/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.h
|
| +++ b/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.h
|
| @@ -11,10 +11,12 @@
|
| #ifndef WEBRTC_MODULES_AUDIO_CODING_CODECS_OPUS_AUDIO_ENCODER_OPUS_H_
|
| #define WEBRTC_MODULES_AUDIO_CODING_CODECS_OPUS_AUDIO_ENCODER_OPUS_H_
|
|
|
| +#include <functional>
|
| #include <vector>
|
|
|
| #include "webrtc/base/constructormagic.h"
|
| #include "webrtc/base/optional.h"
|
| +#include "webrtc/modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor.h"
|
| #include "webrtc/modules/audio_coding/codecs/opus/opus_interface.h"
|
| #include "webrtc/modules/audio_coding/codecs/audio_encoder.h"
|
|
|
| @@ -58,8 +60,15 @@ class AudioEncoderOpus final : public AudioEncoder {
|
| #endif
|
| };
|
|
|
| - explicit AudioEncoderOpus(const Config& config);
|
| + using AudioNetworkAdaptorCreator =
|
| + std::function<std::unique_ptr<AudioNetworkAdaptor>(const std::string&,
|
| + const Clock*)>;
|
| + AudioEncoderOpus(
|
| + const Config& config,
|
| + AudioNetworkAdaptorCreator&& audio_network_adaptor_creator = nullptr);
|
| +
|
| explicit AudioEncoderOpus(const CodecInst& codec_inst);
|
| +
|
| ~AudioEncoderOpus() override;
|
|
|
| int SampleRateHz() const override;
|
| @@ -82,9 +91,23 @@ class AudioEncoderOpus final : public AudioEncoder {
|
| void SetProjectedPacketLossRate(double fraction) override;
|
| void SetTargetBitrate(int target_bps) override;
|
|
|
| + bool EnableAudioNetworkAdaptor(const std::string& config_string,
|
| + const Clock* clock) override;
|
| + void DisableAudioNetworkAdaptor() override;
|
| + void OnReceivedUplinkBandwidth(int uplink_bandwidth_bps) override;
|
| + void OnReceivedUplinkPacketLossFraction(
|
| + float uplink_packet_loss_fraction) override;
|
| + void OnReceivedTargetAudioBitrate(int target_audio_bitrate_bps) override;
|
| + void OnReceivedRtt(int rtt_ms) override;
|
| + void SetReceiverFrameLengthRange(int min_frame_length_ms,
|
| + int max_frame_length_ms) override;
|
| +
|
| // Getters for testing.
|
| double packet_loss_rate() const { return packet_loss_rate_; }
|
| ApplicationMode application() const { return config_.application; }
|
| + bool fec_enabled() const { return config_.fec_enabled; }
|
| + size_t num_channels_to_encode() const { return num_channels_to_encode_; }
|
| + int next_frame_length_ms() const { return next_frame_length_ms_; }
|
|
|
| protected:
|
| EncodedInfo EncodeImpl(uint32_t rtp_timestamp,
|
| @@ -96,12 +119,23 @@ class AudioEncoderOpus final : public AudioEncoder {
|
| size_t SamplesPer10msFrame() const;
|
| size_t SufficientOutputBufferSize() const;
|
| bool RecreateEncoderInstance(const Config& config);
|
| + void SetFrameLength(int frame_length_ms);
|
| + void SetNumChannelsToEncode(size_t num_channels_to_encode);
|
| + void ApplyAudioNetworkAdaptor();
|
| + std::unique_ptr<AudioNetworkAdaptor> DefaultAudioNetworkAdaptorCreator(
|
| + const std::string& config_string,
|
| + const Clock* clock) const;
|
|
|
| Config config_;
|
| double packet_loss_rate_;
|
| std::vector<int16_t> input_buffer_;
|
| OpusEncInst* inst_;
|
| uint32_t first_timestamp_in_buffer_;
|
| + size_t num_channels_to_encode_;
|
| + int next_frame_length_ms_;
|
| + AudioNetworkAdaptorCreator audio_network_adaptor_creator_;
|
| + std::unique_ptr<AudioNetworkAdaptor> audio_network_adaptor_;
|
| +
|
| RTC_DISALLOW_COPY_AND_ASSIGN(AudioEncoderOpus);
|
| };
|
|
|
|
|