1 /* Copyright (c) 2016 Mark Harris, Jean-Marc Valin */
2 /*
3 Redistribution and use in source and binary forms, with or without
4 modification, are permitted provided that the following conditions
5 are met:
6
7 - Redistributions of source code must retain the above copyright
8 notice, this list of conditions and the following disclaimer.
9
10 - Redistributions in binary form must reproduce the above copyright
11 notice, this list of conditions and the following disclaimer in the
12 documentation and/or other materials provided with the distribution.
13
14 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15 ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
18 OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
22 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
23 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26
27
28 #ifdef HAVE_CONFIG_H
29 #include "config.h"
30 #endif
31
32 #include <stdio.h>
33 #include <stdlib.h>
34 #include <limits.h>
35 #include <stdint.h>
36 #include <math.h>
37 #include <string.h>
38 #include "opus_multistream.h"
39 #include "opus.h"
40 #include "test_opus_common.h"
41
42
celt_ec_internal_error(void)43 static int celt_ec_internal_error(void)
44 {
45 OpusMSEncoder *enc;
46 int err;
47 unsigned char data[2460];
48 int streams;
49 int coupled_streams;
50 unsigned char mapping[1];
51
52 enc = opus_multistream_surround_encoder_create(16000, 1, 1, &streams,
53 &coupled_streams, mapping, OPUS_APPLICATION_VOIP, &err);
54 opus_multistream_encoder_ctl(enc, OPUS_SET_SIGNAL(OPUS_SIGNAL_MUSIC));
55 opus_multistream_encoder_ctl(enc, OPUS_SET_VBR(0));
56 opus_multistream_encoder_ctl(enc, OPUS_SET_VBR_CONSTRAINT(0));
57 opus_multistream_encoder_ctl(enc, OPUS_SET_PREDICTION_DISABLED(1));
58 opus_multistream_encoder_ctl(enc, OPUS_SET_PHASE_INVERSION_DISABLED(0));
59 opus_multistream_encoder_ctl(enc, OPUS_SET_DTX(0));
60 opus_multistream_encoder_ctl(enc, OPUS_SET_COMPLEXITY(0));
61 opus_multistream_encoder_ctl(enc, OPUS_SET_MAX_BANDWIDTH(OPUS_BANDWIDTH_NARROWBAND));
62 opus_multistream_encoder_ctl(enc, OPUS_SET_BANDWIDTH(OPUS_AUTO));
63 opus_multistream_encoder_ctl(enc, OPUS_SET_LSB_DEPTH(8));
64 opus_multistream_encoder_ctl(enc, OPUS_SET_INBAND_FEC(0));
65 opus_multistream_encoder_ctl(enc, OPUS_SET_PACKET_LOSS_PERC(0));
66 opus_multistream_encoder_ctl(enc, OPUS_SET_BITRATE(OPUS_AUTO));
67 {
68 static const short pcm[320] =
69 {
70 0, 0, 0, 0, 0, 0, 0, 0, 0,
71 0, 0, 0, 0, 0, 0, 1792, 1799, 1799,
72 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799,
73 1799, 1799, 1799, 1799, 1799, 0, 25600, 1799, 1799,
74 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799,
75 1799, 1799, 1799, 1799, 7, 0, 255, 0, 0,
76 0, 0, 0, 0, 0, 0, 0, 32767, -1,
77 0, 0, 0, 100, 0, 16384, 0, 0, 0,
78 0, 0, 0, 4, 0, 0, -256, 255, 0,
79 0, 0, 0, 0, 0, 0, 0, 0, 0,
80 0, 0, 0, 0, 0, 0, 0, 0, 0,
81 0, 0,-32768, 0, 0, 0, 0, 0, 0,
82 0, 0, 0, 0, 0, 0, 0, 0, 0,
83 0, 0, 0, 0, 0, 0, 0, 0, 0,
84 0, 0, 0, 0, 128, 0, 0, 0, 0,
85 0, 0, 0, 0, -256, 0, 0, 32, 0,
86 0, 0, 0, 0, 0, 0, 4352, 4, 228,
87 0, 0, 0, 0, 0, 0, 0, 0, 0,
88 0, 0, 0, 0, 0, 0, 5632, 0, 0,
89 0, 0,-32768, 0, 0, 0, 0, 0, 0,
90 0, 0, 0, 0, 0, 0, 0, 0, 0,
91 0, 0, 0, 0, 0, 0, 0, 0, 0,
92 0, 0, 0, 256, 0, 0, 0, 0, 0,
93 0, 0, 0, 0, 0, 0, 0, 0, 0,
94 -3944, 10500, 4285, 10459, -6474, 10204, -6539, 11601, -6824,
95 13385, -7142, 13872,-11553, 13670, -7725, 13463, -6887, 7874,
96 -5580, 12600, -4964, 12480, 3254, 11741, -4210, 9741, -3155,
97 7558, -5468, 5431, -1073, 3641, -1304, 0, -1, 343,
98 26, 0, 0, 150, 0, 0, 0, 0, 0,
99 0, 0, 0, 0, 0, 0, 0, 0, 0,
100 0, 0, 0, 0, 0, 0, 0, 0, 0,
101 0, 0, 0, 0, 0, 0, 0, 0, 0,
102 0, 0, 0, 0, 0, 0, 0, 0, 0,
103 0, 0, 0, 1799, 1799, 1799, 1799, 1799, -2553,
104 7, 1792, 1799, 1799, 1799, 1799, 1799, 1799, 1799,
105 1799, 1799, 1799, 1799, -9721
106 };
107 err = opus_multistream_encode(enc, pcm, 320, data, 2460);
108 opus_test_assert(err > 0);
109 }
110 opus_multistream_encoder_ctl(enc, OPUS_SET_SIGNAL(OPUS_SIGNAL_MUSIC));
111 opus_multistream_encoder_ctl(enc, OPUS_SET_VBR(0));
112 opus_multistream_encoder_ctl(enc, OPUS_SET_VBR_CONSTRAINT(1));
113 opus_multistream_encoder_ctl(enc, OPUS_SET_PREDICTION_DISABLED(1));
114 opus_multistream_encoder_ctl(enc, OPUS_SET_PHASE_INVERSION_DISABLED(0));
115 opus_multistream_encoder_ctl(enc, OPUS_SET_DTX(1));
116 opus_multistream_encoder_ctl(enc, OPUS_SET_COMPLEXITY(10));
117 opus_multistream_encoder_ctl(enc, OPUS_SET_MAX_BANDWIDTH(OPUS_BANDWIDTH_FULLBAND));
118 opus_multistream_encoder_ctl(enc, OPUS_SET_BANDWIDTH(OPUS_BANDWIDTH_FULLBAND));
119 opus_multistream_encoder_ctl(enc, OPUS_SET_LSB_DEPTH(18));
120 opus_multistream_encoder_ctl(enc, OPUS_SET_INBAND_FEC(1));
121 opus_multistream_encoder_ctl(enc, OPUS_SET_PACKET_LOSS_PERC(90));
122 opus_multistream_encoder_ctl(enc, OPUS_SET_BITRATE(280130));
123 {
124 static const short pcm[160] =
125 {
126 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
127 -9510, -9510, -9510, -9510, -9510, -9510, -9526, -9510, -9510,
128 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
129 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
130 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
131 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
132 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
133 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
134 -9510, -9510, -9510, -9510, -9510, 25600, -9510, -9510, -9510,
135 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
136 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
137 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
138 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
139 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
140 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
141 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
142 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
143 -9510, -9510, -9510, -9510, -9510, -9510, -9510
144 };
145 err = opus_multistream_encode(enc, pcm, 160, data, 2460);
146 opus_test_assert(err > 0);
147 }
148 opus_multistream_encoder_ctl(enc, OPUS_SET_SIGNAL(OPUS_SIGNAL_MUSIC));
149 opus_multistream_encoder_ctl(enc, OPUS_SET_VBR(0));
150 opus_multistream_encoder_ctl(enc, OPUS_SET_VBR_CONSTRAINT(1));
151 opus_multistream_encoder_ctl(enc, OPUS_SET_PREDICTION_DISABLED(1));
152 opus_multistream_encoder_ctl(enc, OPUS_SET_PHASE_INVERSION_DISABLED(0));
153 opus_multistream_encoder_ctl(enc, OPUS_SET_DTX(1));
154 opus_multistream_encoder_ctl(enc, OPUS_SET_COMPLEXITY(10));
155 opus_multistream_encoder_ctl(enc, OPUS_SET_MAX_BANDWIDTH(OPUS_BANDWIDTH_FULLBAND));
156 opus_multistream_encoder_ctl(enc, OPUS_SET_BANDWIDTH(OPUS_BANDWIDTH_FULLBAND));
157 opus_multistream_encoder_ctl(enc, OPUS_SET_LSB_DEPTH(18));
158 opus_multistream_encoder_ctl(enc, OPUS_SET_INBAND_FEC(1));
159 opus_multistream_encoder_ctl(enc, OPUS_SET_PACKET_LOSS_PERC(90));
160 opus_multistream_encoder_ctl(enc, OPUS_SET_BITRATE(280130));
161 {
162 static const short pcm[160] =
163 {
164 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
165 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
166 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
167 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
168 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
169 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
170 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
171 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
172 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
173 -9510, -9494, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
174 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
175 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
176 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
177 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
178 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
179 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
180 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
181 -9510, -9510, -9510, -9510, -9510, -9510, -9510
182 };
183 err = opus_multistream_encode(enc, pcm, 160, data, 2460);
184 opus_test_assert(err > 0);
185 }
186 opus_multistream_encoder_ctl(enc, OPUS_SET_SIGNAL(OPUS_SIGNAL_MUSIC));
187 opus_multistream_encoder_ctl(enc, OPUS_SET_VBR(0));
188 opus_multistream_encoder_ctl(enc, OPUS_SET_VBR_CONSTRAINT(1));
189 opus_multistream_encoder_ctl(enc, OPUS_SET_PREDICTION_DISABLED(1));
190 opus_multistream_encoder_ctl(enc, OPUS_SET_PHASE_INVERSION_DISABLED(0));
191 opus_multistream_encoder_ctl(enc, OPUS_SET_DTX(1));
192 opus_multistream_encoder_ctl(enc, OPUS_SET_COMPLEXITY(10));
193 opus_multistream_encoder_ctl(enc, OPUS_SET_MAX_BANDWIDTH(OPUS_BANDWIDTH_FULLBAND));
194 opus_multistream_encoder_ctl(enc, OPUS_SET_BANDWIDTH(OPUS_BANDWIDTH_FULLBAND));
195 opus_multistream_encoder_ctl(enc, OPUS_SET_LSB_DEPTH(18));
196 opus_multistream_encoder_ctl(enc, OPUS_SET_INBAND_FEC(1));
197 opus_multistream_encoder_ctl(enc, OPUS_SET_PACKET_LOSS_PERC(90));
198 opus_multistream_encoder_ctl(enc, OPUS_SET_BITRATE(280130));
199 {
200 static const short pcm[160] =
201 {
202 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
203 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
204 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
205 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
206 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
207 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
208 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
209 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
210 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
211 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
212 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
213 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
214 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
215 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
216 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9479, -9510,
217 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
218 -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510, -9510,
219 -9510, -9510, -9510, -9510, -9510, -9510, -9510
220 };
221 err = opus_multistream_encode(enc, pcm, 160, data, 2460);
222 opus_test_assert(err > 0);
223 }
224 opus_multistream_encoder_ctl(enc, OPUS_SET_SIGNAL(OPUS_SIGNAL_MUSIC));
225 opus_multistream_encoder_ctl(enc, OPUS_SET_VBR(0));
226 opus_multistream_encoder_ctl(enc, OPUS_SET_VBR_CONSTRAINT(1));
227 opus_multistream_encoder_ctl(enc, OPUS_SET_PREDICTION_DISABLED(1));
228 opus_multistream_encoder_ctl(enc, OPUS_SET_PHASE_INVERSION_DISABLED(0));
229 opus_multistream_encoder_ctl(enc, OPUS_SET_DTX(1));
230 opus_multistream_encoder_ctl(enc, OPUS_SET_COMPLEXITY(10));
231 opus_multistream_encoder_ctl(enc, OPUS_SET_MAX_BANDWIDTH(OPUS_BANDWIDTH_FULLBAND));
232 opus_multistream_encoder_ctl(enc, OPUS_SET_BANDWIDTH(OPUS_BANDWIDTH_FULLBAND));
233 opus_multistream_encoder_ctl(enc, OPUS_SET_LSB_DEPTH(18));
234 opus_multistream_encoder_ctl(enc, OPUS_SET_INBAND_FEC(1));
235 opus_multistream_encoder_ctl(enc, OPUS_SET_PACKET_LOSS_PERC(90));
236 opus_multistream_encoder_ctl(enc, OPUS_SET_BITRATE(280130));
237 {
238 static const short pcm[160] =
239 {
240 -9510, -9510, 1799, 1799, 1799, 1799, 1799, 1799, 1799,
241 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 0,
242 0, 0, 0, 0, 0, 0, 0, 0, 0,
243 0, 0, 0, 0, 0, 0, 0, 0, 0,
244 0, 0, 0, 0, 0, 0, 0, 0, 0,
245 -256, 255, 0, 0, 0, 0, 0, 0, 0,
246 0, 0, 0, 0, 0, 0, 0, 0, 0,
247 0, 0, 0, 0, 0, 0, 0, 0, 0,
248 0, 0, 0, 0, 0, 0, 0, 0, 0,
249 0, 0, 0, 0, 0, 0, 0, 0, 0,
250 0, 0, 0, 0, 0, 0, 0, 128, 0,
251 0, 0, 0, 0, 0, 0, 0, 0, 0,
252 0, 32, 0, 0, 0, 0, 0, 0, 0,
253 4352, 4, 0, 0, 0, 0, 0, 0, 0,
254 0, 0, 0, 0, 148, 0, 0, 0, 0,
255 5632
256 };
257 err = opus_multistream_encode(enc, pcm, 160, data, 2460);
258 opus_test_assert(err > 0);
259 }
260 opus_multistream_encoder_ctl(enc, OPUS_SET_SIGNAL(OPUS_SIGNAL_VOICE));
261 opus_multistream_encoder_ctl(enc, OPUS_SET_VBR(0));
262 opus_multistream_encoder_ctl(enc, OPUS_SET_VBR_CONSTRAINT(1));
263 opus_multistream_encoder_ctl(enc, OPUS_SET_PREDICTION_DISABLED(1));
264 opus_multistream_encoder_ctl(enc, OPUS_SET_PHASE_INVERSION_DISABLED(1));
265 opus_multistream_encoder_ctl(enc, OPUS_SET_DTX(1));
266 opus_multistream_encoder_ctl(enc, OPUS_SET_COMPLEXITY(0));
267 opus_multistream_encoder_ctl(enc, OPUS_SET_MAX_BANDWIDTH(OPUS_BANDWIDTH_NARROWBAND));
268 opus_multistream_encoder_ctl(enc, OPUS_SET_BANDWIDTH(OPUS_AUTO));
269 opus_multistream_encoder_ctl(enc, OPUS_SET_LSB_DEPTH(12));
270 opus_multistream_encoder_ctl(enc, OPUS_SET_INBAND_FEC(0));
271 opus_multistream_encoder_ctl(enc, OPUS_SET_PACKET_LOSS_PERC(41));
272 opus_multistream_encoder_ctl(enc, OPUS_SET_BITRATE(21425));
273 {
274 static const short pcm[40] =
275 {
276 10459, -6474, 10204, -6539, 11601, -6824, 13385, -7142, 13872,
277 -11553, 13670, -7725, 13463, -6887, 12482, -5580, 12600, -4964,
278 12480, 3254, 11741, -4210, 9741, -3155, 7558, -5468, 5431,
279 -1073, 3641, -1304, 0, -1, 343, 26, 0, 0,
280 0, 0, -256, 226
281 };
282 err = opus_multistream_encode(enc, pcm, 40, data, 2460);
283 opus_test_assert(err > 0);
284 /* returns -3 */
285 }
286 opus_multistream_encoder_destroy(enc);
287 return 0;
288 }
289
mscbr_encode_fail10(void)290 static int mscbr_encode_fail10(void)
291 {
292 OpusMSEncoder *enc;
293 int err;
294 unsigned char data[627300];
295 static const unsigned char mapping[255] =
296 {
297 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
298 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
299 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
300 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
301 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
302 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,100,101,
303 102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,
304 119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,
305 136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,
306 153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,
307 170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,
308 187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,
309 204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,
310 221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,
311 238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254
312 };
313
314 enc = opus_multistream_encoder_create(8000, 255, 254, 1, mapping,
315 OPUS_APPLICATION_RESTRICTED_LOWDELAY, &err);
316 opus_multistream_encoder_ctl(enc, OPUS_SET_SIGNAL(OPUS_SIGNAL_VOICE));
317 opus_multistream_encoder_ctl(enc, OPUS_SET_VBR(0));
318 opus_multistream_encoder_ctl(enc, OPUS_SET_VBR_CONSTRAINT(0));
319 opus_multistream_encoder_ctl(enc, OPUS_SET_PREDICTION_DISABLED(0));
320 opus_multistream_encoder_ctl(enc, OPUS_SET_FORCE_CHANNELS(2));
321 opus_multistream_encoder_ctl(enc, OPUS_SET_PHASE_INVERSION_DISABLED(1));
322 opus_multistream_encoder_ctl(enc, OPUS_SET_DTX(1));
323 opus_multistream_encoder_ctl(enc, OPUS_SET_COMPLEXITY(2));
324 opus_multistream_encoder_ctl(enc, OPUS_SET_MAX_BANDWIDTH(OPUS_BANDWIDTH_NARROWBAND));
325 opus_multistream_encoder_ctl(enc, OPUS_SET_BANDWIDTH(OPUS_AUTO));
326 opus_multistream_encoder_ctl(enc, OPUS_SET_LSB_DEPTH(14));
327 opus_multistream_encoder_ctl(enc, OPUS_SET_INBAND_FEC(0));
328 opus_multistream_encoder_ctl(enc, OPUS_SET_PACKET_LOSS_PERC(57));
329 opus_multistream_encoder_ctl(enc, OPUS_SET_BITRATE(3642675));
330 {
331 static const short pcm[20*255] =
332 {
333 0
334 };
335 err = opus_multistream_encode(enc, pcm, 20, data, 627300);
336 opus_test_assert(err > 0);
337 /* returns -1 */
338 }
339 opus_multistream_encoder_destroy(enc);
340 return 0;
341 }
342
mscbr_encode_fail(void)343 static int mscbr_encode_fail(void)
344 {
345 OpusMSEncoder *enc;
346 int err;
347 unsigned char data[472320];
348 static const unsigned char mapping[192] =
349 {
350 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
351 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
352 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
353 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
354 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
355 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,100,101,
356 102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,
357 119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,
358 136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,
359 153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,
360 170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,
361 187,188,189,190,191
362 };
363
364 enc = opus_multistream_encoder_create(8000, 192, 189, 3, mapping,
365 OPUS_APPLICATION_RESTRICTED_LOWDELAY, &err);
366 opus_multistream_encoder_ctl(enc, OPUS_SET_SIGNAL(OPUS_SIGNAL_MUSIC));
367 opus_multistream_encoder_ctl(enc, OPUS_SET_VBR(0));
368 opus_multistream_encoder_ctl(enc, OPUS_SET_VBR_CONSTRAINT(0));
369 opus_multistream_encoder_ctl(enc, OPUS_SET_PREDICTION_DISABLED(0));
370 opus_multistream_encoder_ctl(enc, OPUS_SET_FORCE_CHANNELS(OPUS_AUTO));
371 opus_multistream_encoder_ctl(enc, OPUS_SET_PHASE_INVERSION_DISABLED(0));
372 opus_multistream_encoder_ctl(enc, OPUS_SET_DTX(0));
373 opus_multistream_encoder_ctl(enc, OPUS_SET_COMPLEXITY(0));
374 opus_multistream_encoder_ctl(enc, OPUS_SET_MAX_BANDWIDTH(OPUS_BANDWIDTH_MEDIUMBAND));
375 opus_multistream_encoder_ctl(enc, OPUS_SET_BANDWIDTH(OPUS_AUTO));
376 opus_multistream_encoder_ctl(enc, OPUS_SET_LSB_DEPTH(8));
377 opus_multistream_encoder_ctl(enc, OPUS_SET_INBAND_FEC(0));
378 opus_multistream_encoder_ctl(enc, OPUS_SET_PACKET_LOSS_PERC(0));
379 opus_multistream_encoder_ctl(enc, OPUS_SET_BITRATE(15360));
380 {
381 static const short pcm[20*192] =
382 {
383 0
384 };
385 err = opus_multistream_encode(enc, pcm, 20, data, 472320);
386 opus_test_assert(err > 0);
387 /* returns -1 */
388 }
389 opus_multistream_encoder_destroy(enc);
390 return 0;
391 }
392
surround_analysis_uninit(void)393 static int surround_analysis_uninit(void)
394 {
395 OpusMSEncoder *enc;
396 int err;
397 unsigned char data[7380];
398 int streams;
399 int coupled_streams;
400 unsigned char mapping[3];
401
402 enc = opus_multistream_surround_encoder_create(24000, 3, 1, &streams,
403 &coupled_streams, mapping, OPUS_APPLICATION_AUDIO, &err);
404 opus_multistream_encoder_ctl(enc, OPUS_SET_SIGNAL(OPUS_SIGNAL_VOICE));
405 opus_multistream_encoder_ctl(enc, OPUS_SET_VBR(1));
406 opus_multistream_encoder_ctl(enc, OPUS_SET_VBR_CONSTRAINT(1));
407 opus_multistream_encoder_ctl(enc, OPUS_SET_PREDICTION_DISABLED(0));
408 opus_multistream_encoder_ctl(enc, OPUS_SET_FORCE_CHANNELS(OPUS_AUTO));
409 opus_multistream_encoder_ctl(enc, OPUS_SET_PHASE_INVERSION_DISABLED(0));
410 opus_multistream_encoder_ctl(enc, OPUS_SET_DTX(0));
411 opus_multistream_encoder_ctl(enc, OPUS_SET_COMPLEXITY(0));
412 opus_multistream_encoder_ctl(enc, OPUS_SET_MAX_BANDWIDTH(OPUS_BANDWIDTH_NARROWBAND));
413 opus_multistream_encoder_ctl(enc, OPUS_SET_BANDWIDTH(OPUS_BANDWIDTH_NARROWBAND));
414 opus_multistream_encoder_ctl(enc, OPUS_SET_LSB_DEPTH(8));
415 opus_multistream_encoder_ctl(enc, OPUS_SET_INBAND_FEC(1));
416 opus_multistream_encoder_ctl(enc, OPUS_SET_BITRATE(84315));
417 {
418 static const short pcm[960*3] =
419 {
420 -6896, 4901, -6158, 4120, -5164, 3631, -4442, 3153, -4070,
421 3349, -4577, 4474, -5541, 5058, -6701, 3881, -7933, 1863,
422 -8041, 697, -6738,-31464, 14330,-12523, 4096, -6130, 29178,
423 -250,-21252, 10467, 16907, -3359, -6644, 31965, 14607,-21544,
424 -32497, 24020, 12557,-26926,-18421, -1842, 24587, 19659, 4878,
425 10954, 23060, 8907,-10215,-16179, 31772,-11825,-15590,-23089,
426 17173,-25903,-17387, 11733, 4884, 10204,-16476,-14367, 516,
427 20453,-16898, 20967,-23813, -20, 22011,-17167, 9459, 32499,
428 -25855, -523, -3883, -390, -4206, 634, -3767, 2325, -2751,
429 3115, -2392, 2746, -2173, 2317, -1147, 2326, 23142, 11314,
430 -15350,-24529, 3026, 6146, 2150, 2476, 1105, -830, 1775,
431 -3425, 3674,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
432 4293,-14023, 3879,-15553, 3158,-16161, 2629, 18433,-12535,
433 -6645,-20735,-32763,-13824,-20992, 25859, 13052, -8731, 2292,
434 -3860, 24049, 10225,-19220, 10478,-22294, 22773, 28137, 13816,
435 30953,-25863,-24598, 16888,-14612,-28942, 20974,-27397,-18944,
436 -18690, 20991,-16638, 5632,-14330, 28911,-25594, 17408, 29958,
437 -517,-20984, -1800, 11281, 9977,-21221,-14854, 23840, -9477,
438 3362,-12805,-22493, 32507, 156, 16384, -1163, 2301, -1874,
439 4600, -1748, 6950, 16557, 8192, -7372, -1033, -3278, 2806,
440 20275, 3317, -717, 9792, -767, 9099, -613, 8362, 5027,
441 7774, 2597, 8549, 5278, 8743, 9343, 6940, 13038, 4826,
442 14086, 2964, 13215, 1355, 11596, 455, 9850, -519, 10680,
443 -2287, 12551, -3736, 13639, -4291, 13790, -2722, 14544, -866,
444 15050, -304, 22833, -1196, 13520, -2063, 13051, -2317, 13066,
445 -2737, 13773, -2664, 14105, -3447, 13854, 24589, 24672, -5280,
446 10388, -4933, 7543, -4149, 3654, -1552, 1726, 661, 57,
447 2922, -751, 3917, 8419, 3840, -5218, 3435, 5540, -1073,
448 4153, -6656, 1649, -769, -7276,-13072, 6380, -7948, 20717,
449 18425, 17392, 14335,-18190, -1842, 24587, 19659, 11790, 10954,
450 23060, 8907,-10215,-16179, 31772,-11825,-15590,-23101, 17173,
451 -25903,-17387, 11733, 4884, 10192,-16627,-14367, 516, 20453,
452 -16898, 20967,-23813, -20, 22011,-17167, 9468, 32499,-25607,
453 -523, -3883, -390, -4206, 634, -3767, 2325, -2751, 3115,
454 -2392, 2746, -2161, 2317, -1147, 2326, 23142, 11314,-15350,
455 -29137, 3026,-15056, -491,-15170, -386,-16015, -641,-16505,
456 -930,-16206, -717,-16175, -2839,-16374, -4558,-16237, -5207,
457 -15903, -6421, 6373, -1403, 5431, -1073, 3641, -1304, -4495,
458 -769, -7276, 2856, -7870, 3314, -8730, 3964,-10183, 4011,
459 -11135, 3421,-11727, 2966,-12360, 2818,-13472, 3660,-13805,
460 5162,-13478, 6434,-12840, 7335,-12420, 6865,-12349, 5541,
461 -11965, 5530,-10820, 5132, -9197, 3367, -7745, 1223, -6910,
462 -433, -6211, -1711, -4958, -1025, -3755, -836, -3292, -1666,
463 -2661,-10755, 31472,-27906, 31471, 18690, 5617, 16649, 11253,
464 -22516,-17674,-31990, 3575,-31479, 5883, 26121, 12890, -6612,
465 12228,-11634, 523, 26136,-21496, 20745,-15868, -4100,-24826,
466 23282, 22798, 491, -1774, 15075,-27373,-13094, 6417,-29487,
467 14608, 10185, 16143, 22211, -8436, 4288, -8694, 2375, 3023,
468 486, 1455, 128, 202, 942, -923, 2068, -1233, -717,
469 -1042, -2167, 32255, -4632, 310, -4458, -3639, -5258, 2106,
470 -6857, 2681, -7497, 2765, -6601, 1945, -5219, 19154, -4877,
471 619, -5719, -1928, -6208, -121, 593, 188, 1558, -4152,
472 1648, 156, 1604, -3664, -6862, -2851, -5112, -3600, -3747,
473 -5081, -4428, -5592, 20974,-27397,-18944,-18690, 20991,-17406,
474 5632,-14330, 28911, 15934, 15934, 15934, 15934, 15934, 15934,
475 15934, 15934, 15934, 15934, 15934, 15934,-25594, 17408, 29958,
476 -7173,-16888, 9098, -613, 8362, 675, 7774, 2597, 8549,
477 5278, 8743, 9375, 6940, 13038, 4826, 14598, 7721,-24308,
478 -29905,-19703,-17106,-16124, -3287,-26118,-19709,-10769, 24353,
479 28648, 6946, -1363, 12485, -1187, 26074,-25055, 10004,-24798,
480 7204, -4581, -9678, 1554, 10553, 3102, 12193, 2443, 11955,
481 1213, 10689, -1293, 921, -4173, 10709, -6049, 8815, -7128,
482 8147, -8308, 6847, -2977, 4920,-11447,-22426,-11794, 3514,
483 -10220, 3430, -7993, 1926, -7072, 327, -7569, -608, -7605,
484 3695, -6271, -1579, -4877, -1419, -3103, -2197, 128, -3904,
485 3760, -5401, 4906, -6051, 4250, -6272, 3492, -6343, 3197,
486 -6397, 4041, -6341, 6255, -6381, 7905, 16504, 0, -6144,
487 8062, -5606, 8622, -5555, -9, -1, 7423, 0, 1,
488 238, 5148, 1309, 4700, 2218, 4403, 2573, 3568, 28303,
489 1758, 3454, -1247, 3434, -4912, 2862, -7844, 1718,-10095,
490 369,-12631, 128, -3904, 3632, -5401, 4906, -6051, 4250,
491 -6272, 3492, -6343, 3197, -6397, 4041, -6341, 6255, -6381,
492 7905, 16504, 0, -6144, 8062, -5606, 8622, -5555, 8439,
493 -3382, 7398, -1170, 6132, 238, 5148, 1309, 4700, 2218,
494 4403, 2573, 3568, 2703, 1758, 3454, -1247, 3434, -4912,
495 2862, -7844, 1718,-10095, 369,-12631, -259,-14632, 234,
496 -15056, -521,-15170, -386,-16015, -641,-16505, -930,-16206,
497 -1209,-16146, -2839,-16374, -4558,-16218, -5207,-15903, -6421,
498 -15615, -6925,-14871, -6149,-13759, -5233,-12844, 18313, -4357,
499 -5696, 2804, 12992,-22802, -6720, -9770, -7088, -8998, 14330,
500 -12523, 14843, -6130, 29178, -250,-27396, 10467, 16907, -3359,
501 -6644, 31965, 14607,-21544,-32497, 24020, 12557,-26926, -173,
502 -129, -6401, -130,-25089, -3841, -4916, -3048, 224, -237,
503 -3969, -189, -3529, -535, -3464,-14863,-14907,-14907,-14907,
504 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
505 -14907,-14395,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
506 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
507 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
508 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
509 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
510 -14907,-14907, 0, 32512,-14907,-14907,-14907,-14907,-14907,
511 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
512 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
513 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
514 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
515 -14907,-14907,-14907,-14907,-14907, 9925, -718, 9753, -767,
516 9099, -613, 8362, 675, 7774, 2597, 8549, 5278, 8743,
517 9375, 6940, 13038, 4826, 14598, 7721,-24308,-29905,-19703,
518 -17106,-16124, -3287,-26118,-19709, 0, 24353, 28648, 10274,
519 -11292,-29665,-16417, 24346, 14553, 18707, 26323, -4596,-17711,
520 5133, 26328, 13,-31168, 24583, 18404,-28927,-24350, 19453,
521 28642, 1019,-10777, -3079, 30188, -7686, 27635,-32521,-16384,
522 12528, -6386, 10986, 23827,-25880,-32752,-23321, 14605, 32231,
523 780,-13849, 15119, 28647, 4888, -7705, 30750, 64, 0,
524 32488, 6687,-20758, 19745, -2070,-13792, -6414, 28188, -2821,
525 -4585, 7168, 7444, 23557,-21998, 13064, 3345, -4086,-28915,
526 -8694, 32262, 8461, 27387,-12275, 12012, 23563,-18719,-28410,
527 29144,-22271, -562, -9986, -5434, 12288, 5573,-16642, 32448,
528 29182, 32705,-30723, 24255,-19716, 18368, -4357, -5696, 2804,
529 12992,-22802,-22080, -7701, -5183, 486, -3133, -5660, -1083,
530 16871,-28726,-11029,-30259, -1209,-16146, -2839,-16374, -4558,
531 -16218,-10523, 20697, -9500, -1316, 5431, -1073, 3641, -1304,
532 1649, -769, -7276, 2856, -7870, 3314, -8730, 3964,-10183,
533 4011,-11135, 3421,-11727, 21398, 32767, -1, 32486, -1,
534 6301,-13071, 6380, -7948, -1, 32767, 240, 14081, -5646,
535 30973, -3598,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
536 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
537 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
538 -14907,-14907,-14907,-14907, 32767,-14907,-14907,-14907,-14907,
539 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
540 -14907, 8901, 9375, 6940, 13038, 4826, 14598, 7721,-24308,
541 -29905,-19703,-17106,-16124, -3287,-26118,-19709,-10769, 24361,
542 28648, 10274,-11292,-29665,-16417, 24346, 14580, 18707, 26323,
543 -4440,-17711, 5133, 26328,-14579,-31008, 24583, 18404, 28417,
544 -24350, 19453, 28642,-32513,-10777, -3079, 30188, -7686, 27635,
545 -32521,-16384,-20240, -6386, 10986, 23827,-25880,-32752,-23321,
546 14605, 32231, 780,-13849, 15119, 28647, 4888, -7705,-15074,
547 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
548 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
549 -14907,-14907,-14907, 8192,-14907,-14907,-14907,-14907,-14907,
550 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
551 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
552 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
553 -14907,-14907,-14907,-14897,-14907,-14907,-14907,-14907,-14907,
554 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
555 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
556 -15931,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
557 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
558 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
559 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
560 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
561 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
562 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
563 -14907,-14907,-14907,-14907,-14907,-14907, 26121, 12890, 2604,
564 12228,-11634, 12299, 5573,-16642, 32452, 29182, 32705,-30723,
565 24255,-19716, 13248,-11779, -5696, 2804, 12992,-27666,-22080,
566 -7701, -5183, -6682,-31464, 14330,-12523, 14843, -6130, 29178,
567 -18,-27396, 10467, 16907, -3359, -6644, 31965, 14607,-21544,
568 -32497, 24020, 12557,-26926,-18421, 706, 24587, 19659, 4878,
569 10954, 23060, 8907,-10215,-22579, 31772,-11825,-15590,-23089,
570 17173,-25903,-17387, 3285, 4884, 10204,-16627,-14367, 516,
571 20453,-16898, 20967,-23815, -20, 22011,-17167, 9468, 32499,
572 -25607, -523, -3883, -390, -4206, 634, -3767, 2325, -2751,
573 3115, -2392, 2746, -2173, 2317, -1147, 2326, 23142, 11314,
574 -15130,-29137, 3026, 6146, 2150, 2476, 1105, -830, 1775,
575 -3425, 3674, -5287, 4609, -7175, 4922, -9579, 4556,-12007,
576 4236,-14023, 3879,-15553, 3158,-16161, 2576, 18398,-12535,
577 -6645,-20735,-32763,-13824,-20992, 25859, 5372, 12040, 13307,
578 -4355,-30213, -9, -6019, 14061,-31487,-13842, 30449, 15083,
579 14088, 31205,-18678,-12830, 14090,-26138,-25337,-11541, -3254,
580 27628,-22270, 30953,-16136,-30745, 20991,-17406, 5632,-14330,
581 28911,-25594, 17408,-20474, 13041, -8731, 2292, -3860, 24049,
582 10225,-19220, 10478, -4374, -1199, 148, -330, -74, 593,
583 188, 1558, -4152, 15984, 15934, 15934, 15934, 15934, 15934,
584 15934, 15934, 15934, 15934, 15934, 15934, 1598, 156, 1604,
585 -1163, 2278,-30018,-25821,-21763,-23776, 24066, 9502, 25866,
586 -25055, 10004,-24798, 7204, -4581, -9678, 1554, 10553, 3102,
587 12193, 2443, 11955, 1213, 10689, -1293, 921, -4173, 8661,
588 -6049, 8815,-21221,-14854, 23840, -9477, 8549, 5278, 8743,
589 9375, 6940, 13038, 4826, 14598, 7721,-24308,-29905,-19703,
590 -17106,-16124, -3287,-26118,-19709,-10769, 24361, 28648, 10274,
591 -11292,-29665,-16417, 24346, 14580, 18707, 26323, -4410,-17711,
592 5133, 26328,-14579,-31008, 24583, 18404, 28417,-24350, 19453,
593 28642,-32513,-10777, -3079, 30188, -7686, 27635,-32521,-16384,
594 -20240, -6386, 10986, 23827,-25880,-32752,-23321, 14605, 32231,
595 780,-13849, 15119, 28647, 4888, -7705, 30750, 64, 0,
596 32488, 6687,-20758, 19745, -2070, -1, -1, 28, 256,
597 -4608, 7168, 7444, 23557,-21998, 13064, 3345, -4086,-28915,
598 -8594, 32262, 8461, 27387,-12275, 12012, 23563,-18719,-28410,
599 29144,-22271,-32562,-16384, 12528, -6386, 10986, 23827,-25880,
600 -32752,-23321, 14605, 32231, 780,-13849, 15119, 28647, 4888,
601 -7705, 30750, 64, 0, 32488, 6687,-20758, 19745, -2070,
602 -13792, -6414, 28188, -2821, -4585, 7168, 7444, 23557,-21998,
603 13064, 3345, -4086,-28915, -8694, 32262, 8461, 27387,-12275,
604 12012, 23563,-18719,-28410, 29144,-22271, -562, -9986, -5434,
605 12288, -2107,-16643, 32452, 29182, 32705,-30723, 24255,-19716,
606 18368, -4357, -5696, 2804, 12992,-22802,-22080, -7701, -5183,
607 486, -3133, -5660, -1083, 16871,-28726,-11029,-30259, -1209,
608 -16146, -2839,-16374, -4558,-16218,-10523, 20697, -9500, -1316,
609 5431, -1073, 3641, -1304, 1649, -769, -7276, 2856, -7870,
610 3314, -8730, 3964,-10183, 4011,-11135, 3421,-11727, 21398,
611 32767, -1, 32486, -1, -99,-13072, 6380, -7948, 4864,
612 32767, 17392, 14335, -5646, 30973, -3598,-10299,-14907,-14907,
613 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
614 -14907,-14907,-14905,-14907,-14907,-14907,-14907,-14907,-14907,
615 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
616 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
617 -14907,-14907,-14907,-14907,-14907,-19771,-14907,-14907,-14907,
618 -14907,-14907,-14907,-14907,-14907,-16443,-14907,-14907,-14907,
619 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
620 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
621 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
622 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
623 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
624 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
625 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
626 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
627 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
628 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
629 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
630 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
631 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
632 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
633 -14907,-14907,-14907,-14907,-15931,-14907,-14907,-14907,-14907,
634 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
635 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
636 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
637 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
638 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
639 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
640 -14907,-14907,-14907,-14907,-14907,-14907, -1,-14907,-14907,
641 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
642 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
643 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
644 -14907,-14907, 7877, 7710, 7710, 7710, 7710, 7710, 7710,
645 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
646 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
647 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
648 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
649 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
650 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
651 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
652 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
653 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
654 7710, 7710, 7710, 7710, 7710, -994, -7276, 2856, -7870,
655 3314, -8730, 3964,-10183, 4011,-11135, 3421,-11727, 21398,
656 32767, -1, 32486, -1, -99,-13072, 6380, -7948, 4864,
657 32767, 17392, 14335, -5646, 30973, -3598,-14907,-14907,-14907,
658 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
659 -14907,-14907,-14905,-14907,-14907,-14907,-14907,-14907,-14907,
660 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
661 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
662 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
663 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
664 -14907,-14907, 197, 0,-14977,-14907,-14907,-14907,-14907,
665 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
666 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
667 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
668 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
669 -14907,-14907,-14907,-14907,-14907,-14907, 12838, 6653, 294,
670 -29699,-25821,-21763,-23776, 24066, 9502, 25866,-25055, 10004,
671 -24798, 7204, -4581, -9678, 1554, 10553, 3102, 12193, 2443,
672 11955, 1213, 10689, -1293, 921, 179, 8448, -6049, 8815,
673 -7128, 8147, -8308, 6847, -9889, 4920,-11447, 3174,-11794,
674 3514,-10220, 3430, 16384, 1926, -7072, 327, -7537, -608,
675 -7605, -1169, -6397, -1579, -4877, -1419, -3103, -2197, 128,
676 -3904, 3632, -5401, 4906, -6051, 4250, -6272, 3492, -6343,
677 3197, -6397, 4041, -6341, 6255, -6381, 7905, 16504, 0,
678 -6144, 8062, -5606, 8622, -5555, 8439, -3382, 7398, -1170,
679 6132, 238, 5148, 1309, 4700, 2218, 4403, 2573, 3568,
680 2703, 1758, 3454, -1247, 3434, -4912, 2862, -7844, 1718,
681 -10095, 369,-12631, -259,-14632, 234,-15056, -491,-16194,
682 -386,-16015, -641,-16505, -930,-16206, -1209,-16146, -2839,
683 -16374, -4558,-16218, -5207,-15903, -6421,-15615, -6925,-14871,
684 -6149,-13759, -5233,-12844, 18313, -4357, -5696, 2804, 12992,
685 -22802, -6720, -9770, -7088, -8998, 14330,-12523, 14843, -6130,
686 29178, -250,-27396, 10467, 16907, -3359, -6644, 31965, 14607,
687 -21544,-32497, 24020, 12557,-26926, -173, -129, -6401, -130,
688 -25089, -3816, -4916, -3048, -32, -1, -3969, 256, -3529,
689 -535, -3464,-14863,-14907,-14907,-14907,-14907,-14907,-14907,
690 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
691 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
692 -1209,-16146, -2839,-16374, -4558,-16218,-10523, 20697, -9500,
693 -1316, 5431, -1073, 3641, -1304, 1649, -769, -7276, 2856,
694 -7870, 3314, -8730, 3964,-10183, 4011,-11135, 3421,-11727,
695 21398, 32767, -1, 32486, -1, 6301,-13071, 6380, -7948,
696 -1, 32767, 240, 14081, -5646, 30973, -3598,-14907,-14907,
697 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
698 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
699 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
700 32767,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
701 -14907,-14907,-14907,-14907,-14907,-14907, 8901, 9375, 6940,
702 13038, 4826, 14598, 7721,-24308,-29905,-19703,-17106,-16124,
703 -3287,-26118,-19709,-10769, 24361, 28648, 10274,-11292,-29665,
704 -16417, 24346, 14580, 18707, 26323, -4440,-17711, 5133, 26328,
705 -14579,-31008, 24583, 18404, 28417,-24350, 19453, 28642,-32513,
706 -10777, -3079, 30188, -7686, 27635,-32521,-16384,-20240, -6386,
707 10986, 23827,-25880,-32752,-23321, 14605, 32231, 780,-13849,
708 15119, 28647, 4888, -7705,-15074,-14907,-14907,-14907,-14907,
709 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
710 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907, 8192,
711 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
712 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
713 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
714 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14897,
715 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
716 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
717 -14907,-14907,-14907,-14907,-14907,-15931,-14907,-14907,-14907,
718 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
719 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
720 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
721 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
722 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
723 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
724 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
725 -14907,-14907, 26121, 12890, 2604, 12228,-11634, 12299, 5573,
726 -16642, 32452, 29182, 32705,-30723, 24255,-19716, 13248,-11779,
727 -5696, 2804, 12992,-27666,-22080, -7701, -5183, -6682,-31464,
728 14330,-12523, 14843, -6130, 29178, -18,-27396, 10467, 16907,
729 -3359, -6644, 31965, 14607,-21544,-32497, 24020, 12557,-26926,
730 -18421, 706, 24587, 19659, 4878, 10954, 23060, 8907,-10215,
731 -22579, 31772,-11825,-15590,-23089, 17173,-25903,-17387, 3285,
732 4884, 10204,-16627,-14367, 516, 20453,-16898, 20967,-23815,
733 -20, 22011,-17167, 9468, 32499,-25607, -523, -3883, -390,
734 -4206, 634, -3767, 2325, -2751, 3115, -2392, 2746, -2173,
735 2317, -1147, 2326, 23142, 11314,-15130,-29137, 3026, 6146,
736 2150, 2476, 1105, -830, 1775, -3425, 3674, -5287, 4609,
737 -7175, 4922, -9579, 4556,-12007, 4236,-14023, 3879,-15553,
738 3158,-16161, 2576, 18398,-12535, -6645,-20735,-32763,-13824,
739 -20992, 25859, 5372, 12040, 13307, -4355,-30213, -9, -6019
740 };
741 err = opus_multistream_encode(enc, pcm, 960, data, 7380);
742 opus_test_assert(err > 0);
743 }
744 opus_multistream_encoder_ctl(enc, OPUS_SET_SIGNAL(OPUS_SIGNAL_MUSIC));
745 opus_multistream_encoder_ctl(enc, OPUS_SET_VBR(1));
746 opus_multistream_encoder_ctl(enc, OPUS_SET_VBR_CONSTRAINT(0));
747 opus_multistream_encoder_ctl(enc, OPUS_SET_PREDICTION_DISABLED(1));
748 opus_multistream_encoder_ctl(enc, OPUS_SET_FORCE_CHANNELS(OPUS_AUTO));
749 opus_multistream_encoder_ctl(enc, OPUS_SET_PHASE_INVERSION_DISABLED(1));
750 opus_multistream_encoder_ctl(enc, OPUS_SET_DTX(1));
751 opus_multistream_encoder_ctl(enc, OPUS_SET_COMPLEXITY(6));
752 opus_multistream_encoder_ctl(enc, OPUS_SET_MAX_BANDWIDTH(OPUS_BANDWIDTH_NARROWBAND));
753 opus_multistream_encoder_ctl(enc, OPUS_SET_BANDWIDTH(OPUS_AUTO));
754 opus_multistream_encoder_ctl(enc, OPUS_SET_LSB_DEPTH(9));
755 opus_multistream_encoder_ctl(enc, OPUS_SET_INBAND_FEC(1));
756 opus_multistream_encoder_ctl(enc, OPUS_SET_PACKET_LOSS_PERC(5));
757 opus_multistream_encoder_ctl(enc, OPUS_SET_BITRATE(775410));
758 {
759 static const short pcm[1440*3] =
760 {
761 30449, 15083, 14088, 31205,-18678,-12830, 14090,-26138,-25337,
762 -11541, -3254, 27628,-22270, 30953,-16136,-30745, 20991,-17406,
763 5632,-14330, 28911,-25594, 17408,-20474, 13041, -8731, 2292,
764 -3860, 24049, 10225,-19220, 10478, -4374, -1199, 148, -330,
765 -74, 593, 188, 1558, -4152, 15984, 15934, 15934, 15934,
766 15934, 15934, 15934, 15934, 15934, 15934, 15934, 15934, 1598,
767 156, 1604, -1163, 2278,-30018,-25821,-21763,-23776, 24066,
768 9502, 25866,-25055, 10004,-24798, 7204, -4581, -9678, 1554,
769 10553, 3102, 12193, 2443, 11955, 1213, 10689, -1293, 921,
770 -4173, 8661, -6049, 8815,-21221,-14854, 23840, -9477, 8549,
771 5278, 8743, 9375, 6940, 13038, 4826, 14598, 7721,-24308,
772 -29905,-19703,-17106,-16124, -3287,-26118,-19709,-10769, 24361,
773 28648, 10274,-11292,-29665,-16417, 24346, 14580, 18707, 26323,
774 -4410,-17711, 5133, 26328,-14579,-31008, 24583, 18404, 28417,
775 -24350, 19453, 28642,-32513,-10777, -3079, 30188, -7686, 27635,
776 -32521,-16384,-20240, -6386, 10986, 23827,-25880,-32752,-23321,
777 14605, 32231, 780,-13849, 15119, 28647, 4888, -7705, 30750,
778 64, 0, 32488, 6687,-20758, 19745, -2070, -1, -1,
779 28, 256, -4608, 7168, 7444, 23557,-21998, 13064, 3345,
780 -4086,-28915, -8594, 32262, 8461, 27387,-12275, 12012, 23563,
781 -18719,-28410, 29144,-22271,-32562,-16384, 12528, -6386, 10986,
782 23827,-25880,-32752,-23321, 14605, 32231, 780,-13849, 15119,
783 28647, 4888, -7705, 30750, 64, 0, 32488, 6687,-20758,
784 19745, -2070,-13792, -6414, 28188, -2821, -4585, 7168, 7444,
785 23557,-21998, 13064, 3345, -4086,-28915, -8694, 32262, 8461,
786 -14853,-14907,-14907,-14907,-14907, 32767,-14907,-14907,-14907,
787 -14907,-14907,-14907,-14907,-14907,-14891,-14907,-14907,-14907,
788 -14907,-14907, 8901, 9375, 6940, 13038, 4826, 14598, 7721,
789 -24308,-29905,-19703,-17106,-16124, -3287,-26118,-19709,-10769,
790 24361, 28648, 10274,-11292,-29665,-16417, 24346, 14580, 18707,
791 26323, -4440,-17711, 5133, 26328,-14579,-31008, 24583, 18404,
792 28417,-24350, 19453, 28642,-32513,-10777, -3079, 30188, -7686,
793 27635,-32521,-16384,-20240, -6386, 10986, 23827,-25880,-32752,
794 -23321, 14605, 32231, 780,-13849, 15119, 28647, 4888, -7705,
795 -15074,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
796 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
797 -14907,-14907,-14907,-14907, 8192,-14907,-14907,-14907,-14907,
798 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
799 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
800 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
801 -14907,-14907,-14907,-14907,-14897,-14907,-14907,-14907,-14907,
802 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
803 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
804 -14907,-15931,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
805 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
806 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
807 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
808 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
809 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
810 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
811 -14907,-14907,-14907,-14907,-14907,-14907,-14907, 26121, 12890,
812 2604, 12228,-11634, 12299, 5573,-16642, 32452, 29182, 7710,
813 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
814 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
815 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
816 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
817 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
818 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
819 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
820 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
821 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
822 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
823 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
824 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
825 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
826 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
827 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
828 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
829 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
830 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
831 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
832 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
833 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
834 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
835 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
836 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710, 7710,
837 7710,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
838 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
839 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
840 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
841 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
842 -14907,-14907,-14907,-14907,-14907,-14907,-10811,-14907,-14907,
843 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
844 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
845 -14907,-14907,-14917,-14907,-14907,-14907,-14907,-14907,-14907,
846 -14907,-14907,-14907,-14907,-14907,-14907,-14938,-14907,-14907,
847 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
848 -14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,-14907,
849 -14907,-14907,-14907,-14907, -571, -9986, -58, 12542,-18491,
850 32507, 12838, 6653, 294, -1, 0,-19968, 18368, -4357,
851 -5696, 2804, 12998,-22802,-22080, -7701, -5183, 486, -3133,
852 -5660, -1083, 13799,-28726,-11029, 205,-14848, 32464, -1,
853 -129,-13072, 6380, -7948, 20717, 18425, 17392, 14335, -5646,
854 30973, -3598, 7188, -3867, 3055, -4247, 5597, -4011,-26427,
855 -11,-30418, 7922, 2614, 237, -5839,-27413,-17624,-29716,
856 -13539, 239, 20991, 18164, -4082,-16647,-27386, 19458, 20224,
857 4619, 19728, -7409,-18186,-25073, 27627,-23539, -7945,-31464,
858 14330,-12523,-22021, -7701, -5183, 486, -3133, -5660, -1083,
859 13799,-28726,-11029, 205,-14848, 32464, -1, -129,-13072,
860 6380, -7948, 20717, 18425, 17392, 14093, -5646, 30973, -3598,
861 7188, -3867, 3055, 3689, -5401, 4906, -6051, 4250, -6272,
862 3492, -6343, 3197, -6397, 4041, -6341, 6255, -6381, 239,
863 20991, 18164, -4082,-16647,-27386, 19458, 20224, 4619, 19728,
864 -7409,-18186,-25073, 27627,-23539, -7945,-31464, 14330,-12523,
865 14843, -6130, 30202, -250,-28420, 10467, 16907, -3359, -6644,
866 31965, 3343,-11727, 2966,-12616, 3064,-13472, 6732,-12349,
867 5541,-11965, 5530,-10820, -1912, -3637, 32285, -4607, 310,
868 -32768, 0, -5258, 2106, -6857, 2681, -5449, -3606, -6717,
869 -5482, -3606, -1853, 4082, -7631, -9808, -1742, -2851, -5112,
870 64, -868,-13546,-13365,-13365,-13365,-13365,-13365,-13365,
871 -13365,-13365,-13365,-13365,-13365,-13365,-13365,-13365,-13365,
872 -13365,-13365,-13365,-13365,-13365,-13365,-13365,-13365,-13365,
873 -13365,-13365,-13365,-13365,-13365,-13365,-13365,-13365,-13365,
874 -13365,-13365,-13365,-13365,-13365,-13365,-13365, 7883, -2316,
875 9086, -3944, 10500, 4285, 10459, -6474, 10204, -6539, 11601,
876 -6824, 13385, -7142, 13872, -7457, 13670, -7725, 13463, -6887,
877 12482, -5580, 12600, -4964, 12480, 3254, 11741, -4210,-24819,
878 23282, 22798, 491, -1774, -1073, 3641, -1304, 28928, -250,
879 -27396, 6657, -8961, 22524, 19987, 10231, 1791, 8947,-32763,
880 -26385,-31227, -792,-30461, 8926, 4866, 27863, 27756, 27756,
881 27756, 27756, 27756, 27756, 27756, 27756, 5630,-11070,-16136,
882 20671,-11530, 27328, 8179, 5059,-31503,-24379,-19472, 17863,
883 -29202, 22986, -23, 8909, 8422, 10450
884 };
885 err = opus_multistream_encode(enc, pcm, 1440, data, 7380);
886 /* reads uninitialized data at src/opus_multistream_encoder.c:293 */
887 opus_test_assert(err > 0);
888 }
889 opus_multistream_encoder_destroy(enc);
890 return 0;
891 }
892
ec_enc_shrink_assert(void)893 static int ec_enc_shrink_assert(void)
894 {
895 OpusEncoder *enc;
896 int err;
897 int data_len;
898 unsigned char data[2000];
899 static const short pcm1[960] = { 5140 };
900 static const short pcm2[2880] =
901 {
902 -256,-12033, 0, -2817, 6912, 0, -5359, 5200, 3061,
903 0, -2903, 5652, -1281,-24656,-14433,-24678, 32,-29793,
904 2870, 0, 4096, 5120, 5140, -234,-20230,-24673,-24633,
905 -24673,-24705, 0,-32768,-25444,-25444, 0,-25444,-25444,
906 156,-20480, -7948, -5920, -7968, -7968, 224, 0, 20480,
907 11, 20496, 13, 20496, 11,-20480, 2292,-20240, 244,
908 20480, 11, 20496, 11,-20480, 244,-20240, 7156, 20456,
909 -246,-20243, 244, 128, 244, 20480, 11, 20496, 11,
910 -20480, 244,-20256, 244, 20480, 256, 0, -246, 16609,
911 -176, 0, 29872, -4096, -2888, 516, 2896, 4096, 2896,
912 -20480, -3852, -2896, -1025,-31056,-14433, 244, 1792, -256,
913 -12033, 0, -2817, 0, 0, -5359, 5200, 3061, 16,
914 -2903, 5652, -1281,-24656,-14433,-24678, 32,-29793, 2870,
915 0, 4096, 5120, 5140, -234,-20230,-24673,-24633,-24673,
916 -24705, 0,-32768,-25444,-25444, 0,-25444,-25444, 156,
917 -20480, -7973, -5920, -7968, -7968, 224, 0, 20480, 11,
918 20496, 11, 20496, 11,-20480, 2292,-20213, 244, 20480,
919 11, 20496, 11,-24698, -2873, 0, 7, -1, 208,
920 -256, 244, 0, 4352, 20715, -2796, 11,-22272, 5364,
921 -234,-20230,-24673,-25913, 8351,-24832, 13963, 11, 0,
922 16, 5140, 5652, -1281,-24656,-14433,-24673, 32671, 159,
923 0,-25472,-25444, 156,-25600,-25444,-25444, 0, -2896,
924 -7968, -7960, -7968, -7968, 0, 0, 2896, 4096, 2896,
925 4096, 2896, 0, -2896, -4088, -2896, 0, 2896, 0,
926 -2896, -4096, -2896, 11, 2640, -4609, -2896,-32768, -3072,
927 0, 2896, 4096, 2896, 0, -2896, -4096, -2896, 0,
928 80, 1, 2816, 0, 20656, 255,-20480, 116,-18192
929 };
930 static const short pcm3[2880] = { 0 };
931
932 enc = opus_encoder_create(48000, 1, OPUS_APPLICATION_AUDIO, &err);
933 opus_encoder_ctl(enc, OPUS_SET_COMPLEXITY(10));
934 opus_encoder_ctl(enc, OPUS_SET_PACKET_LOSS_PERC(6));
935 opus_encoder_ctl(enc, OPUS_SET_BITRATE(6000));
936 data_len = opus_encode(enc, pcm1, 960, data, 2000);
937 opus_test_assert(data_len > 0);
938
939 opus_encoder_ctl(enc, OPUS_SET_SIGNAL(OPUS_SIGNAL_VOICE));
940 opus_encoder_ctl(enc, OPUS_SET_PREDICTION_DISABLED(1));
941 opus_encoder_ctl(enc, OPUS_SET_BANDWIDTH(OPUS_BANDWIDTH_SUPERWIDEBAND));
942 opus_encoder_ctl(enc, OPUS_SET_INBAND_FEC(1));
943 opus_encoder_ctl(enc, OPUS_SET_BITRATE(15600));
944 data_len = opus_encode(enc, pcm2, 2880, data, 122);
945 opus_test_assert(data_len > 0);
946
947 opus_encoder_ctl(enc, OPUS_SET_SIGNAL(OPUS_SIGNAL_MUSIC));
948 opus_encoder_ctl(enc, OPUS_SET_BITRATE(27000));
949 data_len = opus_encode(enc, pcm3, 2880, data, 122); /* assertion failure */
950 opus_test_assert(data_len > 0);
951
952 opus_encoder_destroy(enc);
953 return 0;
954 }
955
ec_enc_shrink_assert2(void)956 static int ec_enc_shrink_assert2(void)
957 {
958 OpusEncoder *enc;
959 int err;
960 int data_len;
961 unsigned char data[2000];
962
963 enc = opus_encoder_create(48000, 1, OPUS_APPLICATION_AUDIO, &err);
964 opus_encoder_ctl(enc, OPUS_SET_COMPLEXITY(6));
965 opus_encoder_ctl(enc, OPUS_SET_SIGNAL(OPUS_SIGNAL_VOICE));
966 opus_encoder_ctl(enc, OPUS_SET_BANDWIDTH(OPUS_BANDWIDTH_FULLBAND));
967 opus_encoder_ctl(enc, OPUS_SET_PACKET_LOSS_PERC(26));
968 opus_encoder_ctl(enc, OPUS_SET_BITRATE(27000));
969 {
970 static const short pcm[960] = { 0 };
971 data_len = opus_encode(enc, pcm, 960, data, 2000);
972 opus_test_assert(data_len > 0);
973 }
974 opus_encoder_ctl(enc, OPUS_SET_SIGNAL(OPUS_SIGNAL_MUSIC));
975 {
976 static const short pcm[480] =
977 {
978 32767, 32767, 0, 0, 32767, 32767, 0, 0, 32767, 32767,
979 -32768, -32768, 0, 0, -32768, -32768, 0, 0, -32768, -32768
980 };
981 data_len = opus_encode(enc, pcm, 480, data, 19);
982 opus_test_assert(data_len > 0);
983 }
984 opus_encoder_destroy(enc);
985 return 0;
986 }
987
silk_gain_assert(void)988 static int silk_gain_assert(void)
989 {
990 OpusEncoder *enc;
991 int err;
992 int data_len;
993 unsigned char data[1000];
994 static const short pcm1[160] = { 0 };
995 static const short pcm2[960] =
996 {
997 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
998 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
999 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1000 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1001 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1002 32767, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1003 0, 0, 0, 0, 32767
1004 };
1005
1006 enc = opus_encoder_create(8000, 1, OPUS_APPLICATION_AUDIO, &err);
1007 opus_encoder_ctl(enc, OPUS_SET_COMPLEXITY(3));
1008 opus_encoder_ctl(enc, OPUS_SET_MAX_BANDWIDTH(OPUS_BANDWIDTH_NARROWBAND));
1009 opus_encoder_ctl(enc, OPUS_SET_BITRATE(6000));
1010 data_len = opus_encode(enc, pcm1, 160, data, 1000);
1011 opus_test_assert(data_len > 0);
1012
1013 opus_encoder_ctl(enc, OPUS_SET_VBR(0));
1014 opus_encoder_ctl(enc, OPUS_SET_COMPLEXITY(0));
1015 opus_encoder_ctl(enc, OPUS_SET_MAX_BANDWIDTH(OPUS_BANDWIDTH_MEDIUMBAND));
1016 opus_encoder_ctl(enc, OPUS_SET_BITRATE(2867));
1017 data_len = opus_encode(enc, pcm2, 960, data, 1000);
1018 opus_test_assert(data_len > 0);
1019
1020 opus_encoder_destroy(enc);
1021 return 0;
1022 }
1023
regression_test(void)1024 void regression_test(void)
1025 {
1026 fprintf(stderr, "Running simple tests for bugs that have been fixed previously\n");
1027 celt_ec_internal_error();
1028 mscbr_encode_fail10();
1029 mscbr_encode_fail();
1030 surround_analysis_uninit();
1031 ec_enc_shrink_assert();
1032 ec_enc_shrink_assert2();
1033 silk_gain_assert();
1034 }
1035