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