Line data Source code
1 : /*
2 : * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 : *
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
6 : * tree. An additional intellectual property rights grant can be found
7 : * in the file PATENTS. All contributing project authors may
8 : * be found in the AUTHORS file in the root of the source tree.
9 : */
10 :
11 : #ifndef WEBRTC_MODULES_AUDIO_CODING_NETEQ_BUFFER_LEVEL_FILTER_H_
12 : #define WEBRTC_MODULES_AUDIO_CODING_NETEQ_BUFFER_LEVEL_FILTER_H_
13 :
14 : #include <stddef.h>
15 :
16 : #include "webrtc/base/constructormagic.h"
17 :
18 : namespace webrtc {
19 :
20 : class BufferLevelFilter {
21 : public:
22 : BufferLevelFilter();
23 0 : virtual ~BufferLevelFilter() {}
24 : virtual void Reset();
25 :
26 : // Updates the filter. Current buffer size is |buffer_size_packets| (Q0).
27 : // If |time_stretched_samples| is non-zero, the value is converted to the
28 : // corresponding number of packets, and is subtracted from the filtered
29 : // value (thus bypassing the filter operation). |packet_len_samples| is the
30 : // number of audio samples carried in each incoming packet.
31 : virtual void Update(size_t buffer_size_packets, int time_stretched_samples,
32 : size_t packet_len_samples);
33 :
34 : // Set the current target buffer level (obtained from
35 : // DelayManager::base_target_level()). Used to select the appropriate
36 : // filter coefficient.
37 : virtual void SetTargetBufferLevel(int target_buffer_level);
38 :
39 : virtual int filtered_current_level() const;
40 :
41 : private:
42 : int level_factor_; // Filter factor for the buffer level filter in Q8.
43 : int filtered_current_level_; // Filtered current buffer level in Q8.
44 :
45 : RTC_DISALLOW_COPY_AND_ASSIGN(BufferLevelFilter);
46 : };
47 :
48 : } // namespace webrtc
49 : #endif // WEBRTC_MODULES_AUDIO_CODING_NETEQ_BUFFER_LEVEL_FILTER_H_
|