Index: webrtc/modules/audio_coding/codecs/audio_encoder.h |
diff --git a/webrtc/modules/audio_coding/codecs/audio_encoder.h b/webrtc/modules/audio_coding/codecs/audio_encoder.h |
index bdbbf2d45b7871cf1ab2eaaf3327e63612d93153..942abb6f0dc8a59f95a7f909335cbd2ffa4c37bb 100644 |
--- a/webrtc/modules/audio_coding/codecs/audio_encoder.h |
+++ b/webrtc/modules/audio_coding/codecs/audio_encoder.h |
@@ -1,5 +1,5 @@ |
/* |
- * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. |
+ * Copyright (c) 2012 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 |
@@ -8,205 +8,13 @@ |
* be found in the AUTHORS file in the root of the source tree. |
*/ |
+// This file is for backwards compatibility only! Use |
+// webrtc/api/audio_codecs/audio_encoder.h instead! |
+// TODO(ossu): Remove it. |
+ |
#ifndef WEBRTC_MODULES_AUDIO_CODING_CODECS_AUDIO_ENCODER_H_ |
#define WEBRTC_MODULES_AUDIO_CODING_CODECS_AUDIO_ENCODER_H_ |
-#include <algorithm> |
-#include <vector> |
- |
-#include "webrtc/base/array_view.h" |
-#include "webrtc/base/buffer.h" |
-#include "webrtc/base/deprecation.h" |
-#include "webrtc/base/optional.h" |
-#include "webrtc/typedefs.h" |
- |
-namespace webrtc { |
- |
-class Clock; |
-class RtcEventLog; |
- |
-// This is the interface class for encoders in AudioCoding module. Each codec |
-// type must have an implementation of this class. |
-class AudioEncoder { |
- public: |
- // Used for UMA logging of codec usage. The same codecs, with the |
- // same values, must be listed in |
- // src/tools/metrics/histograms/histograms.xml in chromium to log |
- // correct values. |
- enum class CodecType { |
- kOther = 0, // Codec not specified, and/or not listed in this enum |
- kOpus = 1, |
- kIsac = 2, |
- kPcmA = 3, |
- kPcmU = 4, |
- kG722 = 5, |
- kIlbc = 6, |
- |
- // Number of histogram bins in the UMA logging of codec types. The |
- // total number of different codecs that are logged cannot exceed this |
- // number. |
- kMaxLoggedAudioCodecTypes |
- }; |
- |
- struct EncodedInfoLeaf { |
- size_t encoded_bytes = 0; |
- uint32_t encoded_timestamp = 0; |
- int payload_type = 0; |
- bool send_even_if_empty = false; |
- bool speech = true; |
- CodecType encoder_type = CodecType::kOther; |
- }; |
- |
- // This is the main struct for auxiliary encoding information. Each encoded |
- // packet should be accompanied by one EncodedInfo struct, containing the |
- // total number of |encoded_bytes|, the |encoded_timestamp| and the |
- // |payload_type|. If the packet contains redundant encodings, the |redundant| |
- // vector will be populated with EncodedInfoLeaf structs. Each struct in the |
- // vector represents one encoding; the order of structs in the vector is the |
- // same as the order in which the actual payloads are written to the byte |
- // stream. When EncoderInfoLeaf structs are present in the vector, the main |
- // struct's |encoded_bytes| will be the sum of all the |encoded_bytes| in the |
- // vector. |
- struct EncodedInfo : public EncodedInfoLeaf { |
- EncodedInfo(); |
- EncodedInfo(const EncodedInfo&); |
- EncodedInfo(EncodedInfo&&); |
- ~EncodedInfo(); |
- EncodedInfo& operator=(const EncodedInfo&); |
- EncodedInfo& operator=(EncodedInfo&&); |
- |
- std::vector<EncodedInfoLeaf> redundant; |
- }; |
- |
- virtual ~AudioEncoder() = default; |
- |
- // Returns the input sample rate in Hz and the number of input channels. |
- // These are constants set at instantiation time. |
- virtual int SampleRateHz() const = 0; |
- virtual size_t NumChannels() const = 0; |
- |
- // Returns the rate at which the RTP timestamps are updated. The default |
- // implementation returns SampleRateHz(). |
- virtual int RtpTimestampRateHz() const; |
- |
- // Returns the number of 10 ms frames the encoder will put in the next |
- // packet. This value may only change when Encode() outputs a packet; i.e., |
- // the encoder may vary the number of 10 ms frames from packet to packet, but |
- // it must decide the length of the next packet no later than when outputting |
- // the preceding packet. |
- virtual size_t Num10MsFramesInNextPacket() const = 0; |
- |
- // Returns the maximum value that can be returned by |
- // Num10MsFramesInNextPacket(). |
- virtual size_t Max10MsFramesInAPacket() const = 0; |
- |
- // Returns the current target bitrate in bits/s. The value -1 means that the |
- // codec adapts the target automatically, and a current target cannot be |
- // provided. |
- virtual int GetTargetBitrate() const = 0; |
- |
- // Accepts one 10 ms block of input audio (i.e., SampleRateHz() / 100 * |
- // NumChannels() samples). Multi-channel audio must be sample-interleaved. |
- // The encoder appends zero or more bytes of output to |encoded| and returns |
- // additional encoding information. Encode() checks some preconditions, calls |
- // EncodeImpl() which does the actual work, and then checks some |
- // postconditions. |
- EncodedInfo Encode(uint32_t rtp_timestamp, |
- rtc::ArrayView<const int16_t> audio, |
- rtc::Buffer* encoded); |
- |
- // Resets the encoder to its starting state, discarding any input that has |
- // been fed to the encoder but not yet emitted in a packet. |
- virtual void Reset() = 0; |
- |
- // Enables or disables codec-internal FEC (forward error correction). Returns |
- // true if the codec was able to comply. The default implementation returns |
- // true when asked to disable FEC and false when asked to enable it (meaning |
- // that FEC isn't supported). |
- virtual bool SetFec(bool enable); |
- |
- // Enables or disables codec-internal VAD/DTX. Returns true if the codec was |
- // able to comply. The default implementation returns true when asked to |
- // disable DTX and false when asked to enable it (meaning that DTX isn't |
- // supported). |
- virtual bool SetDtx(bool enable); |
- |
- // Returns the status of codec-internal DTX. The default implementation always |
- // returns false. |
- virtual bool GetDtx() const; |
- |
- // Sets the application mode. Returns true if the codec was able to comply. |
- // The default implementation just returns false. |
- enum class Application { kSpeech, kAudio }; |
- virtual bool SetApplication(Application application); |
- |
- // Tells the encoder about the highest sample rate the decoder is expected to |
- // use when decoding the bitstream. The encoder would typically use this |
- // information to adjust the quality of the encoding. The default |
- // implementation does nothing. |
- virtual void SetMaxPlaybackRate(int frequency_hz); |
- |
- // This is to be deprecated. Please use |OnReceivedTargetAudioBitrate| |
- // instead. |
- // Tells the encoder what average bitrate we'd like it to produce. The |
- // encoder is free to adjust or disregard the given bitrate (the default |
- // implementation does the latter). |
- RTC_DEPRECATED virtual void SetTargetBitrate(int target_bps); |
- |
- // Causes this encoder to let go of any other encoders it contains, and |
- // returns a pointer to an array where they are stored (which is required to |
- // live as long as this encoder). Unless the returned array is empty, you may |
- // not call any methods on this encoder afterwards, except for the |
- // destructor. The default implementation just returns an empty array. |
- // NOTE: This method is subject to change. Do not call or override it. |
- virtual rtc::ArrayView<std::unique_ptr<AudioEncoder>> |
- ReclaimContainedEncoders(); |
- |
- // Enables audio network adaptor. Returns true if successful. |
- virtual bool EnableAudioNetworkAdaptor(const std::string& config_string, |
- RtcEventLog* event_log); |
- |
- // Disables audio network adaptor. |
- virtual void DisableAudioNetworkAdaptor(); |
- |
- // Provides uplink packet loss fraction to this encoder to allow it to adapt. |
- // |uplink_packet_loss_fraction| is in the range [0.0, 1.0]. |
- virtual void OnReceivedUplinkPacketLossFraction( |
- float uplink_packet_loss_fraction); |
- |
- // Provides 1st-order-FEC-recoverable uplink packet loss rate to this encoder |
- // to allow it to adapt. |
- // |uplink_recoverable_packet_loss_fraction| is in the range [0.0, 1.0]. |
- virtual void OnReceivedUplinkRecoverablePacketLossFraction( |
- float uplink_recoverable_packet_loss_fraction); |
- |
- // Provides target audio bitrate to this encoder to allow it to adapt. |
- virtual void OnReceivedTargetAudioBitrate(int target_bps); |
- |
- // Provides target audio bitrate and corresponding probing interval of |
- // the bandwidth estimator to this encoder to allow it to adapt. |
- virtual void OnReceivedUplinkBandwidth( |
- int target_audio_bitrate_bps, |
- rtc::Optional<int64_t> probing_interval_ms); |
- |
- // Provides RTT to this encoder to allow it to adapt. |
- virtual void OnReceivedRtt(int rtt_ms); |
- |
- // Provides overhead to this encoder to adapt. The overhead is the number of |
- // bytes that will be added to each packet the encoder generates. |
- virtual void OnReceivedOverhead(size_t overhead_bytes_per_packet); |
- |
- // To allow encoder to adapt its frame length, it must be provided the frame |
- // length range that receivers can accept. |
- virtual void SetReceiverFrameLengthRange(int min_frame_length_ms, |
- int max_frame_length_ms); |
+#include "webrtc/api/audio_codecs/audio_encoder.h" |
- protected: |
- // Subclasses implement this to perform the actual encoding. Called by |
- // Encode(). |
- virtual EncodedInfo EncodeImpl(uint32_t rtp_timestamp, |
- rtc::ArrayView<const int16_t> audio, |
- rtc::Buffer* encoded) = 0; |
-}; |
-} // namespace webrtc |
#endif // WEBRTC_MODULES_AUDIO_CODING_CODECS_AUDIO_ENCODER_H_ |