| Index: webrtc/modules/audio_coding/neteq/decision_logic.h
|
| diff --git a/webrtc/modules/audio_coding/neteq/decision_logic.h b/webrtc/modules/audio_coding/neteq/decision_logic.h
|
| index 72121b7aac5912f45e450cb6a014812031f0ecdb..35d1bec3d72a5fe9df3aafa5cbc53804eabcfa47 100644
|
| --- a/webrtc/modules/audio_coding/neteq/decision_logic.h
|
| +++ b/webrtc/modules/audio_coding/neteq/decision_logic.h
|
| @@ -14,6 +14,7 @@
|
| #include "webrtc/base/constructormagic.h"
|
| #include "webrtc/modules/audio_coding/neteq/defines.h"
|
| #include "webrtc/modules/audio_coding/neteq/include/neteq.h"
|
| +#include "webrtc/modules/audio_coding/neteq/tick_timer.h"
|
| #include "webrtc/typedefs.h"
|
|
|
| namespace webrtc {
|
| @@ -39,7 +40,8 @@ class DecisionLogic {
|
| DecoderDatabase* decoder_database,
|
| const PacketBuffer& packet_buffer,
|
| DelayManager* delay_manager,
|
| - BufferLevelFilter* buffer_level_filter);
|
| + BufferLevelFilter* buffer_level_filter,
|
| + const TickTimer& tick_timer);
|
|
|
| // Constructor.
|
| DecisionLogic(int fs_hz,
|
| @@ -48,10 +50,10 @@ class DecisionLogic {
|
| DecoderDatabase* decoder_database,
|
| const PacketBuffer& packet_buffer,
|
| DelayManager* delay_manager,
|
| - BufferLevelFilter* buffer_level_filter);
|
| + BufferLevelFilter* buffer_level_filter,
|
| + const TickTimer& tick_timer);
|
|
|
| - // Destructor.
|
| - virtual ~DecisionLogic() {}
|
| + virtual ~DecisionLogic();
|
|
|
| // Resets object to a clean state.
|
| void Reset();
|
| @@ -79,6 +81,7 @@ class DecisionLogic {
|
| const RTPHeader* packet_header,
|
| Modes prev_mode,
|
| bool play_dtmf,
|
| + size_t noise_samples_played,
|
| bool* reset_decoder);
|
|
|
| // These methods test the |cng_state_| for different conditions.
|
| @@ -101,10 +104,7 @@ class DecisionLogic {
|
|
|
| // Accessors and mutators.
|
| void set_sample_memory(int32_t value) { sample_memory_ = value; }
|
| - size_t generated_noise_samples() const { return generated_noise_samples_; }
|
| - void set_generated_noise_samples(size_t value) {
|
| - generated_noise_samples_ = value;
|
| - }
|
| + size_t noise_fast_forward() const { return noise_fast_forward_; }
|
| size_t packet_length_samples() const { return packet_length_samples_; }
|
| void set_packet_length_samples(size_t value) {
|
| packet_length_samples_ = value;
|
| @@ -114,7 +114,7 @@ class DecisionLogic {
|
|
|
| protected:
|
| // The value 6 sets maximum time-stretch rate to about 100 ms/s.
|
| - static const int kMinTimescaleInterval = 6;
|
| + static const int kMinTimescaleInterval = 5;
|
|
|
| enum CngState {
|
| kCngOff,
|
| @@ -138,7 +138,8 @@ class DecisionLogic {
|
| const RTPHeader* packet_header,
|
| Modes prev_mode,
|
| bool play_dtmf,
|
| - bool* reset_decoder) = 0;
|
| + bool* reset_decoder,
|
| + size_t noise_samples_played) = 0;
|
|
|
| // Updates the |buffer_level_filter_| with the current buffer level
|
| // |buffer_size_packets|.
|
| @@ -148,15 +149,16 @@ class DecisionLogic {
|
| const PacketBuffer& packet_buffer_;
|
| DelayManager* delay_manager_;
|
| BufferLevelFilter* buffer_level_filter_;
|
| + const TickTimer& tick_timer_;
|
| int fs_mult_;
|
| size_t output_size_samples_;
|
| CngState cng_state_; // Remember if comfort noise is interrupted by other
|
| // event (e.g., DTMF).
|
| - size_t generated_noise_samples_;
|
| + size_t noise_fast_forward_ = 0;
|
| size_t packet_length_samples_;
|
| int sample_memory_;
|
| bool prev_time_scale_;
|
| - int timescale_hold_off_;
|
| + std::unique_ptr<TickTimer::Countdown> timescale_countdown_;
|
| int num_consecutive_expands_;
|
| const NetEqPlayoutMode playout_mode_;
|
|
|
|
|