| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 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 | 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 | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| 11 #ifndef WEBRTC_MODULES_AUDIO_CODING_CODECS_AUDIO_ENCODER_H_ | 11 #ifndef WEBRTC_MODULES_AUDIO_CODING_CODECS_AUDIO_ENCODER_H_ |
| 12 #define WEBRTC_MODULES_AUDIO_CODING_CODECS_AUDIO_ENCODER_H_ | 12 #define WEBRTC_MODULES_AUDIO_CODING_CODECS_AUDIO_ENCODER_H_ |
| 13 | 13 |
| 14 #include <algorithm> | 14 #include <algorithm> |
| 15 #include <vector> | 15 #include <vector> |
| 16 | 16 |
| 17 #include "webrtc/base/array_view.h" |
| 17 #include "webrtc/typedefs.h" | 18 #include "webrtc/typedefs.h" |
| 18 | 19 |
| 19 namespace webrtc { | 20 namespace webrtc { |
| 20 | 21 |
| 21 // This is the interface class for encoders in AudioCoding module. Each codec | 22 // This is the interface class for encoders in AudioCoding module. Each codec |
| 22 // type must have an implementation of this class. | 23 // type must have an implementation of this class. |
| 23 class AudioEncoder { | 24 class AudioEncoder { |
| 24 public: | 25 public: |
| 25 struct EncodedInfoLeaf { | 26 struct EncodedInfoLeaf { |
| 26 size_t encoded_bytes = 0; | 27 size_t encoded_bytes = 0; |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 | 85 |
| 85 // Accepts one 10 ms block of input audio (i.e., SampleRateHz() / 100 * | 86 // Accepts one 10 ms block of input audio (i.e., SampleRateHz() / 100 * |
| 86 // NumChannels() samples). Multi-channel audio must be sample-interleaved. | 87 // NumChannels() samples). Multi-channel audio must be sample-interleaved. |
| 87 // The encoder produces zero or more bytes of output in |encoded| and | 88 // The encoder produces zero or more bytes of output in |encoded| and |
| 88 // returns additional encoding information. | 89 // returns additional encoding information. |
| 89 // The caller is responsible for making sure that |max_encoded_bytes| is | 90 // The caller is responsible for making sure that |max_encoded_bytes| is |
| 90 // not smaller than the number of bytes actually produced by the encoder. | 91 // not smaller than the number of bytes actually produced by the encoder. |
| 91 // Encode() checks some preconditions, calls EncodeInternal() which does the | 92 // Encode() checks some preconditions, calls EncodeInternal() which does the |
| 92 // actual work, and then checks some postconditions. | 93 // actual work, and then checks some postconditions. |
| 93 EncodedInfo Encode(uint32_t rtp_timestamp, | 94 EncodedInfo Encode(uint32_t rtp_timestamp, |
| 94 const int16_t* audio, | 95 rtc::ArrayView<const int16_t> audio, |
| 95 size_t num_samples_per_channel, | |
| 96 size_t max_encoded_bytes, | 96 size_t max_encoded_bytes, |
| 97 uint8_t* encoded); | 97 uint8_t* encoded); |
| 98 | 98 |
| 99 virtual EncodedInfo EncodeInternal(uint32_t rtp_timestamp, | 99 virtual EncodedInfo EncodeInternal(uint32_t rtp_timestamp, |
| 100 const int16_t* audio, | 100 rtc::ArrayView<const int16_t> audio, |
| 101 size_t max_encoded_bytes, | 101 size_t max_encoded_bytes, |
| 102 uint8_t* encoded) = 0; | 102 uint8_t* encoded) = 0; |
| 103 | 103 |
| 104 // Resets the encoder to its starting state, discarding any input that has | 104 // Resets the encoder to its starting state, discarding any input that has |
| 105 // been fed to the encoder but not yet emitted in a packet. | 105 // been fed to the encoder but not yet emitted in a packet. |
| 106 virtual void Reset() = 0; | 106 virtual void Reset() = 0; |
| 107 | 107 |
| 108 // Enables or disables codec-internal FEC (forward error correction). Returns | 108 // Enables or disables codec-internal FEC (forward error correction). Returns |
| 109 // true if the codec was able to comply. The default implementation returns | 109 // true if the codec was able to comply. The default implementation returns |
| 110 // true when asked to disable FEC and false when asked to enable it (meaning | 110 // true when asked to disable FEC and false when asked to enable it (meaning |
| (...skipping 23 matching lines...) Expand all Loading... |
| 134 // does nothing. | 134 // does nothing. |
| 135 virtual void SetProjectedPacketLossRate(double fraction); | 135 virtual void SetProjectedPacketLossRate(double fraction); |
| 136 | 136 |
| 137 // Tells the encoder what average bitrate we'd like it to produce. The | 137 // Tells the encoder what average bitrate we'd like it to produce. The |
| 138 // encoder is free to adjust or disregard the given bitrate (the default | 138 // encoder is free to adjust or disregard the given bitrate (the default |
| 139 // implementation does the latter). | 139 // implementation does the latter). |
| 140 virtual void SetTargetBitrate(int target_bps); | 140 virtual void SetTargetBitrate(int target_bps); |
| 141 }; | 141 }; |
| 142 } // namespace webrtc | 142 } // namespace webrtc |
| 143 #endif // WEBRTC_MODULES_AUDIO_CODING_CODECS_AUDIO_ENCODER_H_ | 143 #endif // WEBRTC_MODULES_AUDIO_CODING_CODECS_AUDIO_ENCODER_H_ |
| OLD | NEW |