summaryrefslogtreecommitdiffstats
path: root/apps/codecs
diff options
context:
space:
mode:
authorRafaël Carré <rafael.carre@gmail.com>2010-06-17 16:59:51 +0000
committerRafaël Carré <rafael.carre@gmail.com>2010-06-17 16:59:51 +0000
commitc0bd4173aa3b8f49153964d5a3ff311fc7d59651 (patch)
treefafdfbecb21383141a61bbd8c744386772da390b /apps/codecs
parent3d2b1cfa6e3307d3a97a055776ea342cd62f683e (diff)
downloadrockbox-c0bd4173aa3b8f49153964d5a3ff311fc7d59651.tar.gz
rockbox-c0bd4173aa3b8f49153964d5a3ff311fc7d59651.zip
Make sure files which aren't windows-specific use \n line endings only
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26893 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs')
-rw-r--r--apps/codecs/libatrac/atrac3_arm.S452
-rw-r--r--apps/codecs/libspeex/lsp.h128
2 files changed, 290 insertions, 290 deletions
diff --git a/apps/codecs/libatrac/atrac3_arm.S b/apps/codecs/libatrac/atrac3_arm.S
index 80eaa7954d..0dacff0b7c 100644
--- a/apps/codecs/libatrac/atrac3_arm.S
+++ b/apps/codecs/libatrac/atrac3_arm.S
@@ -1,226 +1,226 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id:
- *
- * Copyright (C) 2009 by Andree Buschmann
- *
- * 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 software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ****************************************************************************/
-
-#include "config.h"
-
- .section .text, "ax", %progbits
-
-/****************************************************************************
- * void atrac3_iqmf_matrixing(int32_t *dest,
- * int32_t *inlo,
- * int32_t *inhi,
- * unsigned int count);
- *
- * Matrixing step within iqmf of atrac3 synthesis. Reference implementation:
- *
- * for(i=0; i<counter; i+=2){
- * dest[2*i+0] = inlo[i ] + inhi[i ];
- * dest[2*i+1] = inlo[i ] - inhi[i ];
- * dest[2*i+2] = inlo[i+1] + inhi[i+1];
- * dest[2*i+3] = inlo[i+1] - inhi[i+1];
- * }
- * Note: r12 is a scratch register and can be used without restorage.
- ****************************************************************************/
- .align 2
- .global atrac3_iqmf_matrixing
- .type atrac3_iqmf_matrixing, %function
-
-atrac3_iqmf_matrixing:
- /* r0 = dest */
- /* r1 = inlo */
- /* r2 = inhi */
- /* r3 = counter */
- stmfd sp!, {r4-r9, lr} /* save non-scratch registers */
-
-.iqmf_matrixing_loop:
- ldmia r1!, { r4, r6, r8, r12} /* load inlo[0...3] */
- ldmia r2!, { r5, r7, r9, lr } /* load inhi[0...3] */
- add r4, r4, r5 /* r4 = inlo[0] + inhi[0] */
- sub r5, r4, r5, asl #1 /* r5 = inlo[0] - inhi[0] */
- add r6, r6, r7 /* r6 = inlo[1] + inhi[1] */
- sub r7, r6, r7, asl #1 /* r7 = inlo[1] - inhi[1] */
- add r8, r8, r9 /* r8 = inlo[2] + inhi[2] */
- sub r9, r8, r9, asl #1 /* r9 = inlo[2] - inhi[2] */
- add r12, r12, lr /* r12 = inlo[3] + inhi[3] */
- sub lr , r12, lr, asl #1 /* lr = inlo[3] - inhi[3] */
- stmia r0!, {r4-r9, r12, lr} /* store results to dest */
- subs r3, r3, #4 /* counter -= 4 */
- bgt .iqmf_matrixing_loop
-
- ldmpc regs=r4-r9 /* restore registers */
-
-.atrac3_iqmf_matrixing_end:
- .size atrac3_iqmf_matrixing,.atrac3_iqmf_matrixing_end-atrac3_iqmf_matrixing
-
-
-/****************************************************************************
- * atrac3_iqmf_dewindowing(int32_t *out,
- * int32_t *in,
- * int32_t *win,
- * unsigned int nIn);
- *
- * Dewindowing step within iqmf of atrac3 synthesis. Reference implementation:
- *
- * for (j = nIn; j != 0; j--) {
- * s1 = fixmul32(in[0], win[0]);
- * s2 = fixmul32(in[1], win[1]);
- * for (i = 2; i < 48; i += 2) {
- * s1 += fixmul32(in[i ], win[i ]);
- * s2 += fixmul32(in[i+1], win[i+1]);
- * }
- * out[0] = s2 << 1;
- * out[1] = s1 << 1;
- * in += 2;
- * out += 2;
- * }
- * Note: r12 is a scratch register and can be used without restorage.
- ****************************************************************************/
- .align 2
- .global atrac3_iqmf_dewindowing
- .type atrac3_iqmf_dewindowing, %function
-
-atrac3_iqmf_dewindowing:
- /* r0 = dest */
- /* r1 = input samples */
- /* r2 = window coefficients */
- /* r3 = counter */
- stmfd sp!, {r4-r9, lr} /* save non-scratch registers */
-
-.iqmf_dewindow_outer_loop: /* outer loop 0...counter-1 */
- /* 0.. 7 */
- ldmia r2!, {r4, r5} /* load win[0..1] */
- ldmia r1!, {r6, r7} /* load in[0..1] */
- smull lr , r9, r4, r6 /* s1 = win[0] * in[0] */
- smull r12, r8, r5, r7 /* s2 = win[1] * in[1] */
- ldmia r2!, {r4, r5} /* load win[i...i+1] */
- ldmia r1!, {r6, r7} /* load in[i...i+1] */
- smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
- smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
- ldmia r2!, {r4, r5} /* load win[i...i+1] */
- ldmia r1!, {r6, r7} /* load in[i...i+1] */
- smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
- smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
- ldmia r2!, {r4, r5} /* load win[i...i+1] */
- ldmia r1!, {r6, r7} /* load in[i...i+1] */
- smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
- smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
- /* 8..15 */
- ldmia r2!, {r4, r5} /* load win[i...i+1] */
- ldmia r1!, {r6, r7} /* load in[i...i+1] */
- smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
- smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
- ldmia r2!, {r4, r5} /* load win[i...i+1] */
- ldmia r1!, {r6, r7} /* load in[i...i+1] */
- smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
- smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
- ldmia r2!, {r4, r5} /* load win[i...i+1] */
- ldmia r1!, {r6, r7} /* load in[i...i+1] */
- smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
- smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
- ldmia r2!, {r4, r5} /* load win[i...i+1] */
- ldmia r1!, {r6, r7} /* load in[i...i+1] */
- smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
- smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
- /* 16..23 */
- ldmia r2!, {r4, r5} /* load win[i...i+1] */
- ldmia r1!, {r6, r7} /* load in[i...i+1] */
- smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
- smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
- ldmia r2!, {r4, r5} /* load win[i...i+1] */
- ldmia r1!, {r6, r7} /* load in[i...i+1] */
- smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
- smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
- ldmia r2!, {r4, r5} /* load win[i...i+1] */
- ldmia r1!, {r6, r7} /* load in[i...i+1] */
- smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
- smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
- ldmia r2!, {r4, r5} /* load win[i...i+1] */
- ldmia r1!, {r6, r7} /* load in[i...i+1] */
- smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
- smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
- /* 24..31 */
- ldmia r2!, {r4, r5} /* load win[i...i+1] */
- ldmia r1!, {r6, r7} /* load in[i...i+1] */
- smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
- smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
- ldmia r2!, {r4, r5} /* load win[i...i+1] */
- ldmia r1!, {r6, r7} /* load in[i...i+1] */
- smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
- smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
- ldmia r2!, {r4, r5} /* load win[i...i+1] */
- ldmia r1!, {r6, r7} /* load in[i...i+1] */
- smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
- smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
- ldmia r2!, {r4, r5} /* load win[i...i+1] */
- ldmia r1!, {r6, r7} /* load in[i...i+1] */
- smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
- smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
- /* 32..39 */
- ldmia r2!, {r4, r5} /* load win[i...i+1] */
- ldmia r1!, {r6, r7} /* load in[i...i+1] */
- smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
- smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
- ldmia r2!, {r4, r5} /* load win[i...i+1] */
- ldmia r1!, {r6, r7} /* load in[i...i+1] */
- smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
- smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
- ldmia r2!, {r4, r5} /* load win[i...i+1] */
- ldmia r1!, {r6, r7} /* load in[i...i+1] */
- smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
- smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
- ldmia r2!, {r4, r5} /* load win[i...i+1] */
- ldmia r1!, {r6, r7} /* load in[i...i+1] */
- smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
- smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
- /* 40..47 */
- ldmia r2!, {r4, r5} /* load win[i...i+1] */
- ldmia r1!, {r6, r7} /* load in[i...i+1] */
- smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
- smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
- ldmia r2!, {r4, r5} /* load win[i...i+1] */
- ldmia r1!, {r6, r7} /* load in[i...i+1] */
- smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
- smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
- ldmia r2!, {r4, r5} /* load win[i...i+1] */
- ldmia r1!, {r6, r7} /* load in[i...i+1] */
- smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
- smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
- ldmia r2!, {r4, r5} /* load win[i...i+1] */
- ldmia r1!, {r6, r7} /* load in[i...i+1] */
- smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
- smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
-
- mov lr , lr , lsr #31
- orr r9, lr , r9, lsl #1 /* s1 = low>>31 || hi<<1 */
- mov r12, r12, lsr #31
- orr r8, r12, r8, lsl #1 /* s2 = low>>31 || hi<<1 */
-
- stmia r0!, {r8, r9} /* store result out[0]=s2, out[1]=s1 */
- sub r1, r1, #184 /* roll back 64 entries = 184 bytes */
- sub r2, r2, #192 /* roll back 48 entries = 192 bytes = win[0] */
-
- subs r3, r3, #1 /* outer loop -= 1 */
- bgt .iqmf_dewindow_outer_loop
-
- ldmpc regs=r4-r9 /* restore registers */
-
-.atrac3_iqmf_dewindowing_end:
- .size atrac3_iqmf_dewindowing,.atrac3_iqmf_dewindowing_end-atrac3_iqmf_dewindowing
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id:
+ *
+ * Copyright (C) 2009 by Andree Buschmann
+ *
+ * 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 software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#include "config.h"
+
+ .section .text, "ax", %progbits
+
+/****************************************************************************
+ * void atrac3_iqmf_matrixing(int32_t *dest,
+ * int32_t *inlo,
+ * int32_t *inhi,
+ * unsigned int count);
+ *
+ * Matrixing step within iqmf of atrac3 synthesis. Reference implementation:
+ *
+ * for(i=0; i<counter; i+=2){
+ * dest[2*i+0] = inlo[i ] + inhi[i ];
+ * dest[2*i+1] = inlo[i ] - inhi[i ];
+ * dest[2*i+2] = inlo[i+1] + inhi[i+1];
+ * dest[2*i+3] = inlo[i+1] - inhi[i+1];
+ * }
+ * Note: r12 is a scratch register and can be used without restorage.
+ ****************************************************************************/
+ .align 2
+ .global atrac3_iqmf_matrixing
+ .type atrac3_iqmf_matrixing, %function
+
+atrac3_iqmf_matrixing:
+ /* r0 = dest */
+ /* r1 = inlo */
+ /* r2 = inhi */
+ /* r3 = counter */
+ stmfd sp!, {r4-r9, lr} /* save non-scratch registers */
+
+.iqmf_matrixing_loop:
+ ldmia r1!, { r4, r6, r8, r12} /* load inlo[0...3] */
+ ldmia r2!, { r5, r7, r9, lr } /* load inhi[0...3] */
+ add r4, r4, r5 /* r4 = inlo[0] + inhi[0] */
+ sub r5, r4, r5, asl #1 /* r5 = inlo[0] - inhi[0] */
+ add r6, r6, r7 /* r6 = inlo[1] + inhi[1] */
+ sub r7, r6, r7, asl #1 /* r7 = inlo[1] - inhi[1] */
+ add r8, r8, r9 /* r8 = inlo[2] + inhi[2] */
+ sub r9, r8, r9, asl #1 /* r9 = inlo[2] - inhi[2] */
+ add r12, r12, lr /* r12 = inlo[3] + inhi[3] */
+ sub lr , r12, lr, asl #1 /* lr = inlo[3] - inhi[3] */
+ stmia r0!, {r4-r9, r12, lr} /* store results to dest */
+ subs r3, r3, #4 /* counter -= 4 */
+ bgt .iqmf_matrixing_loop
+
+ ldmpc regs=r4-r9 /* restore registers */
+
+.atrac3_iqmf_matrixing_end:
+ .size atrac3_iqmf_matrixing,.atrac3_iqmf_matrixing_end-atrac3_iqmf_matrixing
+
+
+/****************************************************************************
+ * atrac3_iqmf_dewindowing(int32_t *out,
+ * int32_t *in,
+ * int32_t *win,
+ * unsigned int nIn);
+ *
+ * Dewindowing step within iqmf of atrac3 synthesis. Reference implementation:
+ *
+ * for (j = nIn; j != 0; j--) {
+ * s1 = fixmul32(in[0], win[0]);
+ * s2 = fixmul32(in[1], win[1]);
+ * for (i = 2; i < 48; i += 2) {
+ * s1 += fixmul32(in[i ], win[i ]);
+ * s2 += fixmul32(in[i+1], win[i+1]);
+ * }
+ * out[0] = s2 << 1;
+ * out[1] = s1 << 1;
+ * in += 2;
+ * out += 2;
+ * }
+ * Note: r12 is a scratch register and can be used without restorage.
+ ****************************************************************************/
+ .align 2
+ .global atrac3_iqmf_dewindowing
+ .type atrac3_iqmf_dewindowing, %function
+
+atrac3_iqmf_dewindowing:
+ /* r0 = dest */
+ /* r1 = input samples */
+ /* r2 = window coefficients */
+ /* r3 = counter */
+ stmfd sp!, {r4-r9, lr} /* save non-scratch registers */
+
+.iqmf_dewindow_outer_loop: /* outer loop 0...counter-1 */
+ /* 0.. 7 */
+ ldmia r2!, {r4, r5} /* load win[0..1] */
+ ldmia r1!, {r6, r7} /* load in[0..1] */
+ smull lr , r9, r4, r6 /* s1 = win[0] * in[0] */
+ smull r12, r8, r5, r7 /* s2 = win[1] * in[1] */
+ ldmia r2!, {r4, r5} /* load win[i...i+1] */
+ ldmia r1!, {r6, r7} /* load in[i...i+1] */
+ smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
+ smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
+ ldmia r2!, {r4, r5} /* load win[i...i+1] */
+ ldmia r1!, {r6, r7} /* load in[i...i+1] */
+ smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
+ smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
+ ldmia r2!, {r4, r5} /* load win[i...i+1] */
+ ldmia r1!, {r6, r7} /* load in[i...i+1] */
+ smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
+ smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
+ /* 8..15 */
+ ldmia r2!, {r4, r5} /* load win[i...i+1] */
+ ldmia r1!, {r6, r7} /* load in[i...i+1] */
+ smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
+ smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
+ ldmia r2!, {r4, r5} /* load win[i...i+1] */
+ ldmia r1!, {r6, r7} /* load in[i...i+1] */
+ smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
+ smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
+ ldmia r2!, {r4, r5} /* load win[i...i+1] */
+ ldmia r1!, {r6, r7} /* load in[i...i+1] */
+ smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
+ smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
+ ldmia r2!, {r4, r5} /* load win[i...i+1] */
+ ldmia r1!, {r6, r7} /* load in[i...i+1] */
+ smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
+ smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
+ /* 16..23 */
+ ldmia r2!, {r4, r5} /* load win[i...i+1] */
+ ldmia r1!, {r6, r7} /* load in[i...i+1] */
+ smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
+ smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
+ ldmia r2!, {r4, r5} /* load win[i...i+1] */
+ ldmia r1!, {r6, r7} /* load in[i...i+1] */
+ smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
+ smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
+ ldmia r2!, {r4, r5} /* load win[i...i+1] */
+ ldmia r1!, {r6, r7} /* load in[i...i+1] */
+ smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
+ smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
+ ldmia r2!, {r4, r5} /* load win[i...i+1] */
+ ldmia r1!, {r6, r7} /* load in[i...i+1] */
+ smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
+ smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
+ /* 24..31 */
+ ldmia r2!, {r4, r5} /* load win[i...i+1] */
+ ldmia r1!, {r6, r7} /* load in[i...i+1] */
+ smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
+ smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
+ ldmia r2!, {r4, r5} /* load win[i...i+1] */
+ ldmia r1!, {r6, r7} /* load in[i...i+1] */
+ smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
+ smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
+ ldmia r2!, {r4, r5} /* load win[i...i+1] */
+ ldmia r1!, {r6, r7} /* load in[i...i+1] */
+ smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
+ smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
+ ldmia r2!, {r4, r5} /* load win[i...i+1] */
+ ldmia r1!, {r6, r7} /* load in[i...i+1] */
+ smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
+ smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
+ /* 32..39 */
+ ldmia r2!, {r4, r5} /* load win[i...i+1] */
+ ldmia r1!, {r6, r7} /* load in[i...i+1] */
+ smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
+ smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
+ ldmia r2!, {r4, r5} /* load win[i...i+1] */
+ ldmia r1!, {r6, r7} /* load in[i...i+1] */
+ smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
+ smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
+ ldmia r2!, {r4, r5} /* load win[i...i+1] */
+ ldmia r1!, {r6, r7} /* load in[i...i+1] */
+ smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
+ smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
+ ldmia r2!, {r4, r5} /* load win[i...i+1] */
+ ldmia r1!, {r6, r7} /* load in[i...i+1] */
+ smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
+ smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
+ /* 40..47 */
+ ldmia r2!, {r4, r5} /* load win[i...i+1] */
+ ldmia r1!, {r6, r7} /* load in[i...i+1] */
+ smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
+ smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
+ ldmia r2!, {r4, r5} /* load win[i...i+1] */
+ ldmia r1!, {r6, r7} /* load in[i...i+1] */
+ smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
+ smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
+ ldmia r2!, {r4, r5} /* load win[i...i+1] */
+ ldmia r1!, {r6, r7} /* load in[i...i+1] */
+ smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
+ smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
+ ldmia r2!, {r4, r5} /* load win[i...i+1] */
+ ldmia r1!, {r6, r7} /* load in[i...i+1] */
+ smlal lr , r9, r4, r6 /* s1 = win[i ] * in[i ] */
+ smlal r12, r8, r5, r7 /* s2 = win[i+1] * in[i+1] */
+
+ mov lr , lr , lsr #31
+ orr r9, lr , r9, lsl #1 /* s1 = low>>31 || hi<<1 */
+ mov r12, r12, lsr #31
+ orr r8, r12, r8, lsl #1 /* s2 = low>>31 || hi<<1 */
+
+ stmia r0!, {r8, r9} /* store result out[0]=s2, out[1]=s1 */
+ sub r1, r1, #184 /* roll back 64 entries = 184 bytes */
+ sub r2, r2, #192 /* roll back 48 entries = 192 bytes = win[0] */
+
+ subs r3, r3, #1 /* outer loop -= 1 */
+ bgt .iqmf_dewindow_outer_loop
+
+ ldmpc regs=r4-r9 /* restore registers */
+
+.atrac3_iqmf_dewindowing_end:
+ .size atrac3_iqmf_dewindowing,.atrac3_iqmf_dewindowing_end-atrac3_iqmf_dewindowing
diff --git a/apps/codecs/libspeex/lsp.h b/apps/codecs/libspeex/lsp.h
index 2841e4b747..c53e7769d3 100644
--- a/apps/codecs/libspeex/lsp.h
+++ b/apps/codecs/libspeex/lsp.h
@@ -1,64 +1,64 @@
-/*---------------------------------------------------------------------------*\
-Original Copyright
- FILE........: AK2LSPD.H
- TYPE........: Turbo C header file
- COMPANY.....: Voicetronix
- AUTHOR......: James Whitehall
- DATE CREATED: 21/11/95
-
-Modified by Jean-Marc Valin
-
- This file contains functions for converting Linear Prediction
- Coefficients (LPC) to Line Spectral Pair (LSP) and back. Note that the
- LSP coefficients are not in radians format but in the x domain of the
- unit circle.
-
-\*---------------------------------------------------------------------------*/
-/**
- @file lsp.h
- @brief Line Spectral Pair (LSP) functions.
-*/
-/* Speex License:
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- - Neither the name of the Xiph.org Foundation nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifndef __AK2LSPD__
-#define __AK2LSPD__
-
-#include "arch.h"
-
-int lpc_to_lsp (spx_coef_t *a, int lpcrdr, spx_lsp_t *freq, int nb, spx_word16_t delta, char *stack);
-void lsp_to_lpc(spx_lsp_t *freq, spx_coef_t *ak, int lpcrdr, char *stack);
-
-/*Added by JMV*/
-void lsp_enforce_margin(spx_lsp_t *lsp, int len, spx_word16_t margin);
-
-void lsp_interpolate(spx_lsp_t *old_lsp, spx_lsp_t *new_lsp, spx_lsp_t *interp_lsp, int len, int subframe, int nb_subframes);
-
-#endif /* __AK2LSPD__ */
+/*---------------------------------------------------------------------------*\
+Original Copyright
+ FILE........: AK2LSPD.H
+ TYPE........: Turbo C header file
+ COMPANY.....: Voicetronix
+ AUTHOR......: James Whitehall
+ DATE CREATED: 21/11/95
+
+Modified by Jean-Marc Valin
+
+ This file contains functions for converting Linear Prediction
+ Coefficients (LPC) to Line Spectral Pair (LSP) and back. Note that the
+ LSP coefficients are not in radians format but in the x domain of the
+ unit circle.
+
+\*---------------------------------------------------------------------------*/
+/**
+ @file lsp.h
+ @brief Line Spectral Pair (LSP) functions.
+*/
+/* Speex License:
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of the Xiph.org Foundation nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef __AK2LSPD__
+#define __AK2LSPD__
+
+#include "arch.h"
+
+int lpc_to_lsp (spx_coef_t *a, int lpcrdr, spx_lsp_t *freq, int nb, spx_word16_t delta, char *stack);
+void lsp_to_lpc(spx_lsp_t *freq, spx_coef_t *ak, int lpcrdr, char *stack);
+
+/*Added by JMV*/
+void lsp_enforce_margin(spx_lsp_t *lsp, int len, spx_word16_t margin);
+
+void lsp_interpolate(spx_lsp_t *old_lsp, spx_lsp_t *new_lsp, spx_lsp_t *interp_lsp, int len, int subframe, int nb_subframes);
+
+#endif /* __AK2LSPD__ */