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 |
(...skipping 14 matching lines...) Expand all Loading... |
25 void operator()(CNG_enc_inst* ptr) const { WebRtcCng_FreeEnc(ptr); } | 25 void operator()(CNG_enc_inst* ptr) const { WebRtcCng_FreeEnc(ptr); } |
26 }; | 26 }; |
27 | 27 |
28 class Vad; | 28 class Vad; |
29 | 29 |
30 class AudioEncoderCng final : public AudioEncoder { | 30 class AudioEncoderCng final : public AudioEncoder { |
31 public: | 31 public: |
32 struct Config { | 32 struct Config { |
33 bool IsOk() const; | 33 bool IsOk() const; |
34 | 34 |
35 int num_channels = 1; | 35 size_t num_channels = 1; |
36 int payload_type = 13; | 36 int payload_type = 13; |
37 // Caller keeps ownership of the AudioEncoder object. | 37 // Caller keeps ownership of the AudioEncoder object. |
38 AudioEncoder* speech_encoder = nullptr; | 38 AudioEncoder* speech_encoder = nullptr; |
39 Vad::Aggressiveness vad_mode = Vad::kVadNormal; | 39 Vad::Aggressiveness vad_mode = Vad::kVadNormal; |
40 int sid_frame_interval_ms = 100; | 40 int sid_frame_interval_ms = 100; |
41 int num_cng_coefficients = 8; | 41 int num_cng_coefficients = 8; |
42 // The Vad pointer is mainly for testing. If a NULL pointer is passed, the | 42 // The Vad pointer is mainly for testing. If a NULL pointer is passed, the |
43 // AudioEncoderCng creates (and destroys) a Vad object internally. If an | 43 // AudioEncoderCng creates (and destroys) a Vad object internally. If an |
44 // object is passed, the AudioEncoderCng assumes ownership of the Vad | 44 // object is passed, the AudioEncoderCng assumes ownership of the Vad |
45 // object. | 45 // object. |
46 Vad* vad = nullptr; | 46 Vad* vad = nullptr; |
47 }; | 47 }; |
48 | 48 |
49 explicit AudioEncoderCng(const Config& config); | 49 explicit AudioEncoderCng(const Config& config); |
50 ~AudioEncoderCng() override; | 50 ~AudioEncoderCng() override; |
51 | 51 |
52 size_t MaxEncodedBytes() const override; | 52 size_t MaxEncodedBytes() const override; |
53 int SampleRateHz() const override; | 53 int SampleRateHz() const override; |
54 int NumChannels() const override; | 54 size_t NumChannels() const override; |
55 int RtpTimestampRateHz() const override; | 55 int RtpTimestampRateHz() const override; |
56 size_t Num10MsFramesInNextPacket() const override; | 56 size_t Num10MsFramesInNextPacket() const override; |
57 size_t Max10MsFramesInAPacket() const override; | 57 size_t Max10MsFramesInAPacket() const override; |
58 int GetTargetBitrate() const override; | 58 int GetTargetBitrate() const override; |
59 EncodedInfo EncodeInternal(uint32_t rtp_timestamp, | 59 EncodedInfo EncodeInternal(uint32_t rtp_timestamp, |
60 rtc::ArrayView<const int16_t> audio, | 60 rtc::ArrayView<const int16_t> audio, |
61 size_t max_encoded_bytes, | 61 size_t max_encoded_bytes, |
62 uint8_t* encoded) override; | 62 uint8_t* encoded) override; |
63 void Reset() override; | 63 void Reset() override; |
64 bool SetFec(bool enable) override; | 64 bool SetFec(bool enable) override; |
(...skipping 21 matching lines...) Expand all Loading... |
86 bool last_frame_active_; | 86 bool last_frame_active_; |
87 rtc::scoped_ptr<Vad> vad_; | 87 rtc::scoped_ptr<Vad> vad_; |
88 rtc::scoped_ptr<CNG_enc_inst, CngInstDeleter> cng_inst_; | 88 rtc::scoped_ptr<CNG_enc_inst, CngInstDeleter> cng_inst_; |
89 | 89 |
90 RTC_DISALLOW_COPY_AND_ASSIGN(AudioEncoderCng); | 90 RTC_DISALLOW_COPY_AND_ASSIGN(AudioEncoderCng); |
91 }; | 91 }; |
92 | 92 |
93 } // namespace webrtc | 93 } // namespace webrtc |
94 | 94 |
95 #endif // WEBRTC_MODULES_AUDIO_CODING_CODECS_CNG_AUDIO_ENCODER_CNG_H_ | 95 #endif // WEBRTC_MODULES_AUDIO_CODING_CODECS_CNG_AUDIO_ENCODER_CNG_H_ |
OLD | NEW |