OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 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 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 class RandomVector; | 50 class RandomVector; |
51 class SyncBuffer; | 51 class SyncBuffer; |
52 class TimestampScaler; | 52 class TimestampScaler; |
53 struct AccelerateFactory; | 53 struct AccelerateFactory; |
54 struct DtmfEvent; | 54 struct DtmfEvent; |
55 struct ExpandFactory; | 55 struct ExpandFactory; |
56 struct PreemptiveExpandFactory; | 56 struct PreemptiveExpandFactory; |
57 | 57 |
58 class NetEqImpl : public webrtc::NetEq { | 58 class NetEqImpl : public webrtc::NetEq { |
59 public: | 59 public: |
| 60 enum class OutputType { |
| 61 kNormalSpeech, |
| 62 kPLC, |
| 63 kCNG, |
| 64 kPLCCNG, |
| 65 kVadPassive |
| 66 }; |
| 67 |
60 // Creates a new NetEqImpl object. The object will assume ownership of all | 68 // Creates a new NetEqImpl object. The object will assume ownership of all |
61 // injected dependencies, and will delete them when done. | 69 // injected dependencies, and will delete them when done. |
62 NetEqImpl(const NetEq::Config& config, | 70 NetEqImpl(const NetEq::Config& config, |
63 BufferLevelFilter* buffer_level_filter, | 71 BufferLevelFilter* buffer_level_filter, |
64 DecoderDatabase* decoder_database, | 72 DecoderDatabase* decoder_database, |
65 DelayManager* delay_manager, | 73 DelayManager* delay_manager, |
66 DelayPeakDetector* delay_peak_detector, | 74 DelayPeakDetector* delay_peak_detector, |
67 DtmfBuffer* dtmf_buffer, | 75 DtmfBuffer* dtmf_buffer, |
68 DtmfToneGenerator* dtmf_tone_generator, | 76 DtmfToneGenerator* dtmf_tone_generator, |
69 PacketBuffer* packet_buffer, | 77 PacketBuffer* packet_buffer, |
(...skipping 19 matching lines...) Expand all Loading... |
89 // losses when Video NACK is enabled but Audio NACK is not. Clients of NetEq | 97 // losses when Video NACK is enabled but Audio NACK is not. Clients of NetEq |
90 // might insert sync-packet when they observe that buffer level of NetEq is | 98 // might insert sync-packet when they observe that buffer level of NetEq is |
91 // decreasing below a certain threshold, defined by the application. | 99 // decreasing below a certain threshold, defined by the application. |
92 // Sync-packets should have the same payload type as the last audio payload | 100 // Sync-packets should have the same payload type as the last audio payload |
93 // type, i.e. they cannot have DTMF or CNG payload type, nor a codec change | 101 // type, i.e. they cannot have DTMF or CNG payload type, nor a codec change |
94 // can be implied by inserting a sync-packet. | 102 // can be implied by inserting a sync-packet. |
95 // Returns kOk on success, kFail on failure. | 103 // Returns kOk on success, kFail on failure. |
96 int InsertSyncPacket(const WebRtcRTPHeader& rtp_header, | 104 int InsertSyncPacket(const WebRtcRTPHeader& rtp_header, |
97 uint32_t receive_timestamp) override; | 105 uint32_t receive_timestamp) override; |
98 | 106 |
99 int GetAudio(AudioFrame* audio_frame, NetEqOutputType* type) override; | 107 int GetAudio(AudioFrame* audio_frame) override; |
100 | 108 |
101 int RegisterPayloadType(NetEqDecoder codec, | 109 int RegisterPayloadType(NetEqDecoder codec, |
102 const std::string& codec_name, | 110 const std::string& codec_name, |
103 uint8_t rtp_payload_type) override; | 111 uint8_t rtp_payload_type) override; |
104 | 112 |
105 int RegisterExternalDecoder(AudioDecoder* decoder, | 113 int RegisterExternalDecoder(AudioDecoder* decoder, |
106 NetEqDecoder codec, | 114 NetEqDecoder codec, |
107 const std::string& codec_name, | 115 const std::string& codec_name, |
108 uint8_t rtp_payload_type, | 116 uint8_t rtp_payload_type, |
109 int sample_rate_hz) override; | 117 int sample_rate_hz) override; |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
303 int ExtractPackets(size_t required_samples, PacketList* packet_list) | 311 int ExtractPackets(size_t required_samples, PacketList* packet_list) |
304 EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); | 312 EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); |
305 | 313 |
306 // Resets various variables and objects to new values based on the sample rate | 314 // Resets various variables and objects to new values based on the sample rate |
307 // |fs_hz| and |channels| number audio channels. | 315 // |fs_hz| and |channels| number audio channels. |
308 void SetSampleRateAndChannels(int fs_hz, size_t channels) | 316 void SetSampleRateAndChannels(int fs_hz, size_t channels) |
309 EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); | 317 EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); |
310 | 318 |
311 // Returns the output type for the audio produced by the latest call to | 319 // Returns the output type for the audio produced by the latest call to |
312 // GetAudio(). | 320 // GetAudio(). |
313 NetEqOutputType LastOutputType() EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); | 321 OutputType LastOutputType() EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); |
314 | 322 |
315 // Updates Expand and Merge. | 323 // Updates Expand and Merge. |
316 virtual void UpdatePlcComponents(int fs_hz, size_t channels) | 324 virtual void UpdatePlcComponents(int fs_hz, size_t channels) |
317 EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); | 325 EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); |
318 | 326 |
319 // Creates DecisionLogic object with the mode given by |playout_mode_|. | 327 // Creates DecisionLogic object with the mode given by |playout_mode_|. |
320 virtual void CreateDecisionLogic() EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); | 328 virtual void CreateDecisionLogic() EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); |
321 | 329 |
322 rtc::CriticalSection crit_sect_; | 330 rtc::CriticalSection crit_sect_; |
323 const std::unique_ptr<BufferLevelFilter> buffer_level_filter_ | 331 const std::unique_ptr<BufferLevelFilter> buffer_level_filter_ |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
381 bool nack_enabled_ GUARDED_BY(crit_sect_); | 389 bool nack_enabled_ GUARDED_BY(crit_sect_); |
382 AudioFrame::VADActivity last_vad_activity_ GUARDED_BY(crit_sect_) = | 390 AudioFrame::VADActivity last_vad_activity_ GUARDED_BY(crit_sect_) = |
383 AudioFrame::kVadPassive; | 391 AudioFrame::kVadPassive; |
384 | 392 |
385 private: | 393 private: |
386 RTC_DISALLOW_COPY_AND_ASSIGN(NetEqImpl); | 394 RTC_DISALLOW_COPY_AND_ASSIGN(NetEqImpl); |
387 }; | 395 }; |
388 | 396 |
389 } // namespace webrtc | 397 } // namespace webrtc |
390 #endif // WEBRTC_MODULES_AUDIO_CODING_NETEQ_NETEQ_IMPL_H_ | 398 #endif // WEBRTC_MODULES_AUDIO_CODING_NETEQ_NETEQ_IMPL_H_ |
OLD | NEW |