1 /*
2  *  Copyright (c) 2011 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 #include "modules/audio_coding/neteq/random_vector.h"
12 
13 namespace webrtc {
14 
15 const int16_t RandomVector::kRandomTable[RandomVector::kRandomTableSize] = {
16     2680,   5532,   441,    5520,   16170,  -5146,  -1024,  -8733,  3115,
17     9598,   -10380, -4959,  -1280,  -21716, 7133,   -1522,  13458,  -3902,
18     2789,   -675,   3441,   5016,   -13599, -4003,  -2739,  3922,   -7209,
19     13352,  -11617, -7241,  12905,  -2314,  5426,   10121,  -9702,  11207,
20     -13542, 1373,   816,    -5934,  -12504, 4798,   1811,   4112,   -613,
21     201,    -10367, -2960,  -2419,  3442,   4299,   -6116,  -6092,  1552,
22     -1650,  -480,   -1237,  18720,  -11858, -8303,  -8212,  865,    -2890,
23     -16968, 12052,  -5845,  -5912,  9777,   -5665,  -6294,  5426,   -4737,
24     -6335,  1652,   761,    3832,   641,    -8552,  -9084,  -5753,  8146,
25     12156,  -4915,  15086,  -1231,  -1869,  11749,  -9319,  -6403,  11407,
26     6232,   -1683,  24340,  -11166, 4017,   -10448, 3153,   -2936,  6212,
27     2891,   -866,   -404,   -4807,  -2324,  -1917,  -2388,  -6470,  -3895,
28     -10300, 5323,   -5403,  2205,   4640,   7022,   -21186, -6244,  -882,
29     -10031, -3395,  -12885, 7155,   -5339,  5079,   -2645,  -9515,  6622,
30     14651,  15852,  359,    122,    8246,   -3502,  -6696,  -3679,  -13535,
31     -1409,  -704,   -7403,  -4007,  1798,   279,    -420,   -12796, -14219,
32     1141,   3359,   11434,  7049,   -6684,  -7473,  14283,  -4115,  -9123,
33     -8969,  4152,   4117,   13792,  5742,   16168,  8661,   -1609,  -6095,
34     1881,   14380,  -5588,  6758,   -6425,  -22969, -7269,  7031,   1119,
35     -1611,  -5850,  -11281, 3559,   -8952,  -10146, -4667,  -16251, -1538,
36     2062,   -1012,  -13073, 227,    -3142,  -5265,  20,     5770,   -7559,
37     4740,   -4819,  992,    -8208,  -7130,  -4652,  6725,   7369,   -1036,
38     13144,  -1588,  -5304,  -2344,  -449,   -5705,  -8894,  5205,   -17904,
39     -11188, -1022,  4852,   10101,  -5255,  -4200,  -752,   7941,   -1543,
40     5959,   14719,  13346,  17045,  -15605, -1678,  -1600,  -9230,  68,
41     23348,  1172,   7750,   11212,  -18227, 9956,   4161,   883,    3947,
42     4341,   1014,   -4889,  -2603,  1246,   -5630,  -3596,  -870,   -1298,
43     2784,   -3317,  -6612,  -20541, 4166,   4181,   -8625,  3562,   12890,
44     4761,   3205,   -12259, -8579};
45 
Reset()46 void RandomVector::Reset() {
47   seed_ = 777;
48   seed_increment_ = 1;
49 }
50 
Generate(size_t length,int16_t * output)51 void RandomVector::Generate(size_t length, int16_t* output) {
52   for (size_t i = 0; i < length; i++) {
53     seed_ += seed_increment_;
54     size_t position = seed_ & (kRandomTableSize - 1);
55     output[i] = kRandomTable[position];
56   }
57 }
58 
IncreaseSeedIncrement(int16_t increase_by)59 void RandomVector::IncreaseSeedIncrement(int16_t increase_by) {
60   seed_increment_ += increase_by;
61   seed_increment_ &= kRandomTableSize - 1;
62 }
63 }  // namespace webrtc
64