opus_encode_regressions.c 63 KB

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