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_RANDOM_VECTOR_H_
12 : #define WEBRTC_MODULES_AUDIO_CODING_NETEQ_RANDOM_VECTOR_H_
13 :
14 : #include <string.h> // size_t
15 :
16 : #include "webrtc/base/constructormagic.h"
17 : #include "webrtc/typedefs.h"
18 :
19 : namespace webrtc {
20 :
21 : // This class generates pseudo-random samples.
22 : class RandomVector {
23 : public:
24 : static const size_t kRandomTableSize = 256;
25 : static const int16_t kRandomTable[kRandomTableSize];
26 :
27 0 : RandomVector()
28 0 : : seed_(777),
29 0 : seed_increment_(1) {
30 0 : }
31 :
32 : void Reset();
33 :
34 : void Generate(size_t length, int16_t* output);
35 :
36 : void IncreaseSeedIncrement(int16_t increase_by);
37 :
38 : // Accessors and mutators.
39 : int16_t seed_increment() { return seed_increment_; }
40 0 : void set_seed_increment(int16_t value) { seed_increment_ = value; }
41 :
42 : private:
43 : uint32_t seed_;
44 : int16_t seed_increment_;
45 :
46 : RTC_DISALLOW_COPY_AND_ASSIGN(RandomVector);
47 : };
48 :
49 : } // namespace webrtc
50 : #endif // WEBRTC_MODULES_AUDIO_CODING_NETEQ_RANDOM_VECTOR_H_
|