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