aboutsummaryrefslogtreecommitdiffstats
path: root/codecs/mp3/src/iwinbQ.c
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2003-11-04 02:40:09 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2003-11-04 02:40:09 +0000
commitf8c39a08f6ff651221ff896f8a174abf635f3a0a (patch)
treeac950750c9c1b65bb563df9c6506858c7f8f30c1 /codecs/mp3/src/iwinbQ.c
parentad46ab972ccf439d1dd3a533335b54089c53e431 (diff)
Remove really broke MP3 stuff in favor of G.726 in the near future
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@1689 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'codecs/mp3/src/iwinbQ.c')
-rwxr-xr-xcodecs/mp3/src/iwinbQ.c712
1 files changed, 0 insertions, 712 deletions
diff --git a/codecs/mp3/src/iwinbQ.c b/codecs/mp3/src/iwinbQ.c
deleted file mode 100755
index 15c573a16..000000000
--- a/codecs/mp3/src/iwinbQ.c
+++ /dev/null
@@ -1,712 +0,0 @@
-/*____________________________________________________________________________
-
- FreeAmp - The Free MP3 Player
-
- MP3 Decoder originally Copyright (C) 1995-1997 Xing Technology
- Corp. http://www.xingtech.com
-
- Portions Copyright (C) 1998 EMusic.com
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- $Id$
-____________________________________________________________________________*/
-
-/*----- iwinbq.c ---------------------------------------------------
-
-portable c
-mpeg1/2 Layer I/II audio decode
-
-conditional include to iwinm.c
-
-quick integer window - 8 bit output
-
-mods 1/8/97 warnings
-
---------------------------------------------------------------*/
-/*--------------------------------------------------------------------*/
-void i_windowB(WININT * vbuf, int vb_ptr, unsigned char *pcm)
-{
- int i, j;
- unsigned int si, bx;
- WINCOEF *coef;
- INT32 sum;
-
-/*-- first 16 --*/
- si = (vb_ptr + (16 + 3 * 64)) & 511;
- bx = (si + (32 + 512 - 3 * 64 + 2 * 64)) & 511;
- coef = iwincoef;
- for (i = 0; i < 16; i++)
- {
- sum = -WINMULT(vbuf[bx], (*coef++));
- for (j = 0; j < 3; j++)
- {
- bx = (bx + 64) & 511;
- sum += WINMULT(vbuf[si], (*coef++));
- si = (si + 64) & 511;
- sum -= WINMULT(vbuf[bx], (*coef++));
- }
- si = (si + (5 * 64 + 1)) & 511;
- bx = (bx + (64 + 4 * 64 - 1)) & 511;
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm++ = (unsigned char) ((sum >> 8) ^ 0x80);
- }
-/*-- special case --*/
- bx = (bx + (512 - 64)) & 511;
- sum = WINMULT(vbuf[bx], (*coef++));
- for (j = 0; j < 3; j++)
- {
- bx = (bx + 64) & 511;
- sum += WINMULT(vbuf[bx], (*coef++));
- }
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm++ = (unsigned char) ((sum >> 8) ^ 0x80);
-
-/*-- last 15 --*/
- coef = iwincoef + 111; /* back pass through coefs */
- si = (si + (512 - 3 * 64 + 2 * 64 - 1)) & 511;
- bx = (bx + (64 + 3 * 64 + 2 * 64 + 1)) & 511;
- for (i = 0; i < 15; i++)
- {
- sum = WINMULT(vbuf[si], (*coef--));
- for (j = 0; j < 3; j++)
- {
- si = (si + 64) & 511;
- sum += WINMULT(vbuf[bx], (*coef--));
- bx = (bx + 64) & 511;
- sum += WINMULT(vbuf[si], (*coef--));
- }
- si = (si + (64 - 1 + 4 * 64)) & 511;
- bx = (bx + (5 * 64 + 1)) & 511;
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm++ = (unsigned char) ((sum >> 8) ^ 0x80);
- }
-}
-/*------------------------------------------------------------*/
-void i_windowB_dual(WININT * vbuf, int vb_ptr, unsigned char *pcm)
-{
-/* dual window interleaves output */
- int i, j;
- unsigned int si, bx;
- WINCOEF *coef;
- INT32 sum;
-
-/*-- first 16 --*/
- si = (vb_ptr + (16 + 3 * 64)) & 511;
- bx = (si + (32 + 512 - 3 * 64 + 2 * 64)) & 511;
- coef = iwincoef;
- for (i = 0; i < 16; i++)
- {
- sum = -WINMULT(vbuf[bx], (*coef++));
- for (j = 0; j < 3; j++)
- {
- bx = (bx + 64) & 511;
- sum += WINMULT(vbuf[si], (*coef++));
- si = (si + 64) & 511;
- sum -= WINMULT(vbuf[bx], (*coef++));
- }
- si = (si + (5 * 64 + 1)) & 511;
- bx = (bx + (64 + 4 * 64 - 1)) & 511;
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm = (unsigned char) ((sum >> 8) ^ 0x80);
- pcm += 2;
- }
-/*-- special case --*/
- bx = (bx + (512 - 64)) & 511;
- sum = WINMULT(vbuf[bx], (*coef++));
- for (j = 0; j < 3; j++)
- {
- bx = (bx + 64) & 511;
- sum += WINMULT(vbuf[bx], (*coef++));
- }
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm = (unsigned char) ((sum >> 8) ^ 0x80);
- pcm += 2;
-
-/*-- last 15 --*/
- coef = iwincoef + 111; /* back pass through coefs */
- si = (si + (512 - 3 * 64 + 2 * 64 - 1)) & 511;
- bx = (bx + (64 + 3 * 64 + 2 * 64 + 1)) & 511;
- for (i = 0; i < 15; i++)
- {
- sum = WINMULT(vbuf[si], (*coef--));
- for (j = 0; j < 3; j++)
- {
- si = (si + 64) & 511;
- sum += WINMULT(vbuf[bx], (*coef--));
- bx = (bx + 64) & 511;
- sum += WINMULT(vbuf[si], (*coef--));
- }
- si = (si + (64 - 1 + 4 * 64)) & 511;
- bx = (bx + (5 * 64 + 1)) & 511;
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm = (unsigned char) ((sum >> 8) ^ 0x80);
- pcm += 2;
- }
-}
-/*------------------------------------------------------------*/
-void i_windowB_dual_right(WININT * vbuf, int vb_ptr, unsigned char *pcm)
-{
-/* right identical to dual, for asm */
-/* dual window interleaves output */
- int i, j;
- unsigned int si, bx;
- WINCOEF *coef;
- INT32 sum;
-
-/*-- first 16 --*/
- si = (vb_ptr + (16 + 3 * 64)) & 511;
- bx = (si + (32 + 512 - 3 * 64 + 2 * 64)) & 511;
- coef = iwincoef;
- for (i = 0; i < 16; i++)
- {
- sum = -WINMULT(vbuf[bx], (*coef++));
- for (j = 0; j < 3; j++)
- {
- bx = (bx + 64) & 511;
- sum += WINMULT(vbuf[si], (*coef++));
- si = (si + 64) & 511;
- sum -= WINMULT(vbuf[bx], (*coef++));
- }
- si = (si + (5 * 64 + 1)) & 511;
- bx = (bx + (64 + 4 * 64 - 1)) & 511;
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm = (unsigned char) ((sum >> 8) ^ 0x80);
- pcm += 2;
- }
-/*-- special case --*/
- bx = (bx + (512 - 64)) & 511;
- sum = WINMULT(vbuf[bx], (*coef++));
- for (j = 0; j < 3; j++)
- {
- bx = (bx + 64) & 511;
- sum += WINMULT(vbuf[bx], (*coef++));
- }
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm = (unsigned char) ((sum >> 8) ^ 0x80);
- pcm += 2;
-
-/*-- last 15 --*/
- coef = iwincoef + 111; /* back pass through coefs */
- si = (si + (512 - 3 * 64 + 2 * 64 - 1)) & 511;
- bx = (bx + (64 + 3 * 64 + 2 * 64 + 1)) & 511;
- for (i = 0; i < 15; i++)
- {
- sum = WINMULT(vbuf[si], (*coef--));
- for (j = 0; j < 3; j++)
- {
- si = (si + 64) & 511;
- sum += WINMULT(vbuf[bx], (*coef--));
- bx = (bx + 64) & 511;
- sum += WINMULT(vbuf[si], (*coef--));
- }
- si = (si + (64 - 1 + 4 * 64)) & 511;
- bx = (bx + (5 * 64 + 1)) & 511;
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm = (unsigned char) ((sum >> 8) ^ 0x80);
- pcm += 2;
- }
-}
-/*------------------------------------------------------------*/
-/*------------------------------------------------------------*/
-/*------------------- 16 pt window ------------------------------*/
-void i_windowB16(WININT * vbuf, int vb_ptr, unsigned char *pcm)
-{
- int i, j;
- unsigned char si, bx;
- WINCOEF *coef;
- INT32 sum;
-
-
-/*-- first 8 --*/
- si = (unsigned char) (vb_ptr + 8 + 3 * 32);
- bx = (unsigned char) (si + (16 + 256 - 3 * 32 + 2 * 32));
- coef = iwincoef;
- for (i = 0; i < 8; i++)
- {
- sum = -WINMULT(vbuf[bx], (*coef++));
- for (j = 0; j < 3; j++)
- {
- bx += 32;
- sum += WINMULT(vbuf[si], (*coef++));
- si += 32;
- sum -= WINMULT(vbuf[bx], (*coef++));
- }
- si += (5 * 32 + 1);
- bx += (32 + 4 * 32 - 1);
- coef += 7;
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm++ = (unsigned char) ((sum >> 8) ^ 0x80);
- }
-/*-- special case --*/
- bx += (256 - 32);
- sum = WINMULT(vbuf[bx], (*coef++));
- for (j = 0; j < 3; j++)
- {
- bx += 32;
- sum += WINMULT(vbuf[bx], (*coef++));
- }
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm++ = (unsigned char) ((sum >> 8) ^ 0x80);
-
-/*-- last 7 --*/
- coef = iwincoef + (111 - 7); /* back pass through coefs */
- si += (256 + -3 * 32 + 2 * 32 - 1);
- bx += (32 + 3 * 32 + 2 * 32 + 1);
- for (i = 0; i < 7; i++)
- {
- sum = WINMULT(vbuf[si], (*coef--));
- for (j = 0; j < 3; j++)
- {
- si += 32;
- sum += WINMULT(vbuf[bx], (*coef--));
- bx += 32;
- sum += WINMULT(vbuf[si], (*coef--));
- }
- si += (32 - 1 + 4 * 32);
- bx += (5 * 32 + 1);
- coef -= 7;
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm++ = (unsigned char) ((sum >> 8) ^ 0x80);
- }
-}
-/*--------------- 16 pt dual window (interleaved output) -----------------*/
-void i_windowB16_dual(WININT * vbuf, int vb_ptr, unsigned char *pcm)
-{
- int i, j;
- unsigned char si, bx;
- WINCOEF *coef;
- INT32 sum;
-
-
-/*-- first 8 --*/
- si = (unsigned char) (vb_ptr + 8 + 3 * 32);
- bx = (unsigned char) (si + (16 + 256 - 3 * 32 + 2 * 32));
- coef = iwincoef;
- for (i = 0; i < 8; i++)
- {
- sum = -WINMULT(vbuf[bx], (*coef++));
- for (j = 0; j < 3; j++)
- {
- bx += 32;
- sum += WINMULT(vbuf[si], (*coef++));
- si += 32;
- sum -= WINMULT(vbuf[bx], (*coef++));
- }
- si += (5 * 32 + 1);
- bx += (32 + 4 * 32 - 1);
- coef += 7;
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm = (unsigned char) ((sum >> 8) ^ 0x80);
- pcm += 2;
- }
-/*-- special case --*/
- bx += (256 - 32);
- sum = WINMULT(vbuf[bx], (*coef++));
- for (j = 0; j < 3; j++)
- {
- bx += 32;
- sum += WINMULT(vbuf[bx], (*coef++));
- }
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm = (unsigned char) ((sum >> 8) ^ 0x80);
- pcm += 2;
-
-/*-- last 7 --*/
- coef = iwincoef + (111 - 7); /* back pass through coefs */
- si += (256 + -3 * 32 + 2 * 32 - 1);
- bx += (32 + 3 * 32 + 2 * 32 + 1);
- for (i = 0; i < 7; i++)
- {
- sum = WINMULT(vbuf[si], (*coef--));
- for (j = 0; j < 3; j++)
- {
- si += 32;
- sum += WINMULT(vbuf[bx], (*coef--));
- bx += 32;
- sum += WINMULT(vbuf[si], (*coef--));
- }
- si += (32 - 1 + 4 * 32);
- bx += (5 * 32 + 1);
- coef -= 7;
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm = (unsigned char) ((sum >> 8) ^ 0x80);
- pcm += 2;
- }
-}
-/*--------------- 16 pt dual window (interleaved output) -----------------*/
-void i_windowB16_dual_right(WININT * vbuf, int vb_ptr, unsigned char *pcm)
-{
-/* right identical to dual, for asm */
- int i, j;
- unsigned char si, bx;
- WINCOEF *coef;
- INT32 sum;
-
-
-/*-- first 8 --*/
- si = (unsigned char) (vb_ptr + 8 + 3 * 32);
- bx = (unsigned char) (si + (16 + 256 - 3 * 32 + 2 * 32));
- coef = iwincoef;
- for (i = 0; i < 8; i++)
- {
- sum = -WINMULT(vbuf[bx], (*coef++));
- for (j = 0; j < 3; j++)
- {
- bx += 32;
- sum += WINMULT(vbuf[si], (*coef++));
- si += 32;
- sum -= WINMULT(vbuf[bx], (*coef++));
- }
- si += (5 * 32 + 1);
- bx += (32 + 4 * 32 - 1);
- coef += 7;
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm = (unsigned char) ((sum >> 8) ^ 0x80);
- pcm += 2;
- }
-/*-- special case --*/
- bx += (256 - 32);
- sum = WINMULT(vbuf[bx], (*coef++));
- for (j = 0; j < 3; j++)
- {
- bx += 32;
- sum += WINMULT(vbuf[bx], (*coef++));
- }
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm = (unsigned char) ((sum >> 8) ^ 0x80);
- pcm += 2;
-
-/*-- last 7 --*/
- coef = iwincoef + (111 - 7); /* back pass through coefs */
- si += (256 + -3 * 32 + 2 * 32 - 1);
- bx += (32 + 3 * 32 + 2 * 32 + 1);
- for (i = 0; i < 7; i++)
- {
- sum = WINMULT(vbuf[si], (*coef--));
- for (j = 0; j < 3; j++)
- {
- si += 32;
- sum += WINMULT(vbuf[bx], (*coef--));
- bx += 32;
- sum += WINMULT(vbuf[si], (*coef--));
- }
- si += (32 - 1 + 4 * 32);
- bx += (5 * 32 + 1);
- coef -= 7;
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm = (unsigned char) ((sum >> 8) ^ 0x80);
- pcm += 2;
- }
-}
-/*------------------------------------------------------------*/
-/*------------------- 8 pt window ------------------------------*/
-void i_windowB8(WININT * vbuf, int vb_ptr, unsigned char *pcm)
-{
- int i, j;
- unsigned int si, bx;
- WINCOEF *coef;
- INT32 sum;
-
-/*-- first 4 --*/
- si = (vb_ptr + (4 + 3 * 16)) & 127;
- bx = (si + (8 + 128 - 3 * 16 + 2 * 16)) & 127;
- coef = iwincoef;
- for (i = 0; i < 4; i++)
- {
- sum = -WINMULT(vbuf[bx], (*coef++));
- for (j = 0; j < 3; j++)
- {
- bx = (bx + 16) & 127;
- sum += WINMULT(vbuf[si], (*coef++));
- si = (si + 16) & 127;
- sum -= WINMULT(vbuf[bx], (*coef++));
- }
- si = (si + (5 * 16 + 1)) & 127;
- bx = (bx + (16 + 4 * 16 - 1)) & 127;
- coef += (3 * 7);
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm++ = (unsigned char) ((sum >> 8) ^ 0x80);
- }
-/*-- special case --*/
- bx = (bx + (128 - 16)) & 127;
- sum = WINMULT(vbuf[bx], (*coef++));
- for (j = 0; j < 3; j++)
- {
- bx = (bx + 16) & 127;
- sum += WINMULT(vbuf[bx], (*coef++));
- }
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm++ = (unsigned char) ((sum >> 8) ^ 0x80);
-
-/*-- last 3 --*/
- coef = iwincoef + (111 - 3 * 7); /* back pass through coefs */
- si = (si + (128 - 3 * 16 + 2 * 16 - 1)) & 127;
- bx = (bx + (16 + 3 * 16 + 2 * 16 + 1)) & 127;
- for (i = 0; i < 3; i++)
- {
- sum = WINMULT(vbuf[si], (*coef--));
- for (j = 0; j < 3; j++)
- {
- si = (si + 16) & 127;
- sum += WINMULT(vbuf[bx], (*coef--));
- bx = (bx + 16) & 127;
- sum += WINMULT(vbuf[si], (*coef--));
- }
- si = (si + (16 - 1 + 4 * 16)) & 127;
- bx = (bx + (5 * 16 + 1)) & 127;
- coef -= (3 * 7);
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm++ = (unsigned char) ((sum >> 8) ^ 0x80);
- }
-}
-/*--------------- 8 pt dual window (interleaved output) --------------*/
-void i_windowB8_dual(WININT * vbuf, int vb_ptr, unsigned char *pcm)
-{
- int i, j;
- unsigned int si, bx;
- WINCOEF *coef;
- INT32 sum;
-
-/*-- first 4 --*/
- si = (vb_ptr + (4 + 3 * 16)) & 127;
- bx = (si + (8 + 128 - 3 * 16 + 2 * 16)) & 127;
- coef = iwincoef;
- for (i = 0; i < 4; i++)
- {
- sum = -WINMULT(vbuf[bx], (*coef++));
- for (j = 0; j < 3; j++)
- {
- bx = (bx + 16) & 127;
- sum += WINMULT(vbuf[si], (*coef++));
- si = (si + 16) & 127;
- sum -= WINMULT(vbuf[bx], (*coef++));
- }
- si = (si + (5 * 16 + 1)) & 127;
- bx = (bx + (16 + 4 * 16 - 1)) & 127;
- coef += (3 * 7);
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm = (unsigned char) ((sum >> 8) ^ 0x80);
- pcm += 2;
- }
-/*-- special case --*/
- bx = (bx + (128 - 16)) & 127;
- sum = WINMULT(vbuf[bx], (*coef++));
- for (j = 0; j < 3; j++)
- {
- bx = (bx + 16) & 127;
- sum += WINMULT(vbuf[bx], (*coef++));
- }
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm = (unsigned char) ((sum >> 8) ^ 0x80);
- pcm += 2;
-
-/*-- last 3 --*/
- coef = iwincoef + (111 - 3 * 7); /* back pass through coefs */
- si = (si + (128 - 3 * 16 + 2 * 16 - 1)) & 127;
- bx = (bx + (16 + 3 * 16 + 2 * 16 + 1)) & 127;
- for (i = 0; i < 3; i++)
- {
- sum = WINMULT(vbuf[si], (*coef--));
- for (j = 0; j < 3; j++)
- {
- si = (si + 16) & 127;
- sum += WINMULT(vbuf[bx], (*coef--));
- bx = (bx + 16) & 127;
- sum += WINMULT(vbuf[si], (*coef--));
- }
- si = (si + (16 - 1 + 4 * 16)) & 127;
- bx = (bx + (5 * 16 + 1)) & 127;
- coef -= (3 * 7);
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm = (unsigned char) ((sum >> 8) ^ 0x80);
- pcm += 2;
- }
-}
-/*------------------------------------------------------------*/
-/*--------------- 8 pt dual window (interleaved output) --------------*/
-void i_windowB8_dual_right(WININT * vbuf, int vb_ptr, unsigned char *pcm)
-{
- int i, j;
- unsigned int si, bx;
- WINCOEF *coef;
- INT32 sum;
-
-/* right identical to dual, for asm */
-
-/*-- first 4 --*/
- si = (vb_ptr + (4 + 3 * 16)) & 127;
- bx = (si + (8 + 128 - 3 * 16 + 2 * 16)) & 127;
- coef = iwincoef;
- for (i = 0; i < 4; i++)
- {
- sum = -WINMULT(vbuf[bx], (*coef++));
- for (j = 0; j < 3; j++)
- {
- bx = (bx + 16) & 127;
- sum += WINMULT(vbuf[si], (*coef++));
- si = (si + 16) & 127;
- sum -= WINMULT(vbuf[bx], (*coef++));
- }
- si = (si + (5 * 16 + 1)) & 127;
- bx = (bx + (16 + 4 * 16 - 1)) & 127;
- coef += (3 * 7);
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm = (unsigned char) ((sum >> 8) ^ 0x80);
- pcm += 2;
- }
-/*-- special case --*/
- bx = (bx + (128 - 16)) & 127;
- sum = WINMULT(vbuf[bx], (*coef++));
- for (j = 0; j < 3; j++)
- {
- bx = (bx + 16) & 127;
- sum += WINMULT(vbuf[bx], (*coef++));
- }
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm = (unsigned char) ((sum >> 8) ^ 0x80);
- pcm += 2;
-
-/*-- last 3 --*/
- coef = iwincoef + (111 - 3 * 7); /* back pass through coefs */
- si = (si + (128 - 3 * 16 + 2 * 16 - 1)) & 127;
- bx = (bx + (16 + 3 * 16 + 2 * 16 + 1)) & 127;
- for (i = 0; i < 3; i++)
- {
- sum = WINMULT(vbuf[si], (*coef--));
- for (j = 0; j < 3; j++)
- {
- si = (si + 16) & 127;
- sum += WINMULT(vbuf[bx], (*coef--));
- bx = (bx + 16) & 127;
- sum += WINMULT(vbuf[si], (*coef--));
- }
- si = (si + (16 - 1 + 4 * 16)) & 127;
- bx = (bx + (5 * 16 + 1)) & 127;
- coef -= (3 * 7);
- sum >>= WINBITS;
- if (sum > 32767)
- sum = 32767;
- else if (sum < -32768)
- sum = -32768;
- *pcm = (unsigned char) ((sum >> 8) ^ 0x80);
- pcm += 2;
- }
-}
-/*--------------------------------------------------------*/