/OpenAL-Sample/src/mixaudio16.c

https://github.com/rpavlik/openal-svn-mirror · C · 2678 lines · 2304 code · 347 blank · 27 comment · 157 complexity · f21f226892480f0201938fd55aebe8db MD5 · raw file

  1. /* -*- mode: C; tab-width:8; c-basic-offset:8 -*-
  2. * vi:set ts=8:
  3. *
  4. * mixaudio16.c
  5. *
  6. * Where the mixing gets done.
  7. */
  8. #include "al_siteconfig.h"
  9. #include <AL/al.h>
  10. #include <string.h>
  11. #include <assert.h>
  12. #include "al_debug.h"
  13. #include "al_main.h"
  14. #include "al_types.h"
  15. #include "mixaudio16.h"
  16. #define MIN(a,b) ((a) < (b) ? (a) : (b))
  17. #define MAX(a,b) ((a) > (b) ? (a) : (b))
  18. /*
  19. * MixAudio16_n( ALshort *dst, alMixEntry *entries, ALuint numents );
  20. *
  21. * Mix a numents number of streams into dst, clamping above by max_audioval
  22. * and below by min_audioval to prevent overflow.
  23. *
  24. * FIXME: could be optimized to bisect the data until an "optimized"
  25. * MixAudio func could be used on it.
  26. */
  27. void MixAudio16_n( ALshort *dst, alMixEntry *entries, ALuint numents ) {
  28. int sample;
  29. ALuint i;
  30. int si = 0; /* source iterator */
  31. int len;
  32. if(numents == 0)
  33. {
  34. return;
  35. }
  36. len = entries[0].bytes; /* sure hope all the same */
  37. len /= sizeof(ALshort); /* len is in bytes */
  38. while(len--) {
  39. sample = 0;
  40. for(i = 0; i < numents; i++)
  41. {
  42. assert(entries[i].bytes >= si * (ALint)sizeof(ALshort));
  43. sample += ((ALshort *) entries[i].data)[si];
  44. }
  45. if(sample > max_audioval )
  46. {
  47. *dst = max_audioval;
  48. }
  49. else if(sample < min_audioval )
  50. {
  51. *dst = min_audioval;
  52. }
  53. else
  54. {
  55. *dst = sample;
  56. }
  57. dst++;
  58. si++;
  59. }
  60. return;
  61. }
  62. /*
  63. * Mixing functions.
  64. *
  65. * These are specialized functions which mix each entry in entries to
  66. * destination. They are called using a dispatch table generating by the
  67. * ALMixManager and ALMixFuncs.
  68. *
  69. * The number in the function name refers to the number of entries which the
  70. * function can handle. This number is exact, not an upperbound, so the
  71. * number of streams in entries must match the function exactly.
  72. */
  73. void MixAudio16_0(UNUSED(ALshort *dst), UNUSED(alMixEntry *entries)) {
  74. return;
  75. }
  76. void MixAudio16_1(ALshort *dst, alMixEntry *entries) {
  77. memcpy(dst, entries->data, (size_t)entries->bytes);
  78. return;
  79. }
  80. void MixAudio16_2(ALshort *dst, alMixEntry *entries) {
  81. ALshort *srcs0[2];
  82. int len;
  83. int sample;
  84. len = entries[0].bytes;
  85. len /= sizeof(ALshort);
  86. srcs0[0] = entries[0].data;
  87. srcs0[1] = entries[1].data;
  88. while(len--) {
  89. sample = *srcs0[0];
  90. sample += *srcs0[1];
  91. if(sample > max_audioval ) {
  92. *dst = max_audioval;
  93. } else if(sample < min_audioval ) {
  94. *dst = min_audioval;
  95. } else {
  96. *dst = sample;
  97. }
  98. srcs0[0]++;
  99. srcs0[1]++;
  100. dst++;
  101. }
  102. return;
  103. }
  104. void MixAudio16_3(ALshort *dst, alMixEntry *entries) {
  105. ALshort *srcs0[2];
  106. ALshort *srcs1;
  107. int len;
  108. int sample;
  109. len = entries[0].bytes;
  110. len /= sizeof(ALshort);
  111. srcs0[0] = entries[0].data;
  112. srcs0[1] = entries[1].data;
  113. srcs1 = entries[2].data;
  114. while(len--) {
  115. sample = *srcs0[0];
  116. sample += *srcs0[1];
  117. sample += *srcs1;
  118. if(sample > max_audioval ) {
  119. *dst = max_audioval;
  120. } else if(sample < min_audioval ) {
  121. *dst = min_audioval;
  122. } else {
  123. *dst = sample;
  124. }
  125. srcs0[0]++;
  126. srcs0[1]++;
  127. srcs1++;
  128. dst++;
  129. }
  130. return;
  131. }
  132. void MixAudio16_4(ALshort *dst, alMixEntry *entries) {
  133. ALshort *srcs0[2];
  134. ALshort *srcs1[2];
  135. int len;
  136. int sample;
  137. len = entries[0].bytes;
  138. len /= sizeof(ALshort);
  139. srcs0[0] = entries[0].data;
  140. srcs0[1] = entries[1].data;
  141. srcs1[0] = entries[2].data;
  142. srcs1[1] = entries[3].data;
  143. while(len--) {
  144. sample = *srcs0[0];
  145. sample += *srcs0[1];
  146. sample += *srcs1[0];
  147. sample += *srcs1[1];
  148. if(sample > max_audioval ) {
  149. *dst = max_audioval;
  150. } else if(sample < min_audioval ) {
  151. *dst = min_audioval;
  152. } else {
  153. *dst = sample;
  154. }
  155. srcs0[0]++;
  156. srcs0[1]++;
  157. srcs1[0]++;
  158. srcs1[1]++;
  159. dst++;
  160. }
  161. return;
  162. }
  163. void MixAudio16_5(ALshort *dst, alMixEntry *entries) {
  164. ALshort *srcs0[2];
  165. ALshort *srcs1[2];
  166. ALshort *srcs2;
  167. int len;
  168. int sample;
  169. len = entries[0].bytes;
  170. len /= sizeof(ALshort);
  171. srcs0[0] = entries[0].data;
  172. srcs0[1] = entries[1].data;
  173. srcs1[0] = entries[2].data;
  174. srcs1[1] = entries[3].data;
  175. srcs2 = entries[4].data;
  176. while(len--) {
  177. sample = *srcs0[0];
  178. sample += *srcs0[1];
  179. sample += *srcs1[0];
  180. sample += *srcs1[1];
  181. sample += *srcs2;
  182. if(sample > max_audioval ) {
  183. *dst = max_audioval;
  184. } else if(sample < min_audioval ) {
  185. *dst = min_audioval;
  186. } else {
  187. *dst = sample;
  188. }
  189. srcs0[0]++;
  190. srcs0[1]++;
  191. srcs1[0]++;
  192. srcs1[1]++;
  193. srcs2++;
  194. dst++;
  195. }
  196. return;
  197. }
  198. void MixAudio16_6(ALshort *dst, alMixEntry *entries) {
  199. ALshort *srcs0[2];
  200. ALshort *srcs1[2];
  201. ALshort *srcs2[2];
  202. int len;
  203. int sample;
  204. len = entries[0].bytes;
  205. len /= sizeof(ALshort);
  206. srcs0[0] = entries[0].data;
  207. srcs0[1] = entries[1].data;
  208. srcs1[0] = entries[2].data;
  209. srcs1[1] = entries[3].data;
  210. srcs2[0] = entries[4].data;
  211. srcs2[1] = entries[5].data;
  212. while(len--) {
  213. sample = *srcs0[0];
  214. sample += *srcs0[1];
  215. sample += *srcs1[0];
  216. sample += *srcs1[1];
  217. sample += *srcs2[0];
  218. sample += *srcs2[1];
  219. if(sample > max_audioval ) {
  220. *dst = max_audioval;
  221. } else if(sample < min_audioval ) {
  222. *dst = min_audioval;
  223. } else {
  224. *dst = sample;
  225. }
  226. srcs0[0]++;
  227. srcs0[1]++;
  228. srcs1[0]++;
  229. srcs1[1]++;
  230. srcs2[0]++;
  231. srcs2[1]++;
  232. dst++;
  233. }
  234. return;
  235. }
  236. void MixAudio16_7(ALshort *dst, alMixEntry *entries) {
  237. ALshort *srcs0[2];
  238. ALshort *srcs1[2];
  239. ALshort *srcs2[2];
  240. ALshort *srcs3;
  241. int len;
  242. int sample;
  243. len = entries[0].bytes;
  244. len /= sizeof(ALshort);
  245. srcs0[0] = entries[0].data;
  246. srcs0[1] = entries[1].data;
  247. srcs1[0] = entries[2].data;
  248. srcs1[1] = entries[3].data;
  249. srcs2[0] = entries[4].data;
  250. srcs2[1] = entries[5].data;
  251. srcs3 = entries[6].data;
  252. while(len--) {
  253. sample = *srcs0[0];
  254. sample += *srcs0[1];
  255. sample += *srcs1[0];
  256. sample += *srcs1[1];
  257. sample += *srcs2[0];
  258. sample += *srcs2[1];
  259. sample += *srcs3;
  260. if(sample > max_audioval ) {
  261. *dst = max_audioval;
  262. } else if(sample < min_audioval ) {
  263. *dst = min_audioval;
  264. } else {
  265. *dst = sample;
  266. }
  267. srcs0[0]++;
  268. srcs0[1]++;
  269. srcs1[0]++;
  270. srcs1[1]++;
  271. srcs2[0]++;
  272. srcs2[1]++;
  273. srcs3++;
  274. dst++;
  275. }
  276. return;
  277. }
  278. void MixAudio16_8(ALshort *dst, alMixEntry *entries) {
  279. ALshort *srcs0[2];
  280. ALshort *srcs1[2];
  281. ALshort *srcs2[2];
  282. ALshort *srcs3[2];
  283. int len;
  284. int sample;
  285. len = entries[0].bytes;
  286. len /= sizeof(ALshort);
  287. srcs0[0] = entries[0].data;
  288. srcs0[1] = entries[1].data;
  289. srcs1[0] = entries[2].data;
  290. srcs1[1] = entries[3].data;
  291. srcs2[0] = entries[4].data;
  292. srcs2[1] = entries[5].data;
  293. srcs3[0] = entries[6].data;
  294. srcs3[1] = entries[7].data;
  295. while(len--) {
  296. sample = *srcs0[0];
  297. sample += *srcs0[1];
  298. sample += *srcs1[0];
  299. sample += *srcs1[1];
  300. sample += *srcs2[0];
  301. sample += *srcs2[1];
  302. sample += *srcs3[0];
  303. sample += *srcs3[1];
  304. if(sample > max_audioval ) {
  305. *dst = max_audioval;
  306. } else if(sample < min_audioval ) {
  307. *dst = min_audioval;
  308. } else {
  309. *dst = sample;
  310. }
  311. srcs0[0]++;
  312. srcs0[1]++;
  313. srcs1[0]++;
  314. srcs1[1]++;
  315. srcs2[0]++;
  316. srcs2[1]++;
  317. srcs3[0]++;
  318. srcs3[1]++;
  319. dst++;
  320. }
  321. return;
  322. }
  323. #ifndef USE_LIGHT_GEN_MIXING
  324. void MixAudio16_9(ALshort *dst, alMixEntry *entries) {
  325. ALshort *srcs0[2];
  326. ALshort *srcs1[2];
  327. ALshort *srcs2[2];
  328. ALshort *srcs3[2];
  329. ALshort *srcs4;
  330. int len;
  331. int sample;
  332. len = entries[0].bytes;
  333. len /= sizeof(ALshort);
  334. srcs0[0] = entries[0].data;
  335. srcs0[1] = entries[1].data;
  336. srcs1[0] = entries[2].data;
  337. srcs1[1] = entries[3].data;
  338. srcs2[0] = entries[4].data;
  339. srcs2[1] = entries[5].data;
  340. srcs3[0] = entries[6].data;
  341. srcs3[1] = entries[7].data;
  342. srcs4 = entries[8].data;
  343. while(len--) {
  344. sample = *srcs0[0];
  345. sample += *srcs0[1];
  346. sample += *srcs1[0];
  347. sample += *srcs1[1];
  348. sample += *srcs2[0];
  349. sample += *srcs2[1];
  350. sample += *srcs3[0];
  351. sample += *srcs3[1];
  352. sample += *srcs4;
  353. if(sample > max_audioval ) {
  354. *dst = max_audioval;
  355. } else if(sample < min_audioval ) {
  356. *dst = min_audioval;
  357. } else {
  358. *dst = sample;
  359. }
  360. srcs0[0]++;
  361. srcs0[1]++;
  362. srcs1[0]++;
  363. srcs1[1]++;
  364. srcs2[0]++;
  365. srcs2[1]++;
  366. srcs3[0]++;
  367. srcs3[1]++;
  368. srcs4++;
  369. dst++;
  370. }
  371. return;
  372. }
  373. void MixAudio16_10(ALshort *dst, alMixEntry *entries) {
  374. ALshort *srcs0[2];
  375. ALshort *srcs1[2];
  376. ALshort *srcs2[2];
  377. ALshort *srcs3[2];
  378. ALshort *srcs4[2];
  379. int len;
  380. int sample;
  381. len = entries[0].bytes;
  382. len /= sizeof(ALshort);
  383. srcs0[0] = entries[0].data;
  384. srcs0[1] = entries[1].data;
  385. srcs1[0] = entries[2].data;
  386. srcs1[1] = entries[3].data;
  387. srcs2[0] = entries[4].data;
  388. srcs2[1] = entries[5].data;
  389. srcs3[0] = entries[6].data;
  390. srcs3[1] = entries[7].data;
  391. srcs4[0] = entries[8].data;
  392. srcs4[1] = entries[9].data;
  393. while(len--) {
  394. sample = *srcs0[0];
  395. sample += *srcs0[1];
  396. sample += *srcs1[0];
  397. sample += *srcs1[1];
  398. sample += *srcs2[0];
  399. sample += *srcs2[1];
  400. sample += *srcs3[0];
  401. sample += *srcs3[1];
  402. sample += *srcs4[0];
  403. sample += *srcs4[1];
  404. if(sample > max_audioval ) {
  405. *dst = max_audioval;
  406. } else if(sample < min_audioval ) {
  407. *dst = min_audioval;
  408. } else {
  409. *dst = sample;
  410. }
  411. srcs0[0]++;
  412. srcs0[1]++;
  413. srcs1[0]++;
  414. srcs1[1]++;
  415. srcs2[0]++;
  416. srcs2[1]++;
  417. srcs3[0]++;
  418. srcs3[1]++;
  419. srcs4[0]++;
  420. srcs4[1]++;
  421. dst++;
  422. }
  423. return;
  424. }
  425. void MixAudio16_11(ALshort *dst, alMixEntry *entries) {
  426. ALshort *srcs0[2];
  427. ALshort *srcs1[2];
  428. ALshort *srcs2[2];
  429. ALshort *srcs3[2];
  430. ALshort *srcs4[2];
  431. ALshort *srcs5;
  432. int len;
  433. int sample;
  434. len = entries[0].bytes;
  435. len /= sizeof(ALshort);
  436. srcs0[0] = entries[0].data;
  437. srcs0[1] = entries[1].data;
  438. srcs1[0] = entries[2].data;
  439. srcs1[1] = entries[3].data;
  440. srcs2[0] = entries[4].data;
  441. srcs2[1] = entries[5].data;
  442. srcs3[0] = entries[6].data;
  443. srcs3[1] = entries[7].data;
  444. srcs4[0] = entries[8].data;
  445. srcs4[1] = entries[9].data;
  446. srcs5 = entries[10].data;
  447. while(len--) {
  448. sample = *srcs0[0];
  449. sample += *srcs0[1];
  450. sample += *srcs1[0];
  451. sample += *srcs1[1];
  452. sample += *srcs2[0];
  453. sample += *srcs2[1];
  454. sample += *srcs3[0];
  455. sample += *srcs3[1];
  456. sample += *srcs4[0];
  457. sample += *srcs4[1];
  458. sample += *srcs5;
  459. if(sample > max_audioval ) {
  460. *dst = max_audioval;
  461. } else if(sample < min_audioval ) {
  462. *dst = min_audioval;
  463. } else {
  464. *dst = sample;
  465. }
  466. srcs0[0]++;
  467. srcs0[1]++;
  468. srcs1[0]++;
  469. srcs1[1]++;
  470. srcs2[0]++;
  471. srcs2[1]++;
  472. srcs3[0]++;
  473. srcs3[1]++;
  474. srcs4[0]++;
  475. srcs4[1]++;
  476. srcs5++;
  477. dst++;
  478. }
  479. return;
  480. }
  481. void MixAudio16_12(ALshort *dst, alMixEntry *entries) {
  482. ALshort *srcs0[2];
  483. ALshort *srcs1[2];
  484. ALshort *srcs2[2];
  485. ALshort *srcs3[2];
  486. ALshort *srcs4[2];
  487. ALshort *srcs5[2];
  488. int len;
  489. int sample;
  490. len = entries[0].bytes;
  491. len /= sizeof(ALshort);
  492. srcs0[0] = entries[0].data;
  493. srcs0[1] = entries[1].data;
  494. srcs1[0] = entries[2].data;
  495. srcs1[1] = entries[3].data;
  496. srcs2[0] = entries[4].data;
  497. srcs2[1] = entries[5].data;
  498. srcs3[0] = entries[6].data;
  499. srcs3[1] = entries[7].data;
  500. srcs4[0] = entries[8].data;
  501. srcs4[1] = entries[9].data;
  502. srcs5[0] = entries[10].data;
  503. srcs5[1] = entries[11].data;
  504. while(len--) {
  505. sample = *srcs0[0];
  506. sample += *srcs0[1];
  507. sample += *srcs1[0];
  508. sample += *srcs1[1];
  509. sample += *srcs2[0];
  510. sample += *srcs2[1];
  511. sample += *srcs3[0];
  512. sample += *srcs3[1];
  513. sample += *srcs4[0];
  514. sample += *srcs4[1];
  515. sample += *srcs5[0];
  516. sample += *srcs5[1];
  517. if(sample > max_audioval ) {
  518. *dst = max_audioval;
  519. } else if(sample < min_audioval ) {
  520. *dst = min_audioval;
  521. } else {
  522. *dst = sample;
  523. }
  524. srcs0[0]++;
  525. srcs0[1]++;
  526. srcs1[0]++;
  527. srcs1[1]++;
  528. srcs2[0]++;
  529. srcs2[1]++;
  530. srcs3[0]++;
  531. srcs3[1]++;
  532. srcs4[0]++;
  533. srcs4[1]++;
  534. srcs5[0]++;
  535. srcs5[1]++;
  536. dst++;
  537. }
  538. return;
  539. }
  540. void MixAudio16_13(ALshort *dst, alMixEntry *entries) {
  541. ALshort *srcs0[2];
  542. ALshort *srcs1[2];
  543. ALshort *srcs2[2];
  544. ALshort *srcs3[2];
  545. ALshort *srcs4[2];
  546. ALshort *srcs5[2];
  547. ALshort *srcs6;
  548. int len;
  549. int sample;
  550. len = entries[0].bytes;
  551. len /= sizeof(ALshort);
  552. srcs0[0] = entries[0].data;
  553. srcs0[1] = entries[1].data;
  554. srcs1[0] = entries[2].data;
  555. srcs1[1] = entries[3].data;
  556. srcs2[0] = entries[4].data;
  557. srcs2[1] = entries[5].data;
  558. srcs3[0] = entries[6].data;
  559. srcs3[1] = entries[7].data;
  560. srcs4[0] = entries[8].data;
  561. srcs4[1] = entries[9].data;
  562. srcs5[0] = entries[10].data;
  563. srcs5[1] = entries[11].data;
  564. srcs6 = entries[12].data;
  565. while(len--) {
  566. sample = *srcs0[0];
  567. sample += *srcs0[1];
  568. sample += *srcs1[0];
  569. sample += *srcs1[1];
  570. sample += *srcs2[0];
  571. sample += *srcs2[1];
  572. sample += *srcs3[0];
  573. sample += *srcs3[1];
  574. sample += *srcs4[0];
  575. sample += *srcs4[1];
  576. sample += *srcs5[0];
  577. sample += *srcs5[1];
  578. sample += *srcs6;
  579. if(sample > max_audioval ) {
  580. *dst = max_audioval;
  581. } else if(sample < min_audioval ) {
  582. *dst = min_audioval;
  583. } else {
  584. *dst = sample;
  585. }
  586. srcs0[0]++;
  587. srcs0[1]++;
  588. srcs1[0]++;
  589. srcs1[1]++;
  590. srcs2[0]++;
  591. srcs2[1]++;
  592. srcs3[0]++;
  593. srcs3[1]++;
  594. srcs4[0]++;
  595. srcs4[1]++;
  596. srcs5[0]++;
  597. srcs5[1]++;
  598. srcs6++;
  599. dst++;
  600. }
  601. return;
  602. }
  603. void MixAudio16_14(ALshort *dst, alMixEntry *entries) {
  604. ALshort *srcs0[2];
  605. ALshort *srcs1[2];
  606. ALshort *srcs2[2];
  607. ALshort *srcs3[2];
  608. ALshort *srcs4[2];
  609. ALshort *srcs5[2];
  610. ALshort *srcs6[2];
  611. int len;
  612. int sample;
  613. len = entries[0].bytes;
  614. len /= sizeof(ALshort);
  615. srcs0[0] = entries[0].data;
  616. srcs0[1] = entries[1].data;
  617. srcs1[0] = entries[2].data;
  618. srcs1[1] = entries[3].data;
  619. srcs2[0] = entries[4].data;
  620. srcs2[1] = entries[5].data;
  621. srcs3[0] = entries[6].data;
  622. srcs3[1] = entries[7].data;
  623. srcs4[0] = entries[8].data;
  624. srcs4[1] = entries[9].data;
  625. srcs5[0] = entries[10].data;
  626. srcs5[1] = entries[11].data;
  627. srcs6[0] = entries[12].data;
  628. srcs6[1] = entries[13].data;
  629. while(len--) {
  630. sample = *srcs0[0];
  631. sample += *srcs0[1];
  632. sample += *srcs1[0];
  633. sample += *srcs1[1];
  634. sample += *srcs2[0];
  635. sample += *srcs2[1];
  636. sample += *srcs3[0];
  637. sample += *srcs3[1];
  638. sample += *srcs4[0];
  639. sample += *srcs4[1];
  640. sample += *srcs5[0];
  641. sample += *srcs5[1];
  642. sample += *srcs6[0];
  643. sample += *srcs6[1];
  644. if(sample > max_audioval ) {
  645. *dst = max_audioval;
  646. } else if(sample < min_audioval ) {
  647. *dst = min_audioval;
  648. } else {
  649. *dst = sample;
  650. }
  651. srcs0[0]++;
  652. srcs0[1]++;
  653. srcs1[0]++;
  654. srcs1[1]++;
  655. srcs2[0]++;
  656. srcs2[1]++;
  657. srcs3[0]++;
  658. srcs3[1]++;
  659. srcs4[0]++;
  660. srcs4[1]++;
  661. srcs5[0]++;
  662. srcs5[1]++;
  663. srcs6[0]++;
  664. srcs6[1]++;
  665. dst++;
  666. }
  667. return;
  668. }
  669. void MixAudio16_15(ALshort *dst, alMixEntry *entries) {
  670. ALshort *srcs0[2];
  671. ALshort *srcs1[2];
  672. ALshort *srcs2[2];
  673. ALshort *srcs3[2];
  674. ALshort *srcs4[2];
  675. ALshort *srcs5[2];
  676. ALshort *srcs6[2];
  677. ALshort *srcs7;
  678. int len;
  679. int sample;
  680. len = entries[0].bytes;
  681. len /= sizeof(ALshort);
  682. srcs0[0] = entries[0].data;
  683. srcs0[1] = entries[1].data;
  684. srcs1[0] = entries[2].data;
  685. srcs1[1] = entries[3].data;
  686. srcs2[0] = entries[4].data;
  687. srcs2[1] = entries[5].data;
  688. srcs3[0] = entries[6].data;
  689. srcs3[1] = entries[7].data;
  690. srcs4[0] = entries[8].data;
  691. srcs4[1] = entries[9].data;
  692. srcs5[0] = entries[10].data;
  693. srcs5[1] = entries[11].data;
  694. srcs6[0] = entries[12].data;
  695. srcs6[1] = entries[13].data;
  696. srcs7 = entries[14].data;
  697. while(len--) {
  698. sample = *srcs0[0];
  699. sample += *srcs0[1];
  700. sample += *srcs1[0];
  701. sample += *srcs1[1];
  702. sample += *srcs2[0];
  703. sample += *srcs2[1];
  704. sample += *srcs3[0];
  705. sample += *srcs3[1];
  706. sample += *srcs4[0];
  707. sample += *srcs4[1];
  708. sample += *srcs5[0];
  709. sample += *srcs5[1];
  710. sample += *srcs6[0];
  711. sample += *srcs6[1];
  712. sample += *srcs7;
  713. if(sample > max_audioval ) {
  714. *dst = max_audioval;
  715. } else if(sample < min_audioval ) {
  716. *dst = min_audioval;
  717. } else {
  718. *dst = sample;
  719. }
  720. srcs0[0]++;
  721. srcs0[1]++;
  722. srcs1[0]++;
  723. srcs1[1]++;
  724. srcs2[0]++;
  725. srcs2[1]++;
  726. srcs3[0]++;
  727. srcs3[1]++;
  728. srcs4[0]++;
  729. srcs4[1]++;
  730. srcs5[0]++;
  731. srcs5[1]++;
  732. srcs6[0]++;
  733. srcs6[1]++;
  734. srcs7++;
  735. dst++;
  736. }
  737. return;
  738. }
  739. void MixAudio16_16(ALshort *dst, alMixEntry *entries) {
  740. ALshort *srcs0[2];
  741. ALshort *srcs1[2];
  742. ALshort *srcs2[2];
  743. ALshort *srcs3[2];
  744. ALshort *srcs4[2];
  745. ALshort *srcs5[2];
  746. ALshort *srcs6[2];
  747. ALshort *srcs7[2];
  748. int len;
  749. int sample;
  750. len = entries[0].bytes;
  751. len /= sizeof(ALshort);
  752. srcs0[0] = entries[0].data;
  753. srcs0[1] = entries[1].data;
  754. srcs1[0] = entries[2].data;
  755. srcs1[1] = entries[3].data;
  756. srcs2[0] = entries[4].data;
  757. srcs2[1] = entries[5].data;
  758. srcs3[0] = entries[6].data;
  759. srcs3[1] = entries[7].data;
  760. srcs4[0] = entries[8].data;
  761. srcs4[1] = entries[9].data;
  762. srcs5[0] = entries[10].data;
  763. srcs5[1] = entries[11].data;
  764. srcs6[0] = entries[12].data;
  765. srcs6[1] = entries[13].data;
  766. srcs7[0] = entries[14].data;
  767. srcs7[1] = entries[15].data;
  768. while(len--) {
  769. sample = *srcs0[0];
  770. sample += *srcs0[1];
  771. sample += *srcs1[0];
  772. sample += *srcs1[1];
  773. sample += *srcs2[0];
  774. sample += *srcs2[1];
  775. sample += *srcs3[0];
  776. sample += *srcs3[1];
  777. sample += *srcs4[0];
  778. sample += *srcs4[1];
  779. sample += *srcs5[0];
  780. sample += *srcs5[1];
  781. sample += *srcs6[0];
  782. sample += *srcs6[1];
  783. sample += *srcs7[0];
  784. sample += *srcs7[1];
  785. if(sample > max_audioval ) {
  786. *dst = max_audioval;
  787. } else if(sample < min_audioval ) {
  788. *dst = min_audioval;
  789. } else {
  790. *dst = sample;
  791. }
  792. srcs0[0]++;
  793. srcs0[1]++;
  794. srcs1[0]++;
  795. srcs1[1]++;
  796. srcs2[0]++;
  797. srcs2[1]++;
  798. srcs3[0]++;
  799. srcs3[1]++;
  800. srcs4[0]++;
  801. srcs4[1]++;
  802. srcs5[0]++;
  803. srcs5[1]++;
  804. srcs6[0]++;
  805. srcs6[1]++;
  806. srcs7[0]++;
  807. srcs7[1]++;
  808. dst++;
  809. }
  810. return;
  811. }
  812. void MixAudio16_17(ALshort *dst, alMixEntry *entries) {
  813. ALshort *srcs0[2];
  814. ALshort *srcs1[2];
  815. ALshort *srcs2[2];
  816. ALshort *srcs3[2];
  817. ALshort *srcs4[2];
  818. ALshort *srcs5[2];
  819. ALshort *srcs6[2];
  820. ALshort *srcs7[2];
  821. ALshort *srcs8;
  822. int len;
  823. int sample;
  824. len = entries[0].bytes;
  825. len /= sizeof(ALshort);
  826. srcs0[0] = entries[0].data;
  827. srcs0[1] = entries[1].data;
  828. srcs1[0] = entries[2].data;
  829. srcs1[1] = entries[3].data;
  830. srcs2[0] = entries[4].data;
  831. srcs2[1] = entries[5].data;
  832. srcs3[0] = entries[6].data;
  833. srcs3[1] = entries[7].data;
  834. srcs4[0] = entries[8].data;
  835. srcs4[1] = entries[9].data;
  836. srcs5[0] = entries[10].data;
  837. srcs5[1] = entries[11].data;
  838. srcs6[0] = entries[12].data;
  839. srcs6[1] = entries[13].data;
  840. srcs7[0] = entries[14].data;
  841. srcs7[1] = entries[15].data;
  842. srcs8 = entries[16].data;
  843. while(len--) {
  844. sample = *srcs0[0];
  845. sample += *srcs0[1];
  846. sample += *srcs1[0];
  847. sample += *srcs1[1];
  848. sample += *srcs2[0];
  849. sample += *srcs2[1];
  850. sample += *srcs3[0];
  851. sample += *srcs3[1];
  852. sample += *srcs4[0];
  853. sample += *srcs4[1];
  854. sample += *srcs5[0];
  855. sample += *srcs5[1];
  856. sample += *srcs6[0];
  857. sample += *srcs6[1];
  858. sample += *srcs7[0];
  859. sample += *srcs7[1];
  860. sample += *srcs8;
  861. if(sample > max_audioval ) {
  862. *dst = max_audioval;
  863. } else if(sample < min_audioval ) {
  864. *dst = min_audioval;
  865. } else {
  866. *dst = sample;
  867. }
  868. srcs0[0]++;
  869. srcs0[1]++;
  870. srcs1[0]++;
  871. srcs1[1]++;
  872. srcs2[0]++;
  873. srcs2[1]++;
  874. srcs3[0]++;
  875. srcs3[1]++;
  876. srcs4[0]++;
  877. srcs4[1]++;
  878. srcs5[0]++;
  879. srcs5[1]++;
  880. srcs6[0]++;
  881. srcs6[1]++;
  882. srcs7[0]++;
  883. srcs7[1]++;
  884. srcs8++;
  885. dst++;
  886. }
  887. return;
  888. }
  889. void MixAudio16_18(ALshort *dst, alMixEntry *entries) {
  890. ALshort *srcs0[2];
  891. ALshort *srcs1[2];
  892. ALshort *srcs2[2];
  893. ALshort *srcs3[2];
  894. ALshort *srcs4[2];
  895. ALshort *srcs5[2];
  896. ALshort *srcs6[2];
  897. ALshort *srcs7[2];
  898. ALshort *srcs8[2];
  899. int len;
  900. int sample;
  901. len = entries[0].bytes;
  902. len /= sizeof(ALshort);
  903. srcs0[0] = entries[0].data;
  904. srcs0[1] = entries[1].data;
  905. srcs1[0] = entries[2].data;
  906. srcs1[1] = entries[3].data;
  907. srcs2[0] = entries[4].data;
  908. srcs2[1] = entries[5].data;
  909. srcs3[0] = entries[6].data;
  910. srcs3[1] = entries[7].data;
  911. srcs4[0] = entries[8].data;
  912. srcs4[1] = entries[9].data;
  913. srcs5[0] = entries[10].data;
  914. srcs5[1] = entries[11].data;
  915. srcs6[0] = entries[12].data;
  916. srcs6[1] = entries[13].data;
  917. srcs7[0] = entries[14].data;
  918. srcs7[1] = entries[15].data;
  919. srcs8[0] = entries[16].data;
  920. srcs8[1] = entries[17].data;
  921. while(len--) {
  922. sample = *srcs0[0];
  923. sample += *srcs0[1];
  924. sample += *srcs1[0];
  925. sample += *srcs1[1];
  926. sample += *srcs2[0];
  927. sample += *srcs2[1];
  928. sample += *srcs3[0];
  929. sample += *srcs3[1];
  930. sample += *srcs4[0];
  931. sample += *srcs4[1];
  932. sample += *srcs5[0];
  933. sample += *srcs5[1];
  934. sample += *srcs6[0];
  935. sample += *srcs6[1];
  936. sample += *srcs7[0];
  937. sample += *srcs7[1];
  938. sample += *srcs8[0];
  939. sample += *srcs8[1];
  940. if(sample > max_audioval ) {
  941. *dst = max_audioval;
  942. } else if(sample < min_audioval ) {
  943. *dst = min_audioval;
  944. } else {
  945. *dst = sample;
  946. }
  947. srcs0[0]++;
  948. srcs0[1]++;
  949. srcs1[0]++;
  950. srcs1[1]++;
  951. srcs2[0]++;
  952. srcs2[1]++;
  953. srcs3[0]++;
  954. srcs3[1]++;
  955. srcs4[0]++;
  956. srcs4[1]++;
  957. srcs5[0]++;
  958. srcs5[1]++;
  959. srcs6[0]++;
  960. srcs6[1]++;
  961. srcs7[0]++;
  962. srcs7[1]++;
  963. srcs8[0]++;
  964. srcs8[1]++;
  965. dst++;
  966. }
  967. return;
  968. }
  969. void MixAudio16_19(ALshort *dst, alMixEntry *entries) {
  970. ALshort *srcs0[2];
  971. ALshort *srcs1[2];
  972. ALshort *srcs2[2];
  973. ALshort *srcs3[2];
  974. ALshort *srcs4[2];
  975. ALshort *srcs5[2];
  976. ALshort *srcs6[2];
  977. ALshort *srcs7[2];
  978. ALshort *srcs8[2];
  979. ALshort *srcs9;
  980. int len;
  981. int sample;
  982. len = entries[0].bytes;
  983. len /= sizeof(ALshort);
  984. srcs0[0] = entries[0].data;
  985. srcs0[1] = entries[1].data;
  986. srcs1[0] = entries[2].data;
  987. srcs1[1] = entries[3].data;
  988. srcs2[0] = entries[4].data;
  989. srcs2[1] = entries[5].data;
  990. srcs3[0] = entries[6].data;
  991. srcs3[1] = entries[7].data;
  992. srcs4[0] = entries[8].data;
  993. srcs4[1] = entries[9].data;
  994. srcs5[0] = entries[10].data;
  995. srcs5[1] = entries[11].data;
  996. srcs6[0] = entries[12].data;
  997. srcs6[1] = entries[13].data;
  998. srcs7[0] = entries[14].data;
  999. srcs7[1] = entries[15].data;
  1000. srcs8[0] = entries[16].data;
  1001. srcs8[1] = entries[17].data;
  1002. srcs9 = entries[18].data;
  1003. while(len--) {
  1004. sample = *srcs0[0];
  1005. sample += *srcs0[1];
  1006. sample += *srcs1[0];
  1007. sample += *srcs1[1];
  1008. sample += *srcs2[0];
  1009. sample += *srcs2[1];
  1010. sample += *srcs3[0];
  1011. sample += *srcs3[1];
  1012. sample += *srcs4[0];
  1013. sample += *srcs4[1];
  1014. sample += *srcs5[0];
  1015. sample += *srcs5[1];
  1016. sample += *srcs6[0];
  1017. sample += *srcs6[1];
  1018. sample += *srcs7[0];
  1019. sample += *srcs7[1];
  1020. sample += *srcs8[0];
  1021. sample += *srcs8[1];
  1022. sample += *srcs9;
  1023. if(sample > max_audioval ) {
  1024. *dst = max_audioval;
  1025. } else if(sample < min_audioval ) {
  1026. *dst = min_audioval;
  1027. } else {
  1028. *dst = sample;
  1029. }
  1030. srcs0[0]++;
  1031. srcs0[1]++;
  1032. srcs1[0]++;
  1033. srcs1[1]++;
  1034. srcs2[0]++;
  1035. srcs2[1]++;
  1036. srcs3[0]++;
  1037. srcs3[1]++;
  1038. srcs4[0]++;
  1039. srcs4[1]++;
  1040. srcs5[0]++;
  1041. srcs5[1]++;
  1042. srcs6[0]++;
  1043. srcs6[1]++;
  1044. srcs7[0]++;
  1045. srcs7[1]++;
  1046. srcs8[0]++;
  1047. srcs8[1]++;
  1048. srcs9++;
  1049. dst++;
  1050. }
  1051. return;
  1052. }
  1053. void MixAudio16_20(ALshort *dst, alMixEntry *entries) {
  1054. ALshort *srcs0[2];
  1055. ALshort *srcs1[2];
  1056. ALshort *srcs2[2];
  1057. ALshort *srcs3[2];
  1058. ALshort *srcs4[2];
  1059. ALshort *srcs5[2];
  1060. ALshort *srcs6[2];
  1061. ALshort *srcs7[2];
  1062. ALshort *srcs8[2];
  1063. ALshort *srcs9[2];
  1064. int len;
  1065. int sample;
  1066. len = entries[0].bytes;
  1067. len /= sizeof(ALshort);
  1068. srcs0[0] = entries[0].data;
  1069. srcs0[1] = entries[1].data;
  1070. srcs1[0] = entries[2].data;
  1071. srcs1[1] = entries[3].data;
  1072. srcs2[0] = entries[4].data;
  1073. srcs2[1] = entries[5].data;
  1074. srcs3[0] = entries[6].data;
  1075. srcs3[1] = entries[7].data;
  1076. srcs4[0] = entries[8].data;
  1077. srcs4[1] = entries[9].data;
  1078. srcs5[0] = entries[10].data;
  1079. srcs5[1] = entries[11].data;
  1080. srcs6[0] = entries[12].data;
  1081. srcs6[1] = entries[13].data;
  1082. srcs7[0] = entries[14].data;
  1083. srcs7[1] = entries[15].data;
  1084. srcs8[0] = entries[16].data;
  1085. srcs8[1] = entries[17].data;
  1086. srcs9[0] = entries[18].data;
  1087. srcs9[1] = entries[19].data;
  1088. while(len--) {
  1089. sample = *srcs0[0];
  1090. sample += *srcs0[1];
  1091. sample += *srcs1[0];
  1092. sample += *srcs1[1];
  1093. sample += *srcs2[0];
  1094. sample += *srcs2[1];
  1095. sample += *srcs3[0];
  1096. sample += *srcs3[1];
  1097. sample += *srcs4[0];
  1098. sample += *srcs4[1];
  1099. sample += *srcs5[0];
  1100. sample += *srcs5[1];
  1101. sample += *srcs6[0];
  1102. sample += *srcs6[1];
  1103. sample += *srcs7[0];
  1104. sample += *srcs7[1];
  1105. sample += *srcs8[0];
  1106. sample += *srcs8[1];
  1107. sample += *srcs9[0];
  1108. sample += *srcs9[1];
  1109. if(sample > max_audioval ) {
  1110. *dst = max_audioval;
  1111. } else if(sample < min_audioval ) {
  1112. *dst = min_audioval;
  1113. } else {
  1114. *dst = sample;
  1115. }
  1116. srcs0[0]++;
  1117. srcs0[1]++;
  1118. srcs1[0]++;
  1119. srcs1[1]++;
  1120. srcs2[0]++;
  1121. srcs2[1]++;
  1122. srcs3[0]++;
  1123. srcs3[1]++;
  1124. srcs4[0]++;
  1125. srcs4[1]++;
  1126. srcs5[0]++;
  1127. srcs5[1]++;
  1128. srcs6[0]++;
  1129. srcs6[1]++;
  1130. srcs7[0]++;
  1131. srcs7[1]++;
  1132. srcs8[0]++;
  1133. srcs8[1]++;
  1134. srcs9[0]++;
  1135. srcs9[1]++;
  1136. dst++;
  1137. }
  1138. return;
  1139. }
  1140. void MixAudio16_21(ALshort *dst, alMixEntry *entries) {
  1141. ALshort *srcs0[2];
  1142. ALshort *srcs1[2];
  1143. ALshort *srcs2[2];
  1144. ALshort *srcs3[2];
  1145. ALshort *srcs4[2];
  1146. ALshort *srcs5[2];
  1147. ALshort *srcs6[2];
  1148. ALshort *srcs7[2];
  1149. ALshort *srcs8[2];
  1150. ALshort *srcs9[2];
  1151. ALshort *srcs10;
  1152. int len;
  1153. int sample;
  1154. len = entries[0].bytes;
  1155. len /= sizeof(ALshort);
  1156. srcs0[0] = entries[0].data;
  1157. srcs0[1] = entries[1].data;
  1158. srcs1[0] = entries[2].data;
  1159. srcs1[1] = entries[3].data;
  1160. srcs2[0] = entries[4].data;
  1161. srcs2[1] = entries[5].data;
  1162. srcs3[0] = entries[6].data;
  1163. srcs3[1] = entries[7].data;
  1164. srcs4[0] = entries[8].data;
  1165. srcs4[1] = entries[9].data;
  1166. srcs5[0] = entries[10].data;
  1167. srcs5[1] = entries[11].data;
  1168. srcs6[0] = entries[12].data;
  1169. srcs6[1] = entries[13].data;
  1170. srcs7[0] = entries[14].data;
  1171. srcs7[1] = entries[15].data;
  1172. srcs8[0] = entries[16].data;
  1173. srcs8[1] = entries[17].data;
  1174. srcs9[0] = entries[18].data;
  1175. srcs9[1] = entries[19].data;
  1176. srcs10 = entries[20].data;
  1177. while(len--) {
  1178. sample = *srcs0[0];
  1179. sample += *srcs0[1];
  1180. sample += *srcs1[0];
  1181. sample += *srcs1[1];
  1182. sample += *srcs2[0];
  1183. sample += *srcs2[1];
  1184. sample += *srcs3[0];
  1185. sample += *srcs3[1];
  1186. sample += *srcs4[0];
  1187. sample += *srcs4[1];
  1188. sample += *srcs5[0];
  1189. sample += *srcs5[1];
  1190. sample += *srcs6[0];
  1191. sample += *srcs6[1];
  1192. sample += *srcs7[0];
  1193. sample += *srcs7[1];
  1194. sample += *srcs8[0];
  1195. sample += *srcs8[1];
  1196. sample += *srcs9[0];
  1197. sample += *srcs9[1];
  1198. sample += *srcs10;
  1199. if(sample > max_audioval ) {
  1200. *dst = max_audioval;
  1201. } else if(sample < min_audioval ) {
  1202. *dst = min_audioval;
  1203. } else {
  1204. *dst = sample;
  1205. }
  1206. srcs0[0]++;
  1207. srcs0[1]++;
  1208. srcs1[0]++;
  1209. srcs1[1]++;
  1210. srcs2[0]++;
  1211. srcs2[1]++;
  1212. srcs3[0]++;
  1213. srcs3[1]++;
  1214. srcs4[0]++;
  1215. srcs4[1]++;
  1216. srcs5[0]++;
  1217. srcs5[1]++;
  1218. srcs6[0]++;
  1219. srcs6[1]++;
  1220. srcs7[0]++;
  1221. srcs7[1]++;
  1222. srcs8[0]++;
  1223. srcs8[1]++;
  1224. srcs9[0]++;
  1225. srcs9[1]++;
  1226. srcs10++;
  1227. dst++;
  1228. }
  1229. return;
  1230. }
  1231. void MixAudio16_22(ALshort *dst, alMixEntry *entries) {
  1232. ALshort *srcs0[2];
  1233. ALshort *srcs1[2];
  1234. ALshort *srcs2[2];
  1235. ALshort *srcs3[2];
  1236. ALshort *srcs4[2];
  1237. ALshort *srcs5[2];
  1238. ALshort *srcs6[2];
  1239. ALshort *srcs7[2];
  1240. ALshort *srcs8[2];
  1241. ALshort *srcs9[2];
  1242. ALshort *srcs10[2];
  1243. int len;
  1244. int sample;
  1245. len = entries[0].bytes;
  1246. len /= sizeof(ALshort);
  1247. srcs0[0] = entries[0].data;
  1248. srcs0[1] = entries[1].data;
  1249. srcs1[0] = entries[2].data;
  1250. srcs1[1] = entries[3].data;
  1251. srcs2[0] = entries[4].data;
  1252. srcs2[1] = entries[5].data;
  1253. srcs3[0] = entries[6].data;
  1254. srcs3[1] = entries[7].data;
  1255. srcs4[0] = entries[8].data;
  1256. srcs4[1] = entries[9].data;
  1257. srcs5[0] = entries[10].data;
  1258. srcs5[1] = entries[11].data;
  1259. srcs6[0] = entries[12].data;
  1260. srcs6[1] = entries[13].data;
  1261. srcs7[0] = entries[14].data;
  1262. srcs7[1] = entries[15].data;
  1263. srcs8[0] = entries[16].data;
  1264. srcs8[1] = entries[17].data;
  1265. srcs9[0] = entries[18].data;
  1266. srcs9[1] = entries[19].data;
  1267. srcs10[0] = entries[20].data;
  1268. srcs10[1] = entries[21].data;
  1269. while(len--) {
  1270. sample = *srcs0[0];
  1271. sample += *srcs0[1];
  1272. sample += *srcs1[0];
  1273. sample += *srcs1[1];
  1274. sample += *srcs2[0];
  1275. sample += *srcs2[1];
  1276. sample += *srcs3[0];
  1277. sample += *srcs3[1];
  1278. sample += *srcs4[0];
  1279. sample += *srcs4[1];
  1280. sample += *srcs5[0];
  1281. sample += *srcs5[1];
  1282. sample += *srcs6[0];
  1283. sample += *srcs6[1];
  1284. sample += *srcs7[0];
  1285. sample += *srcs7[1];
  1286. sample += *srcs8[0];
  1287. sample += *srcs8[1];
  1288. sample += *srcs9[0];
  1289. sample += *srcs9[1];
  1290. sample += *srcs10[0];
  1291. sample += *srcs10[1];
  1292. if(sample > max_audioval ) {
  1293. *dst = max_audioval;
  1294. } else if(sample < min_audioval ) {
  1295. *dst = min_audioval;
  1296. } else {
  1297. *dst = sample;
  1298. }
  1299. srcs0[0]++;
  1300. srcs0[1]++;
  1301. srcs1[0]++;
  1302. srcs1[1]++;
  1303. srcs2[0]++;
  1304. srcs2[1]++;
  1305. srcs3[0]++;
  1306. srcs3[1]++;
  1307. srcs4[0]++;
  1308. srcs4[1]++;
  1309. srcs5[0]++;
  1310. srcs5[1]++;
  1311. srcs6[0]++;
  1312. srcs6[1]++;
  1313. srcs7[0]++;
  1314. srcs7[1]++;
  1315. srcs8[0]++;
  1316. srcs8[1]++;
  1317. srcs9[0]++;
  1318. srcs9[1]++;
  1319. srcs10[0]++;
  1320. srcs10[1]++;
  1321. dst++;
  1322. }
  1323. return;
  1324. }
  1325. void MixAudio16_23(ALshort *dst, alMixEntry *entries) {
  1326. ALshort *srcs0[2];
  1327. ALshort *srcs1[2];
  1328. ALshort *srcs2[2];
  1329. ALshort *srcs3[2];
  1330. ALshort *srcs4[2];
  1331. ALshort *srcs5[2];
  1332. ALshort *srcs6[2];
  1333. ALshort *srcs7[2];
  1334. ALshort *srcs8[2];
  1335. ALshort *srcs9[2];
  1336. ALshort *srcs10[2];
  1337. ALshort *srcs11;
  1338. int len;
  1339. int sample;
  1340. len = entries[0].bytes;
  1341. len /= sizeof(ALshort);
  1342. srcs0[0] = entries[0].data;
  1343. srcs0[1] = entries[1].data;
  1344. srcs1[0] = entries[2].data;
  1345. srcs1[1] = entries[3].data;
  1346. srcs2[0] = entries[4].data;
  1347. srcs2[1] = entries[5].data;
  1348. srcs3[0] = entries[6].data;
  1349. srcs3[1] = entries[7].data;
  1350. srcs4[0] = entries[8].data;
  1351. srcs4[1] = entries[9].data;
  1352. srcs5[0] = entries[10].data;
  1353. srcs5[1] = entries[11].data;
  1354. srcs6[0] = entries[12].data;
  1355. srcs6[1] = entries[13].data;
  1356. srcs7[0] = entries[14].data;
  1357. srcs7[1] = entries[15].data;
  1358. srcs8[0] = entries[16].data;
  1359. srcs8[1] = entries[17].data;
  1360. srcs9[0] = entries[18].data;
  1361. srcs9[1] = entries[19].data;
  1362. srcs10[0] = entries[20].data;
  1363. srcs10[1] = entries[21].data;
  1364. srcs11 = entries[22].data;
  1365. while(len--) {
  1366. sample = *srcs0[0];
  1367. sample += *srcs0[1];
  1368. sample += *srcs1[0];
  1369. sample += *srcs1[1];
  1370. sample += *srcs2[0];
  1371. sample += *srcs2[1];
  1372. sample += *srcs3[0];
  1373. sample += *srcs3[1];
  1374. sample += *srcs4[0];
  1375. sample += *srcs4[1];
  1376. sample += *srcs5[0];
  1377. sample += *srcs5[1];
  1378. sample += *srcs6[0];
  1379. sample += *srcs6[1];
  1380. sample += *srcs7[0];
  1381. sample += *srcs7[1];
  1382. sample += *srcs8[0];
  1383. sample += *srcs8[1];
  1384. sample += *srcs9[0];
  1385. sample += *srcs9[1];
  1386. sample += *srcs10[0];
  1387. sample += *srcs10[1];
  1388. sample += *srcs11;
  1389. if(sample > max_audioval ) {
  1390. *dst = max_audioval;
  1391. } else if(sample < min_audioval ) {
  1392. *dst = min_audioval;
  1393. } else {
  1394. *dst = sample;
  1395. }
  1396. srcs0[0]++;
  1397. srcs0[1]++;
  1398. srcs1[0]++;
  1399. srcs1[1]++;
  1400. srcs2[0]++;
  1401. srcs2[1]++;
  1402. srcs3[0]++;
  1403. srcs3[1]++;
  1404. srcs4[0]++;
  1405. srcs4[1]++;
  1406. srcs5[0]++;
  1407. srcs5[1]++;
  1408. srcs6[0]++;
  1409. srcs6[1]++;
  1410. srcs7[0]++;
  1411. srcs7[1]++;
  1412. srcs8[0]++;
  1413. srcs8[1]++;
  1414. srcs9[0]++;
  1415. srcs9[1]++;
  1416. srcs10[0]++;
  1417. srcs10[1]++;
  1418. srcs11++;
  1419. dst++;
  1420. }
  1421. return;
  1422. }
  1423. void MixAudio16_24(ALshort *dst, alMixEntry *entries) {
  1424. ALshort *srcs0[2];
  1425. ALshort *srcs1[2];
  1426. ALshort *srcs2[2];
  1427. ALshort *srcs3[2];
  1428. ALshort *srcs4[2];
  1429. ALshort *srcs5[2];
  1430. ALshort *srcs6[2];
  1431. ALshort *srcs7[2];
  1432. ALshort *srcs8[2];
  1433. ALshort *srcs9[2];
  1434. ALshort *srcs10[2];
  1435. ALshort *srcs11[2];
  1436. int len;
  1437. int sample;
  1438. len = entries[0].bytes;
  1439. len /= sizeof(ALshort);
  1440. srcs0[0] = entries[0].data;
  1441. srcs0[1] = entries[1].data;
  1442. srcs1[0] = entries[2].data;
  1443. srcs1[1] = entries[3].data;
  1444. srcs2[0] = entries[4].data;
  1445. srcs2[1] = entries[5].data;
  1446. srcs3[0] = entries[6].data;
  1447. srcs3[1] = entries[7].data;
  1448. srcs4[0] = entries[8].data;
  1449. srcs4[1] = entries[9].data;
  1450. srcs5[0] = entries[10].data;
  1451. srcs5[1] = entries[11].data;
  1452. srcs6[0] = entries[12].data;
  1453. srcs6[1] = entries[13].data;
  1454. srcs7[0] = entries[14].data;
  1455. srcs7[1] = entries[15].data;
  1456. srcs8[0] = entries[16].data;
  1457. srcs8[1] = entries[17].data;
  1458. srcs9[0] = entries[18].data;
  1459. srcs9[1] = entries[19].data;
  1460. srcs10[0] = entries[20].data;
  1461. srcs10[1] = entries[21].data;
  1462. srcs11[0] = entries[22].data;
  1463. srcs11[1] = entries[23].data;
  1464. while(len--) {
  1465. sample = *srcs0[0];
  1466. sample += *srcs0[1];
  1467. sample += *srcs1[0];
  1468. sample += *srcs1[1];
  1469. sample += *srcs2[0];
  1470. sample += *srcs2[1];
  1471. sample += *srcs3[0];
  1472. sample += *srcs3[1];
  1473. sample += *srcs4[0];
  1474. sample += *srcs4[1];
  1475. sample += *srcs5[0];
  1476. sample += *srcs5[1];
  1477. sample += *srcs6[0];
  1478. sample += *srcs6[1];
  1479. sample += *srcs7[0];
  1480. sample += *srcs7[1];
  1481. sample += *srcs8[0];
  1482. sample += *srcs8[1];
  1483. sample += *srcs9[0];
  1484. sample += *srcs9[1];
  1485. sample += *srcs10[0];
  1486. sample += *srcs10[1];
  1487. sample += *srcs11[0];
  1488. sample += *srcs11[1];
  1489. if(sample > max_audioval ) {
  1490. *dst = max_audioval;
  1491. } else if(sample < min_audioval ) {
  1492. *dst = min_audioval;
  1493. } else {
  1494. *dst = sample;
  1495. }
  1496. srcs0[0]++;
  1497. srcs0[1]++;
  1498. srcs1[0]++;
  1499. srcs1[1]++;
  1500. srcs2[0]++;
  1501. srcs2[1]++;
  1502. srcs3[0]++;
  1503. srcs3[1]++;
  1504. srcs4[0]++;
  1505. srcs4[1]++;
  1506. srcs5[0]++;
  1507. srcs5[1]++;
  1508. srcs6[0]++;
  1509. srcs6[1]++;
  1510. srcs7[0]++;
  1511. srcs7[1]++;
  1512. srcs8[0]++;
  1513. srcs8[1]++;
  1514. srcs9[0]++;
  1515. srcs9[1]++;
  1516. srcs10[0]++;
  1517. srcs10[1]++;
  1518. srcs11[0]++;
  1519. srcs11[1]++;
  1520. dst++;
  1521. }
  1522. return;
  1523. }
  1524. void MixAudio16_25(ALshort *dst, alMixEntry *entries) {
  1525. ALshort *srcs0[2];
  1526. ALshort *srcs1[2];
  1527. ALshort *srcs2[2];
  1528. ALshort *srcs3[2];
  1529. ALshort *srcs4[2];
  1530. ALshort *srcs5[2];
  1531. ALshort *srcs6[2];
  1532. ALshort *srcs7[2];
  1533. ALshort *srcs8[2];
  1534. ALshort *srcs9[2];
  1535. ALshort *srcs10[2];
  1536. ALshort *srcs11[2];
  1537. ALshort *srcs12;
  1538. int len;
  1539. int sample;
  1540. len = entries[0].bytes;
  1541. len /= sizeof(ALshort);
  1542. srcs0[0] = entries[0].data;
  1543. srcs0[1] = entries[1].data;
  1544. srcs1[0] = entries[2].data;
  1545. srcs1[1] = entries[3].data;
  1546. srcs2[0] = entries[4].data;
  1547. srcs2[1] = entries[5].data;
  1548. srcs3[0] = entries[6].data;
  1549. srcs3[1] = entries[7].data;
  1550. srcs4[0] = entries[8].data;
  1551. srcs4[1] = entries[9].data;
  1552. srcs5[0] = entries[10].data;
  1553. srcs5[1] = entries[11].data;
  1554. srcs6[0] = entries[12].data;
  1555. srcs6[1] = entries[13].data;
  1556. srcs7[0] = entries[14].data;
  1557. srcs7[1] = entries[15].data;
  1558. srcs8[0] = entries[16].data;
  1559. srcs8[1] = entries[17].data;
  1560. srcs9[0] = entries[18].data;
  1561. srcs9[1] = entries[19].data;
  1562. srcs10[0] = entries[20].data;
  1563. srcs10[1] = entries[21].data;
  1564. srcs11[0] = entries[22].data;
  1565. srcs11[1] = entries[23].data;
  1566. srcs12 = entries[24].data;
  1567. while(len--) {
  1568. sample = *srcs0[0];
  1569. sample += *srcs0[1];
  1570. sample += *srcs1[0];
  1571. sample += *srcs1[1];
  1572. sample += *srcs2[0];
  1573. sample += *srcs2[1];
  1574. sample += *srcs3[0];
  1575. sample += *srcs3[1];
  1576. sample += *srcs4[0];
  1577. sample += *srcs4[1];
  1578. sample += *srcs5[0];
  1579. sample += *srcs5[1];
  1580. sample += *srcs6[0];
  1581. sample += *srcs6[1];
  1582. sample += *srcs7[0];
  1583. sample += *srcs7[1];
  1584. sample += *srcs8[0];
  1585. sample += *srcs8[1];
  1586. sample += *srcs9[0];
  1587. sample += *srcs9[1];
  1588. sample += *srcs10[0];
  1589. sample += *srcs10[1];
  1590. sample += *srcs11[0];
  1591. sample += *srcs11[1];
  1592. sample += *srcs12;
  1593. if(sample > max_audioval ) {
  1594. *dst = max_audioval;
  1595. } else if(sample < min_audioval ) {
  1596. *dst = min_audioval;
  1597. } else {
  1598. *dst = sample;
  1599. }
  1600. srcs0[0]++;
  1601. srcs0[1]++;
  1602. srcs1[0]++;
  1603. srcs1[1]++;
  1604. srcs2[0]++;
  1605. srcs2[1]++;
  1606. srcs3[0]++;
  1607. srcs3[1]++;
  1608. srcs4[0]++;
  1609. srcs4[1]++;
  1610. srcs5[0]++;
  1611. srcs5[1]++;
  1612. srcs6[0]++;
  1613. srcs6[1]++;
  1614. srcs7[0]++;
  1615. srcs7[1]++;
  1616. srcs8[0]++;
  1617. srcs8[1]++;
  1618. srcs9[0]++;
  1619. srcs9[1]++;
  1620. srcs10[0]++;
  1621. srcs10[1]++;
  1622. srcs11[0]++;
  1623. srcs11[1]++;
  1624. srcs12++;
  1625. dst++;
  1626. }
  1627. return;
  1628. }
  1629. void MixAudio16_26(ALshort *dst, alMixEntry *entries) {
  1630. ALshort *srcs0[2];
  1631. ALshort *srcs1[2];
  1632. ALshort *srcs2[2];
  1633. ALshort *srcs3[2];
  1634. ALshort *srcs4[2];
  1635. ALshort *srcs5[2];
  1636. ALshort *srcs6[2];
  1637. ALshort *srcs7[2];
  1638. ALshort *srcs8[2];
  1639. ALshort *srcs9[2];
  1640. ALshort *srcs10[2];
  1641. ALshort *srcs11[2];
  1642. ALshort *srcs12[2];
  1643. int len;
  1644. int sample;
  1645. len = entries[0].bytes;
  1646. len /= sizeof(ALshort);
  1647. srcs0[0] = entries[0].data;
  1648. srcs0[1] = entries[1].data;
  1649. srcs1[0] = entries[2].data;
  1650. srcs1[1] = entries[3].data;
  1651. srcs2[0] = entries[4].data;
  1652. srcs2[1] = entries[5].data;
  1653. srcs3[0] = entries[6].data;
  1654. srcs3[1] = entries[7].data;
  1655. srcs4[0] = entries[8].data;
  1656. srcs4[1] = entries[9].data;
  1657. srcs5[0] = entries[10].data;
  1658. srcs5[1] = entries[11].data;
  1659. srcs6[0] = entries[12].data;
  1660. srcs6[1] = entries[13].data;
  1661. srcs7[0] = entries[14].data;
  1662. srcs7[1] = entries[15].data;
  1663. srcs8[0] = entries[16].data;
  1664. srcs8[1] = entries[17].data;
  1665. srcs9[0] = entries[18].data;
  1666. srcs9[1] = entries[19].data;
  1667. srcs10[0] = entries[20].data;
  1668. srcs10[1] = entries[21].data;
  1669. srcs11[0] = entries[22].data;
  1670. srcs11[1] = entries[23].data;
  1671. srcs12[0] = entries[24].data;
  1672. srcs12[1] = entries[25].data;
  1673. while(len--) {
  1674. sample = *srcs0[0];
  1675. sample += *srcs0[1];
  1676. sample += *srcs1[0];
  1677. sample += *srcs1[1];
  1678. sample += *srcs2[0];
  1679. sample += *srcs2[1];
  1680. sample += *srcs3[0];
  1681. sample += *srcs3[1];
  1682. sample += *srcs4[0];
  1683. sample += *srcs4[1];
  1684. sample += *srcs5[0];
  1685. sample += *srcs5[1];
  1686. sample += *srcs6[0];
  1687. sample += *srcs6[1];
  1688. sample += *srcs7[0];
  1689. sample += *srcs7[1];
  1690. sample += *srcs8[0];
  1691. sample += *srcs8[1];
  1692. sample += *srcs9[0];
  1693. sample += *srcs9[1];
  1694. sample += *srcs10[0];
  1695. sample += *srcs10[1];
  1696. sample += *srcs11[0];
  1697. sample += *srcs11[1];
  1698. sample += *srcs12[0];
  1699. sample += *srcs12[1];
  1700. if(sample > max_audioval ) {
  1701. *dst = max_audioval;
  1702. } else if(sample < min_audioval ) {
  1703. *dst = min_audioval;
  1704. } else {
  1705. *dst = sample;
  1706. }
  1707. srcs0[0]++;
  1708. srcs0[1]++;
  1709. srcs1[0]++;
  1710. srcs1[1]++;
  1711. srcs2[0]++;
  1712. srcs2[1]++;
  1713. srcs3[0]++;
  1714. srcs3[1]++;
  1715. srcs4[0]++;
  1716. srcs4[1]++;
  1717. srcs5[0]++;
  1718. srcs5[1]++;
  1719. srcs6[0]++;
  1720. srcs6[1]++;
  1721. srcs7[0]++;
  1722. srcs7[1]++;
  1723. srcs8[0]++;
  1724. srcs8[1]++;
  1725. srcs9[0]++;
  1726. srcs9[1]++;
  1727. srcs10[0]++;
  1728. srcs10[1]++;
  1729. srcs11[0]++;
  1730. srcs11[1]++;
  1731. srcs12[0]++;
  1732. srcs12[1]++;
  1733. dst++;
  1734. }
  1735. return;
  1736. }
  1737. void MixAudio16_27(ALshort *dst, alMixEntry *entries) {
  1738. ALshort *srcs0[2];
  1739. ALshort *srcs1[2];
  1740. ALshort *srcs2[2];
  1741. ALshort *srcs3[2];
  1742. ALshort *srcs4[2];
  1743. ALshort *srcs5[2];
  1744. ALshort *srcs6[2];
  1745. ALshort *srcs7[2];
  1746. ALshort *srcs8[2];
  1747. ALshort *srcs9[2];
  1748. ALshort *srcs10[2];
  1749. ALshort *srcs11[2];
  1750. ALshort *srcs12[2];
  1751. ALshort *srcs13;
  1752. int len;
  1753. int sample;
  1754. len = entries[0].bytes;
  1755. len /= sizeof(ALshort);
  1756. srcs0[0] = entries[0].data;
  1757. srcs0[1] = entries[1].data;
  1758. srcs1[0] = entries[2].data;
  1759. srcs1[1] = entries[3].data;
  1760. srcs2[0] = entries[4].data;
  1761. srcs2[1] = entries[5].data;
  1762. srcs3[0] = entries[6].data;
  1763. srcs3[1] = entries[7].data;
  1764. srcs4[0] = entries[8].data;
  1765. srcs4[1] = entries[9].data;
  1766. srcs5[0] = entries[10].data;
  1767. srcs5[1] = entries[11].data;
  1768. srcs6[0] = entries[12].data;
  1769. srcs6[1] = entries[13].data;
  1770. srcs7[0] = entries[14].data;
  1771. srcs7[1] = entries[15].data;
  1772. srcs8[0] = entries[16].data;
  1773. srcs8[1] = entries[17].data;
  1774. srcs9[0] = entries[18].data;
  1775. srcs9[1] = entries[19].data;
  1776. srcs10[0] = entries[20].data;
  1777. srcs10[1] = entries[21].data;
  1778. srcs11[0] = entries[22].data;
  1779. srcs11[1] = entries[23].data;
  1780. srcs12[0] = entries[24].data;
  1781. srcs12[1] = entries[25].data;
  1782. srcs13 = entries[26].data;
  1783. while(len--) {
  1784. sample = *srcs0[0];
  1785. sample += *srcs0[1];
  1786. sample += *srcs1[0];
  1787. sample += *srcs1[1];
  1788. sample += *srcs2[0];
  1789. sample += *srcs2[1];
  1790. sample += *srcs3[0];
  1791. sample += *srcs3[1];
  1792. sample += *srcs4[0];
  1793. sample += *srcs4[1];
  1794. sample += *srcs5[0];
  1795. sample += *srcs5[1];
  1796. sample += *srcs6[0];
  1797. sample += *srcs6[1];
  1798. sample += *srcs7[0];
  1799. sample += *srcs7[1];
  1800. sample += *srcs8[0];
  1801. sample += *srcs8[1];
  1802. sample += *srcs9[0];
  1803. sample += *srcs9[1];
  1804. sample += *srcs10[0];
  1805. sample += *srcs10[1];
  1806. sample += *srcs11[0];
  1807. sample += *srcs11[1];
  1808. sample += *srcs12[0];
  1809. sample += *srcs12[1];
  1810. sample += *srcs13;
  1811. if(sample > max_audioval ) {
  1812. *dst = max_audioval;
  1813. } else if(sample < min_audioval ) {
  1814. *dst = min_audioval;
  1815. } else {
  1816. *dst = sample;
  1817. }
  1818. srcs0[0]++;
  1819. srcs0[1]++;
  1820. srcs1[0]++;
  1821. srcs1[1]++;
  1822. srcs2[0]++;
  1823. srcs2[1]++;
  1824. srcs3[0]++;
  1825. srcs3[1]++;
  1826. srcs4[0]++;
  1827. srcs4[1]++;
  1828. srcs5[0]++;
  1829. srcs5[1]++;
  1830. srcs6[0]++;
  1831. srcs6[1]++;
  1832. srcs7[0]++;
  1833. srcs7[1]++;
  1834. srcs8[0]++;
  1835. srcs8[1]++;
  1836. srcs9[0]++;
  1837. srcs9[1]++;
  1838. srcs10[0]++;
  1839. srcs10[1]++;
  1840. srcs11[0]++;
  1841. srcs11[1]++;
  1842. srcs12[0]++;
  1843. srcs12[1]++;
  1844. srcs13++;
  1845. dst++;
  1846. }
  1847. return;
  1848. }
  1849. void MixAudio16_28(ALshort *dst, alMixEntry *entries) {
  1850. ALshort *srcs0[2];
  1851. ALshort *srcs1[2];
  1852. ALshort *srcs2[2];
  1853. ALshort *srcs3[2];
  1854. ALshort *srcs4[2];
  1855. ALshort *srcs5[2];
  1856. ALshort *srcs6[2];
  1857. ALshort *srcs7[2];
  1858. ALshort *srcs8[2];
  1859. ALshort *srcs9[2];
  1860. ALshort *srcs10[2];
  1861. ALshort *srcs11[2];
  1862. ALshort *srcs12[2];
  1863. ALshort *srcs13[2];
  1864. int len;
  1865. int sample;
  1866. len = entries[0].bytes;
  1867. len /= sizeof(ALshort);
  1868. srcs0[0] = entries[0].data;
  1869. srcs0[1] = entries[1].data;
  1870. srcs1[0] = entries[2].data;
  1871. srcs1[1] = entries[3].data;
  1872. srcs2[0] = entries[4].data;
  1873. srcs2[1] = entries[5].data;
  1874. srcs3[0] = entries[6].data;
  1875. srcs3[1] = entries[7].data;
  1876. srcs4[0] = entries[8].data;
  1877. srcs4[1] = entries[9].data;
  1878. srcs5[0] = entries[10].data;
  1879. srcs5[1] = entries[11].data;
  1880. srcs6[0] = entries[12].data;
  1881. srcs6[1] = entries[13].data;
  1882. srcs7[0] = entries[14].data;
  1883. srcs7[1] = entries[15].data;
  1884. srcs8[0] = entries[16].data;
  1885. srcs8[1] = entries[17].data;
  1886. srcs9[0] = entries[18].data;
  1887. srcs9[1] = entries[19].data;
  1888. srcs10[0] = entries[20].data;
  1889. srcs10[1] = entries[21].data;
  1890. srcs11[0] = entries[22].data;
  1891. srcs11[1] = entries[23].data;
  1892. srcs12[0] = entries[24].data;
  1893. srcs12[1] = entries[25].data;
  1894. srcs13[0] = entries[26].data;
  1895. srcs13[1] = entries[27].data;
  1896. while(len--) {
  1897. sample = *srcs0[0];
  1898. sample += *srcs0[1];
  1899. sample += *srcs1[0];
  1900. sample += *srcs1[1];
  1901. sample += *srcs2[0];
  1902. sample += *srcs2[1];
  1903. sample += *srcs3[0];
  1904. sample += *srcs3[1];
  1905. sample += *srcs4[0];
  1906. sample += *srcs4[1];
  1907. sample += *srcs5[0];
  1908. sample += *srcs5[1];
  1909. sample += *srcs6[0];
  1910. sample += *srcs6[1];
  1911. sample += *srcs7[0];
  1912. sample += *srcs7[1];
  1913. sample += *srcs8[0];
  1914. sample += *srcs8[1];
  1915. sample += *srcs9[0];
  1916. sample += *srcs9[1];
  1917. sample += *srcs10[0];
  1918. sample += *srcs10[1];
  1919. sample += *srcs11[0];
  1920. sample += *srcs11[1];
  1921. sample += *srcs12[0];
  1922. sample += *srcs12[1];
  1923. sample += *srcs13[0];
  1924. sample += *srcs13[1];
  1925. if(sample > max_audioval ) {
  1926. *dst = max_audioval;
  1927. } else if(sample < min_audioval ) {
  1928. *dst = min_audioval;
  1929. } else {
  1930. *dst = sample;
  1931. }
  1932. srcs0[0]++;
  1933. srcs0[1]++;
  1934. srcs1[0]++;
  1935. srcs1[1]++;
  1936. srcs2[0]++;
  1937. srcs2[1]++;
  1938. srcs3[0]++;
  1939. srcs3[1]++;
  1940. srcs4[0]++;
  1941. srcs4[1]++;
  1942. srcs5[0]++;
  1943. srcs5[1]++;
  1944. srcs6[0]++;
  1945. srcs6[1]++;
  1946. srcs7[0]++;
  1947. srcs7[1]++;
  1948. srcs8[0]++;
  1949. srcs8[1]++;
  1950. srcs9[0]++;
  1951. srcs9[1]++;
  1952. srcs10[0]++;
  1953. srcs10[1]++;
  1954. srcs11[0]++;
  1955. srcs11[1]++;
  1956. srcs12[0]++;
  1957. srcs12[1]++;
  1958. srcs13[0]++;
  1959. srcs13[1]++;
  1960. dst++;
  1961. }
  1962. return;
  1963. }
  1964. void MixAudio16_29(ALshort *dst, alMixEntry *entries) {
  1965. ALshort *srcs0[2];
  1966. ALshort *srcs1[2];
  1967. ALshort *srcs2[2];
  1968. ALshort *srcs3[2];
  1969. ALshort *srcs4[2];
  1970. ALshort *srcs5[2];
  1971. ALshort *srcs6[2];
  1972. ALshort *srcs7[2];
  1973. ALshort *srcs8[2];
  1974. ALshort *srcs9[2];
  1975. ALshort *srcs10[2];
  1976. ALshort *srcs11[2];
  1977. ALshort *srcs12[2];
  1978. ALshort *srcs13[2];
  1979. ALshort *srcs14;
  1980. int len;
  1981. int sample;
  1982. len = entries[0].bytes;
  1983. len /= sizeof(ALshort);
  1984. srcs0[0] = entries[0].data;
  1985. srcs0[1] = entries[1].data;
  1986. srcs1[0] = entries[2].data;
  1987. srcs1[1] = entries[3].data;
  1988. srcs2[0] = entries[4].data;
  1989. srcs2[1] = entries[5].data;
  1990. srcs3[0] = entries[6].data;
  1991. srcs3[1] = entries[7].data;
  1992. srcs4[0] = entries[8].data;
  1993. srcs4[1] = entries[9].data;
  1994. srcs5[0] = entries[10].data;
  1995. srcs5[1] = entries[11].data;
  1996. srcs6[0] = entries[12].data;
  1997. srcs6[1] = entries[13].data;
  1998. srcs7[0] = entries[14].data;
  1999. srcs7[1] = entries[15].data;
  2000. srcs8[0] = entries[16].data;
  2001. srcs8[1] = entries[17].data;
  2002. srcs9[0] = entries[18].data;
  2003. srcs9[1] = entries[19].data;
  2004. srcs10[0] = entries[20].data;
  2005. srcs10[1] = entries[21].data;
  2006. srcs11[0] = entries[22].data;
  2007. srcs11[1] = entries[23].data;
  2008. srcs12[0] = entries[24].data;
  2009. srcs12[1] = entries[25].data;
  2010. srcs13[0] = entries[26].data;
  2011. srcs13[1] = entries[27].data;
  2012. srcs14 = entries[28].data;
  2013. while(len--) {
  2014. sample = *srcs0[0];
  2015. sample += *srcs0[1];
  2016. sample += *srcs1[0];
  2017. sample += *srcs1[1];
  2018. sample += *srcs2[0];
  2019. sample += *srcs2[1];
  2020. sample += *srcs3[0];
  2021. sample += *srcs3[1];
  2022. sample += *srcs4[0];
  2023. sample += *srcs4[1];
  2024. sample += *srcs5[0];
  2025. sample += *srcs5[1];
  2026. sample += *srcs6[0];
  2027. sample += *srcs6[1];
  2028. sample += *srcs7[0];
  2029. sample += *srcs7[1];
  2030. sample += *srcs8[0];
  2031. sample += *srcs8[1];
  2032. sample += *srcs9[0];
  2033. sample += *srcs9[1];
  2034. sample += *srcs10[0];
  2035. sample += *srcs10[1];
  2036. sample += *srcs11[0];
  2037. sample += *srcs11[1];
  2038. sample += *srcs12[0];
  2039. sample += *srcs12[1];
  2040. sample += *srcs13[0];
  2041. sample += *srcs13[1];
  2042. sample += *srcs14;
  2043. if(sample > max_audioval ) {
  2044. *dst = max_audioval;
  2045. } else if(sample < min_audioval ) {
  2046. *dst = min_audioval;
  2047. } else {
  2048. *dst = sample;
  2049. }
  2050. srcs0[0]++;
  2051. srcs0[1]++;
  2052. srcs1[0]++;
  2053. srcs1[1]++;
  2054. srcs2[0]++;
  2055. srcs2[1]++;
  2056. srcs3[0]++;
  2057. srcs3[1]++;
  2058. srcs4[0]++;
  2059. srcs4[1]++;
  2060. srcs5[0]++;
  2061. srcs5[1]++;
  2062. srcs6[0]++;
  2063. srcs6[1]++;
  2064. srcs7[0]++;
  2065. srcs7[1]++;
  2066. srcs8[0]++;
  2067. srcs8[1]++;
  2068. srcs9[0]++;
  2069. srcs9[1]++;
  2070. srcs10[0]++;
  2071. srcs10[1]++;
  2072. srcs11[0]++;
  2073. srcs11[1]++;
  2074. srcs12[0]++;
  2075. srcs12[1]++;
  2076. srcs13[0]++;
  2077. srcs13[1]++;
  2078. srcs14++;
  2079. dst++;
  2080. }
  2081. return;
  2082. }
  2083. void MixAudio16_30(ALshort *dst, alMixEntry *entries) {
  2084. ALshort *srcs0[2];
  2085. ALshort *srcs1[2];
  2086. ALshort *srcs2[2];
  2087. ALshort *srcs3[2];
  2088. ALshort *srcs4[2];
  2089. ALshort *srcs5[2];
  2090. ALshort *srcs6[2];
  2091. ALshort *srcs7[2];
  2092. ALshort *srcs8[2];
  2093. ALshort *srcs9[2];
  2094. ALshort *srcs10[2];
  2095. ALshort *srcs11[2];
  2096. ALshort *srcs12[2];
  2097. ALshort *srcs13[2];
  2098. ALshort *srcs14[2];
  2099. int len;
  2100. int sample;
  2101. len = entries[0].bytes;
  2102. len /= sizeof(ALshort);
  2103. srcs0[0] = entries[0].data;
  2104. srcs0[1] = entries[1].data;
  2105. srcs1[0] = entries[2].data;
  2106. srcs1[1] = entries[3].data;
  2107. srcs2[0] = entries[4].data;
  2108. srcs2[1] = entries[5].data;
  2109. srcs3[0] = entries[6].data;
  2110. srcs3[1] = entries[7].data;
  2111. srcs4[0] = entries[8].data;
  2112. srcs4[1] = entries[9].data;
  2113. srcs5[0] = entries[10].data;
  2114. srcs5[1] = entries[11].data;
  2115. srcs6[0] = entries[12].data;
  2116. srcs6[1] = entries[13].data;
  2117. srcs7[0] = entries[14].data;
  2118. srcs7[1] = entries[15].data;
  2119. srcs8[0] = entries[16].data;
  2120. srcs8[1] = entries[17].data;
  2121. srcs9[0] = entries[18].data;
  2122. srcs9[1] = entries[19].data;
  2123. srcs10[0] = entries[20].data;
  2124. srcs10[1] = entries[21].data;
  2125. srcs11[0] = entries[22].data;
  2126. srcs11[1] = entries[23].data;
  2127. srcs12[0] = entries[24].data;
  2128. srcs12[1] = entries[25].data;
  2129. srcs13[0] = entries[26].data;
  2130. srcs13[1] = entries[27].data;
  2131. srcs14[0] = entries[28].data;
  2132. srcs14[1] = entries[29].data;
  2133. while(len--) {
  2134. sample = *srcs0[0];
  2135. sample += *srcs0[1];
  2136. sample += *srcs1[0];
  2137. sample += *srcs1[1];
  2138. sample += *srcs2[0];
  2139. sample += *srcs2[1];
  2140. sample += *srcs3[0];
  2141. sample += *srcs3[1];
  2142. sample += *srcs4[0];
  2143. sample += *srcs4[1];
  2144. sample += *srcs5[0];
  2145. sample += *srcs5[1];
  2146. sample += *srcs6[0];
  2147. sample += *srcs6[1];
  2148. sample += *srcs7[0];
  2149. sample += *srcs7[1];
  2150. sample += *srcs8[0];
  2151. sample += *srcs8[1];
  2152. sample += *srcs9[0];
  2153. sample += *srcs9[1];
  2154. sample += *srcs10[0];
  2155. sample += *srcs10[1];
  2156. sample += *srcs11[0];
  2157. sample += *srcs11[1];
  2158. sample += *srcs12[0];
  2159. sample += *srcs12[1];
  2160. sample += *srcs13[0];
  2161. sample += *srcs13[1];
  2162. sample += *srcs14[0];
  2163. sample += *srcs14[1];
  2164. if(sample > max_audioval ) {
  2165. *dst = max_audioval;
  2166. } else if(sample < min_audioval ) {
  2167. *dst = min_audioval;
  2168. } else {
  2169. *dst = sample;
  2170. }
  2171. srcs0[0]++;
  2172. srcs0[1]++;
  2173. srcs1[0]++;
  2174. srcs1[1]++;
  2175. srcs2[0]++;
  2176. srcs2[1]++;
  2177. srcs3[0]++;
  2178. srcs3[1]++;
  2179. srcs4[0]++;
  2180. srcs4[1]++;
  2181. srcs5[0]++;
  2182. srcs5[1]++;
  2183. srcs6[0]++;
  2184. srcs6[1]++;
  2185. srcs7[0]++;
  2186. srcs7[1]++;
  2187. srcs8[0]++;
  2188. srcs8[1]++;
  2189. srcs9[0]++;
  2190. srcs9[1]++;
  2191. srcs10[0]++;
  2192. srcs10[1]++;
  2193. srcs11[0]++;
  2194. srcs11[1]++;
  2195. srcs12[0]++;
  2196. srcs12[1]++;
  2197. srcs13[0]++;
  2198. srcs13[1]++;
  2199. srcs14[0]++;
  2200. srcs14[1]++;
  2201. dst++;
  2202. }
  2203. return;
  2204. }
  2205. void MixAudio16_31(ALshort *dst, alMixEntry *entries) {
  2206. ALshort *srcs0[2];
  2207. ALshort *srcs1[2];
  2208. ALshort *srcs2[2];
  2209. ALshort *srcs3[2];
  2210. ALshort *srcs4[2];
  2211. ALshort *srcs5[2];
  2212. ALshort *srcs6[2];
  2213. ALshort *srcs7[2];
  2214. ALshort *srcs8[2];
  2215. ALshort *srcs9[2];
  2216. ALshort *srcs10[2];
  2217. ALshort *srcs11[2];
  2218. ALshort *srcs12[2];
  2219. ALshort *srcs13[2];
  2220. ALshort *srcs14[2];
  2221. ALshort *srcs15;
  2222. int len;
  2223. int sample;
  2224. len = entries[0].bytes;
  2225. len /= sizeof(ALshort);
  2226. srcs0[0] = entries[0].data;
  2227. srcs0[1] = entries[1].data;
  2228. srcs1[0] = entries[2].data;
  2229. srcs1[1] = entries[3].data;
  2230. srcs2[0] = entries[4].data;
  2231. srcs2[1] = entries[5].data;
  2232. srcs3[0] = entries[6].data;
  2233. srcs3[1] = entries[7].data;
  2234. srcs4[0] = entries[8].data;
  2235. srcs4[1] = entries[9].data;
  2236. srcs5[0] = entries[10].data;
  2237. srcs5[1] = entries[11].data;
  2238. srcs6[0] = entries[12].data;
  2239. srcs6[1] = entries[13].data;
  2240. srcs7[0] = entries[14].data;
  2241. srcs7[1] = entries[15].data;
  2242. srcs8[0] = entries[16].data;
  2243. srcs8[1] = entries[17].data;
  2244. srcs9[0] = entries[18].data;
  2245. srcs9[1] = entries[19].data;
  2246. srcs10[0] = entries[20].data;
  2247. srcs10[1] = entries[21].data;
  2248. srcs11[0] = entries[22].data;
  2249. srcs11[1] = entries[23].data;
  2250. srcs12[0] = entries[24].data;
  2251. srcs12[1] = entries[25].data;
  2252. srcs13[0] = entries[26].data;
  2253. srcs13[1] = entries[27].data;
  2254. srcs14[0] = entries[28].data;
  2255. srcs14[1] = entries[29].data;
  2256. srcs15 = entries[30].data;
  2257. while(len--) {
  2258. sample = *srcs0[0];
  2259. sample += *srcs0[1];
  2260. sample += *srcs1[0];
  2261. sample += *srcs1[1];
  2262. sample += *srcs2[0];
  2263. sample += *srcs2[1];
  2264. sample += *srcs3[0];
  2265. sample += *srcs3[1];
  2266. sample += *srcs4[0];
  2267. sample += *srcs4[1];
  2268. sample += *srcs5[0];
  2269. sample += *srcs5[1];
  2270. sample += *srcs6[0];
  2271. sample += *srcs6[1];
  2272. sample += *srcs7[0];
  2273. sample += *srcs7[1];
  2274. sample += *srcs8[0];
  2275. sample += *srcs8[1];
  2276. sample += *srcs9[0];
  2277. sample += *srcs9[1];
  2278. sample += *srcs10[0];
  2279. sample += *srcs10[1];
  2280. sample += *srcs11[0];
  2281. sample += *srcs11[1];
  2282. sample += *srcs12[0];
  2283. sample += *srcs12[1];
  2284. sample += *srcs13[0];
  2285. sample += *srcs13[1];
  2286. sample += *srcs14[0];
  2287. sample += *srcs14[1];
  2288. sample += *srcs15;
  2289. if(sample > max_audioval ) {
  2290. *dst = max_audioval;
  2291. } else if(sample < min_audioval ) {
  2292. *dst = min_audioval;
  2293. } else {
  2294. *dst = sample;
  2295. }
  2296. srcs0[0]++;
  2297. srcs0[1]++;
  2298. srcs1[0]++;
  2299. srcs1[1]++;
  2300. srcs2[0]++;
  2301. srcs2[1]++;
  2302. srcs3[0]++;
  2303. srcs3[1]++;
  2304. srcs4[0]++;
  2305. srcs4[1]++;
  2306. srcs5[0]++;
  2307. srcs5[1]++;
  2308. srcs6[0]++;
  2309. srcs6[1]++;
  2310. srcs7[0]++;
  2311. srcs7[1]++;
  2312. srcs8[0]++;
  2313. srcs8[1]++;
  2314. srcs9[0]++;
  2315. srcs9[1]++;
  2316. srcs10[0]++;
  2317. srcs10[1]++;
  2318. srcs11[0]++;
  2319. srcs11[1]++;
  2320. srcs12[0]++;
  2321. srcs12[1]++;
  2322. srcs13[0]++;
  2323. srcs13[1]++;
  2324. srcs14[0]++;
  2325. srcs14[1]++;
  2326. srcs15++;
  2327. dst++;
  2328. }
  2329. return;
  2330. }
  2331. void MixAudio16_32(AL