summaryrefslogtreecommitdiff
path: root/apps/codecs/lib
diff options
context:
space:
mode:
authorNils Wallménius <nils@rockbox.org>2011-06-02 14:59:15 +0000
committerNils Wallménius <nils@rockbox.org>2011-06-02 14:59:15 +0000
commit4909e09267ad1f2638d48d91b4b273d5508ec380 (patch)
tree768a0131e0b7e4d66f7e5130fb27ce3f85b1f8ae /apps/codecs/lib
parentb58d3656d79e5f9752a22d55c139294412084e4f (diff)
downloadrockbox-4909e09267ad1f2638d48d91b4b273d5508ec380.zip
rockbox-4909e09267ad1f2638d48d91b4b273d5508ec380.tar.gz
rockbox-4909e09267ad1f2638d48d91b4b273d5508ec380.tar.bz2
rockbox-4909e09267ad1f2638d48d91b4b273d5508ec380.tar.xz
FS#12141 by Sean Bartell
Some of these were found with http://www.samba.org/junkcode/#findstatic. Changes of note: * The old MDCT has been removed. * Makefile.test files that create test programs for libatrac, libcook, and libffmpegFLAC have been removed, as they don't work. My project will have a replacement that works with all codecs. * I've tried not to remove anything useful. CLIP_TO_15 was removed from libtremor because there's another copy (also commented) in codeclib. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29945 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/lib')
-rw-r--r--apps/codecs/lib/SOURCES5
-rw-r--r--apps/codecs/lib/mdct2.c513
-rw-r--r--apps/codecs/lib/mdct2.h76
-rw-r--r--apps/codecs/lib/mdct_arm.S437
4 files changed, 0 insertions, 1031 deletions
diff --git a/apps/codecs/lib/SOURCES b/apps/codecs/lib/SOURCES
index cef214a..cd38dc1 100644
--- a/apps/codecs/lib/SOURCES
+++ b/apps/codecs/lib/SOURCES
@@ -3,16 +3,11 @@ codeclib.c
fixedpoint.c
ffmpeg_bitstream.c
-/* OLD MDCT */
-/* (when all other codecs are remediated this can be remoed) */
-mdct2.c
mdct_lookup.c
-
fft-ffmpeg.c
mdct.c
#ifdef CPU_ARM
-mdct_arm.S
../../../firmware/target/arm/support-arm.S
#endif
diff --git a/apps/codecs/lib/mdct2.c b/apps/codecs/lib/mdct2.c
deleted file mode 100644
index ba8b5ca..0000000
--- a/apps/codecs/lib/mdct2.c
+++ /dev/null
@@ -1,513 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
- * *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
- * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
- * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
- * *
- * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
- * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: normalized modified discrete cosine transform
- power of two length transform only [64 <= n ]
-
-
- Original algorithm adapted long ago from _The use of multirate filter
- banks for coding of high quality digital audio_, by T. Sporer,
- K. Brandenburg and B. Edler, collection of the European Signal
- Processing Conference (EUSIPCO), Amsterdam, June 1992, Vol.1, pp
- 211-214
-
- The below code implements an algorithm that no longer looks much like
- that presented in the paper, but the basic structure remains if you
- dig deep enough to see it.
-
- This module DOES NOT INCLUDE code to generate/apply the window
- function. Everybody has their own weird favorite including me... I
- happen to like the properties of y=sin(.5PI*sin^2(x)), but others may
- vehemently disagree.
-
- ********************************************************************/
-
-/*Tremor IMDCT adapted for use with libwmai*/
-
-
-#include "mdct2.h"
-#include "mdct_lookup.h"
-#ifdef ROCKBOX
-#include <codecs/lib/codeclib.h>
-#endif /* ROCKBOX */
-
-#if defined(CPU_ARM)
-
-extern void mdct_butterfly_32(int32_t *x);
-extern void mdct_butterfly_generic_loop(int32_t *x1, int32_t *x2,
- const int32_t *T0, int step,
- const int32_t *Ttop);
-
-static inline void mdct_butterfly_generic(int32_t *x,int points, int step){
- mdct_butterfly_generic_loop(x + points, x + (points>>1), sincos_lookup0, step, sincos_lookup0+1024);
-}
-
-#else
-
-/* 8 point butterfly (in place) */
-static inline void mdct_butterfly_8(int32_t *x){
- register int32_t r0 = x[4] + x[0];
- register int32_t r1 = x[4] - x[0];
- register int32_t r2 = x[5] + x[1];
- register int32_t r3 = x[5] - x[1];
- register int32_t r4 = x[6] + x[2];
- register int32_t r5 = x[6] - x[2];
- register int32_t r6 = x[7] + x[3];
- register int32_t r7 = x[7] - x[3];
-
- x[0] = r5 + r3;
- x[1] = r7 - r1;
- x[2] = r5 - r3;
- x[3] = r7 + r1;
- x[4] = r4 - r0;
- x[5] = r6 - r2;
- x[6] = r4 + r0;
- x[7] = r6 + r2;
-}
-
-/* 16 point butterfly (in place, 4 register) */
-static inline void mdct_butterfly_16(int32_t *x){
-
- register int32_t r0, r1;
-
- r0 = x[ 0] - x[ 8]; x[ 8] += x[ 0];
- r1 = x[ 1] - x[ 9]; x[ 9] += x[ 1];
- x[ 0] = MULT31((r0 + r1) , cPI2_8);
- x[ 1] = MULT31((r1 - r0) , cPI2_8);
-
- r0 = x[10] - x[ 2]; x[10] += x[ 2];
- r1 = x[ 3] - x[11]; x[11] += x[ 3];
- x[ 2] = r1; x[ 3] = r0;
-
- r0 = x[12] - x[ 4]; x[12] += x[ 4];
- r1 = x[13] - x[ 5]; x[13] += x[ 5];
- x[ 4] = MULT31((r0 - r1) , cPI2_8);
- x[ 5] = MULT31((r0 + r1) , cPI2_8);
-
- r0 = x[14] - x[ 6]; x[14] += x[ 6];
- r1 = x[15] - x[ 7]; x[15] += x[ 7];
- x[ 6] = r0; x[ 7] = r1;
-
- mdct_butterfly_8(x);
- mdct_butterfly_8(x+8);
-}
-
-/* 32 point butterfly (in place, 4 register) */
-static inline void mdct_butterfly_32(int32_t *x){
-
- register int32_t r0, r1;
-
- r0 = x[30] - x[14]; x[30] += x[14];
- r1 = x[31] - x[15]; x[31] += x[15];
- x[14] = r0; x[15] = r1;
-
- r0 = x[28] - x[12]; x[28] += x[12];
- r1 = x[29] - x[13]; x[29] += x[13];
- XNPROD31( r0, r1, cPI1_8, cPI3_8, &x[12], &x[13] );
-
- r0 = x[26] - x[10]; x[26] += x[10];
- r1 = x[27] - x[11]; x[27] += x[11];
- x[10] = MULT31((r0 - r1) , cPI2_8);
- x[11] = MULT31((r0 + r1) , cPI2_8);
-
- r0 = x[24] - x[ 8]; x[24] += x[ 8];
- r1 = x[25] - x[ 9]; x[25] += x[ 9];
- XNPROD31( r0, r1, cPI3_8, cPI1_8, &x[ 8], &x[ 9] );
-
- r0 = x[22] - x[ 6]; x[22] += x[ 6];
- r1 = x[ 7] - x[23]; x[23] += x[ 7];
- x[ 6] = r1; x[ 7] = r0;
-
- r0 = x[ 4] - x[20]; x[20] += x[ 4];
- r1 = x[ 5] - x[21]; x[21] += x[ 5];
- XPROD31 ( r0, r1, cPI3_8, cPI1_8, &x[ 4], &x[ 5] );
-
- r0 = x[ 2] - x[18]; x[18] += x[ 2];
- r1 = x[ 3] - x[19]; x[19] += x[ 3];
- x[ 2] = MULT31((r1 + r0) , cPI2_8);
- x[ 3] = MULT31((r1 - r0) , cPI2_8);
-
- r0 = x[ 0] - x[16]; x[16] += x[ 0];
- r1 = x[ 1] - x[17]; x[17] += x[ 1];
- XPROD31 ( r0, r1, cPI1_8, cPI3_8, &x[ 0], &x[ 1] );
-
- mdct_butterfly_16(x);
- mdct_butterfly_16(x+16);
-}
-
-/* N/stage point generic N stage butterfly (in place, 4 register) */
-void mdct_butterfly_generic(int32_t *x,int points, int step)
- ICODE_ATTR_TREMOR_MDCT;
-void mdct_butterfly_generic(int32_t *x,int points, int step){
- const int32_t *T = sincos_lookup0;
- int32_t *x1 = x + points - 8;
- int32_t *x2 = x + (points>>1) - 8;
- register int32_t r0;
- register int32_t r1;
- register int32_t r2;
- register int32_t r3;
-
- do{
- r0 = x1[6] - x2[6]; x1[6] += x2[6];
- r1 = x2[7] - x1[7]; x1[7] += x2[7];
- r2 = x1[4] - x2[4]; x1[4] += x2[4];
- r3 = x2[5] - x1[5]; x1[5] += x2[5];
- XPROD31( r1, r0, T[0], T[1], &x2[6], &x2[7] ); T+=step;
- XPROD31( r3, r2, T[0], T[1], &x2[4], &x2[5] ); T+=step;
-
- r0 = x1[2] - x2[2]; x1[2] += x2[2];
- r1 = x2[3] - x1[3]; x1[3] += x2[3];
- r2 = x1[0] - x2[0]; x1[0] += x2[0];
- r3 = x2[1] - x1[1]; x1[1] += x2[1];
- XPROD31( r1, r0, T[0], T[1], &x2[2], &x2[3] ); T+=step;
- XPROD31( r3, r2, T[0], T[1], &x2[0], &x2[1] ); T+=step;
-
- x1-=8; x2-=8;
- }while(T<sincos_lookup0+1024);
- do{
- r0 = x1[6] - x2[6]; x1[6] += x2[6];
- r1 = x1[7] - x2[7]; x1[7] += x2[7];
- r2 = x1[4] - x2[4]; x1[4] += x2[4];
- r3 = x1[5] - x2[5]; x1[5] += x2[5];
- XNPROD31( r0, r1, T[0], T[1], &x2[6], &x2[7] ); T-=step;
- XNPROD31( r2, r3, T[0], T[1], &x2[4], &x2[5] ); T-=step;
-
- r0 = x1[2] - x2[2]; x1[2] += x2[2];
- r1 = x1[3] - x2[3]; x1[3] += x2[3];
- r2 = x1[0] - x2[0]; x1[0] += x2[0];
- r3 = x1[1] - x2[1]; x1[1] += x2[1];
- XNPROD31( r0, r1, T[0], T[1], &x2[2], &x2[3] ); T-=step;
- XNPROD31( r2, r3, T[0], T[1], &x2[0], &x2[1] ); T-=step;
-
- x1-=8; x2-=8;
- }while(T>sincos_lookup0);
- do{
- r0 = x2[6] - x1[6]; x1[6] += x2[6];
- r1 = x2[7] - x1[7]; x1[7] += x2[7];
- r2 = x2[4] - x1[4]; x1[4] += x2[4];
- r3 = x2[5] - x1[5]; x1[5] += x2[5];
- XPROD31( r0, r1, T[0], T[1], &x2[6], &x2[7] ); T+=step;
- XPROD31( r2, r3, T[0], T[1], &x2[4], &x2[5] ); T+=step;
-
- r0 = x2[2] - x1[2]; x1[2] += x2[2];
- r1 = x2[3] - x1[3]; x1[3] += x2[3];
- r2 = x2[0] - x1[0]; x1[0] += x2[0];
- r3 = x2[1] - x1[1]; x1[1] += x2[1];
- XPROD31( r0, r1, T[0], T[1], &x2[2], &x2[3] ); T+=step;
- XPROD31( r2, r3, T[0], T[1], &x2[0], &x2[1] ); T+=step;
-
- x1-=8; x2-=8;
- }while(T<sincos_lookup0+1024);
- do{
- r0 = x1[6] - x2[6]; x1[6] += x2[6];
- r1 = x2[7] - x1[7]; x1[7] += x2[7];
- r2 = x1[4] - x2[4]; x1[4] += x2[4];
- r3 = x2[5] - x1[5]; x1[5] += x2[5];
- XNPROD31( r1, r0, T[0], T[1], &x2[6], &x2[7] ); T-=step;
- XNPROD31( r3, r2, T[0], T[1], &x2[4], &x2[5] ); T-=step;
-
- r0 = x1[2] - x2[2]; x1[2] += x2[2];
- r1 = x2[3] - x1[3]; x1[3] += x2[3];
- r2 = x1[0] - x2[0]; x1[0] += x2[0];
- r3 = x2[1] - x1[1]; x1[1] += x2[1];
- XNPROD31( r1, r0, T[0], T[1], &x2[2], &x2[3] ); T-=step;
- XNPROD31( r3, r2, T[0], T[1], &x2[0], &x2[1] ); T-=step;
-
- x1-=8; x2-=8;
- }while(T>sincos_lookup0);
-}
-
-#endif /* CPU_ARM */
-
-static inline void mdct_butterflies(int32_t *x,int points,int shift) {
-
- int stages=8-shift;
- int i,j;
-
- for(i=0;--stages>0;i++){
- for(j=0;j<(1<<i);j++)
- mdct_butterfly_generic(x+(points>>i)*j,points>>i,4<<(i+shift));
- }
-
- for(j=0;j<points;j+=32)
- mdct_butterfly_32(x+j);
-}
-
-static const unsigned char bitrev[] ICONST_ATTR =
-{
- 0, 32, 16, 48, 8, 40, 24, 56, 4, 36, 20, 52, 12, 44, 28, 60,
- 2, 34, 18, 50, 10, 42, 26, 58, 6, 38, 22, 54, 14, 46, 30, 62,
- 1, 33, 17, 49, 9, 41, 25, 57, 5, 37, 21, 53, 13, 45, 29, 61,
- 3, 35, 19, 51, 11, 43, 27, 59, 7, 39, 23, 55, 15, 47, 31, 63
-};
-
-static inline int bitrev12(int x){
- return bitrev[x>>6]|((bitrev[x&0x03f])<<6);
-}
-
-static inline void mdct_bitreverse(int32_t *x,int n,int step,int shift) {
-
- int bit = 0;
- int32_t *w0 = x;
- int32_t *w1 = x = w0+(n>>1);
- const int32_t *T = (step>=4)?(sincos_lookup0+(step>>1)):sincos_lookup1;
- const int32_t *Ttop = T+1024;
- register int32_t r2;
-
- do{
- register int32_t r3 = bitrev12(bit++);
- int32_t *x0 = x + ((r3 ^ 0xfff)>>shift) -1;
- int32_t *x1 = x + (r3>>shift);
-
- register int32_t r0 = x0[0] + x1[0];
- register int32_t r1 = x1[1] - x0[1];
-
- XPROD32( r0, r1, T[1], T[0], r2, r3 ); T+=step;
-
- w1 -= 4;
-
- r0 = (x0[1] + x1[1])>>1;
- r1 = (x0[0] - x1[0])>>1;
- w0[0] = r0 + r2;
- w0[1] = r1 + r3;
- w1[2] = r0 - r2;
- w1[3] = r3 - r1;
-
- r3 = bitrev12(bit++);
- x0 = x + ((r3 ^ 0xfff)>>shift) -1;
- x1 = x + (r3>>shift);
-
- r0 = x0[0] + x1[0];
- r1 = x1[1] - x0[1];
-
- XPROD32( r0, r1, T[1], T[0], r2, r3 ); T+=step;
-
- r0 = (x0[1] + x1[1])>>1;
- r1 = (x0[0] - x1[0])>>1;
- w0[2] = r0 + r2;
- w0[3] = r1 + r3;
- w1[0] = r0 - r2;
- w1[1] = r3 - r1;
-
- w0 += 4;
- }while(T<Ttop);
- do{
- register int32_t r3 = bitrev12(bit++);
- int32_t *x0 = x + ((r3 ^ 0xfff)>>shift) -1;
- int32_t *x1 = x + (r3>>shift);
-
- register int32_t r0 = x0[0] + x1[0];
- register int32_t r1 = x1[1] - x0[1];
-
- T-=step; XPROD32( r0, r1, T[0], T[1], r2, r3 );
-
- w1 -= 4;
-
- r0 = (x0[1] + x1[1])>>1;
- r1 = (x0[0] - x1[0])>>1;
- w0[0] = r0 + r2;
- w0[1] = r1 + r3;
- w1[2] = r0 - r2;
- w1[3] = r3 - r1;
-
- r3 = bitrev12(bit++);
- x0 = x + ((r3 ^ 0xfff)>>shift) -1;
- x1 = x + (r3>>shift);
-
- r0 = x0[0] + x1[0];
- r1 = x1[1] - x0[1];
-
- T-=step; XPROD32( r0, r1, T[0], T[1], r2, r3 );
-
- r0 = (x0[1] + x1[1])>>1;
- r1 = (x0[0] - x1[0])>>1;
- w0[2] = r0 + r2;
- w0[3] = r1 + r3;
- w1[0] = r0 - r2;
- w1[1] = r3 - r1;
-
- w0 += 4;
- }while(w0<w1);
-}
-
-
-void mdct_backward(int n, int32_t *in, int32_t *out)
- ICODE_ATTR_TREMOR_MDCT;
-void mdct_backward(int n, int32_t *in, int32_t *out) {
- int n2=n>>1;
- int n4=n>>2;
- int32_t *iX;
- int32_t *oX;
- const int32_t *T;
- const int32_t *V;
- int shift;
- int step;
- for (shift=6;!(n&(1<<shift));shift++);
- shift=13-shift;
- step=2<<shift;
-
- /* rotate */
-
- iX = in+n2-7;
- oX = out+n2+n4;
- T = sincos_lookup0;
-
- do{
- oX-=4;
- XPROD31( iX[4], iX[6], T[0], T[1], &oX[2], &oX[3] ); T+=step;
- XPROD31( iX[0], iX[2], T[0], T[1], &oX[0], &oX[1] ); T+=step;
- iX-=8;
- }while(iX>=in+n4);
- do{
- oX-=4;
- XPROD31( iX[4], iX[6], T[1], T[0], &oX[2], &oX[3] ); T-=step;
- XPROD31( iX[0], iX[2], T[1], T[0], &oX[0], &oX[1] ); T-=step;
- iX-=8;
- }while(iX>=in);
-
- iX = in+n2-8;
- oX = out+n2+n4;
- T = sincos_lookup0;
-
- do{
- T+=step; XNPROD31( iX[6], iX[4], T[0], T[1], &oX[0], &oX[1] );
- T+=step; XNPROD31( iX[2], iX[0], T[0], T[1], &oX[2], &oX[3] );
- iX-=8;
- oX+=4;
- }while(iX>=in+n4);
- do{
- T-=step; XNPROD31( iX[6], iX[4], T[1], T[0], &oX[0], &oX[1] );
- T-=step; XNPROD31( iX[2], iX[0], T[1], T[0], &oX[2], &oX[3] );
- iX-=8;
- oX+=4;
- }while(iX>=in);
-
- mdct_butterflies(out+n2,n2,shift);
- mdct_bitreverse(out,n,step,shift);
- /* rotate + window */
-
- step>>=2;
- {
- int32_t *oX1=out+n2+n4;
- int32_t *oX2=out+n2+n4;
- int32_t *iX =out;
-
- switch(step) {
- default: {
- T=(step>=4)?(sincos_lookup0+(step>>1)):sincos_lookup1;
- do{
- oX1-=4;
- XPROD31( iX[0], -iX[1], T[0], T[1], &oX1[3], &oX2[0] ); T+=step;
- XPROD31( iX[2], -iX[3], T[0], T[1], &oX1[2], &oX2[1] ); T+=step;
- XPROD31( iX[4], -iX[5], T[0], T[1], &oX1[1], &oX2[2] ); T+=step;
- XPROD31( iX[6], -iX[7], T[0], T[1], &oX1[0], &oX2[3] ); T+=step;
- oX2+=4;
- iX+=8;
- }while(iX<oX1);
- break;
- }
-
- case 1: {
- /* linear interpolation between table values: offset=0.5, step=1 */
- register int32_t t0,t1,v0,v1;
- T = sincos_lookup0;
- V = sincos_lookup1;
- t0 = (*T++)>>1;
- t1 = (*T++)>>1;
- do{
- oX1-=4;
-
- t0 += (v0 = (*V++)>>1);
- t1 += (v1 = (*V++)>>1);
- XPROD31( iX[0], -iX[1], t0, t1, &oX1[3], &oX2[0] );
- v0 += (t0 = (*T++)>>1);
- v1 += (t1 = (*T++)>>1);
- XPROD31( iX[2], -iX[3], v0, v1, &oX1[2], &oX2[1] );
- t0 += (v0 = (*V++)>>1);
- t1 += (v1 = (*V++)>>1);
- XPROD31( iX[4], -iX[5], t0, t1, &oX1[1], &oX2[2] );
- v0 += (t0 = (*T++)>>1);
- v1 += (t1 = (*T++)>>1);
- XPROD31( iX[6], -iX[7], v0, v1, &oX1[0], &oX2[3] );
-
- oX2+=4;
- iX+=8;
- }while(iX<oX1);
- break;
- }
-
- case 0: {
- /* linear interpolation between table values: offset=0.25, step=0.5 */
- register int32_t t0,t1,v0,v1,q0,q1;
- T = sincos_lookup0;
- V = sincos_lookup1;
- t0 = *T++;
- t1 = *T++;
- do{
- oX1-=4;
-
- v0 = *V++;
- v1 = *V++;
- t0 += (q0 = (v0-t0)>>2);
- t1 += (q1 = (v1-t1)>>2);
- XPROD31( iX[0], -iX[1], t0, t1, &oX1[3], &oX2[0] );
- t0 = v0-q0;
- t1 = v1-q1;
- XPROD31( iX[2], -iX[3], t0, t1, &oX1[2], &oX2[1] );
-
- t0 = *T++;
- t1 = *T++;
- v0 += (q0 = (t0-v0)>>2);
- v1 += (q1 = (t1-v1)>>2);
- XPROD31( iX[4], -iX[5], v0, v1, &oX1[1], &oX2[2] );
- v0 = t0-q0;
- v1 = t1-q1;
- XPROD31( iX[6], -iX[7], v0, v1, &oX1[0], &oX2[3] );
-
- oX2+=4;
- iX+=8;
- }while(iX<oX1);
- break;
- }
- }
-
- iX=out+n2+n4;
- oX1=out+n4;
- oX2=oX1;
-
- do{
- oX1-=4;
- iX-=4;
-
- oX2[0] = -(oX1[3] = iX[3]);
- oX2[1] = -(oX1[2] = iX[2]);
- oX2[2] = -(oX1[1] = iX[1]);
- oX2[3] = -(oX1[0] = iX[0]);
-
- oX2+=4;
- }while(oX2<iX);
-
- iX=out+n2+n4;
- oX1=out+n2+n4;
- oX2=out+n2;
-
- do{
- oX1-=4;
- oX1[0]= iX[3];
- oX1[1]= iX[2];
- oX1[2]= iX[1];
- oX1[3]= iX[0];
- iX+=4;
- }while(oX1>oX2);
- }
-}
diff --git a/apps/codecs/lib/mdct2.h b/apps/codecs/lib/mdct2.h
deleted file mode 100644
index 12b0c08..0000000
--- a/apps/codecs/lib/mdct2.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/********************************************************************
- * *
- * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
- * *
- * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
- * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
- * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
- * *
- * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
- * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
- * *
- ********************************************************************
-
- function: modified discrete cosine transform prototypes
-
- ********************************************************************/
-
-#ifndef _OGG_mdct_H_
-#define _OGG_mdct_H_
-
-
-
-#ifdef _LOW_ACCURACY_
-# define X(n) (((((n)>>22)+1)>>1) - ((((n)>>22)+1)>>9))
-# //define LOOKUP_T const unsigned char
-#else
-# define X(n) (n)
-# //define LOOKUP_T const ogg_int32_t
-#endif
-
-#ifdef ROCKBOX
-#include <codecs.h>
-#endif /* ROCKBOX */
-
-#include "codeclib_misc.h"
-
-#ifndef ICONST_ATTR_TREMOR_WINDOW
-#define ICONST_ATTR_TREMOR_WINDOW ICONST_ATTR
-#endif
-
-#ifndef ICODE_ATTR_TREMOR_MDCT
-#define ICODE_ATTR_TREMOR_MDCT ICODE_ATTR
-#endif
-
-#ifndef ICODE_ATTR_TREMOR_NOT_MDCT
-#define ICODE_ATTR_TREMOR_NOT_MDCT ICODE_ATTR
-#endif
-
-
-
-#ifdef _LOW_ACCURACY_
-#define cPI3_8 (0x0062)
-#define cPI2_8 (0x00b5)
-#define cPI1_8 (0x00ed)
-#else
-#define cPI3_8 (0x30fbc54d)
-#define cPI2_8 (0x5a82799a)
-#define cPI1_8 (0x7641af3d)
-#endif
-
-
-extern void mdct_backward(int n, int32_t *in, int32_t *out);
-
-#endif
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/apps/codecs/lib/mdct_arm.S b/apps/codecs/lib/mdct_arm.S
deleted file mode 100644
index 515b859..0000000
--- a/apps/codecs/lib/mdct_arm.S
+++ /dev/null
@@ -1,437 +0,0 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2007 by Tomasz Malesinski
- *
- * 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"
-/* Codecs should not normally do this, but we need to check a macro, and
- * codecs.h would confuse the assembler. */
-
-#define cPI3_8 (0x30fbc54d)
-#define cPI2_8 (0x5a82799a)
-#define cPI1_8 (0x7641af3d)
-
-#ifdef USE_IRAM
- .section .icode,"ax",%progbits
-#else
- .text
-#endif
- .align
-
- .global mdct_butterfly_32
- .global mdct_butterfly_generic_loop
-
-mdct_butterfly_8:
-@ inputs: r0,r1,r2,r3,r4,r5,r6,r10,r11 &lr
-@ uses: r8,r9,r12(scratch)
-@ modifies: r0,r1,r2,r3,r4,r5,r6,r10,r11. increments r0 by #8*4
- add r9, r5, r1 @ x4 + x0
- sub r5, r5, r1 @ x4 - x0
- add r7, r6, r2 @ x5 + x1
- sub r6, r6, r2 @ x5 - x1
- add r8, r10, r3 @ x6 + x2
- sub r10, r10, r3 @ x6 - x2
- add r12, r11, r4 @ x7 + x3
- sub r11, r11, r4 @ x7 - x3
-
- add r1, r10, r6 @ y0 = (x6 - x2) + (x5 - x1)
- sub r2, r11, r5 @ y1 = (x7 - x3) - (x4 - x0)
- sub r3, r10, r6 @ y2 = (x6 - x2) - (x5 - x1)
- add r4, r11, r5 @ y3 = (x7 - x3) + (x4 - x0)
- sub r5, r8, r9 @ y4 = (x6 + x2) - (x4 + x0)
- sub r6, r12, r7 @ y5 = (x7 + x3) - (x5 + x1)
- add r10, r8, r9 @ y6 = (x6 + x2) + (x4 + x0)
- add r11, r12, r7 @ y7 = (x7 + x3) + (x5 + x1)
- stmia r0!, {r1, r2, r3, r4, r5, r6, r10, r11}
-
- bx lr
-
-mdct_butterfly_16:
-@ inputs: r0,r1 &lr
-@ uses: r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12
-@ modifies: r0. increments r0 by #16*4
-@ calls mdct_butterfly_8 via bl so need to stack lr for return address
- str lr, [sp, #-4]!
- add r1, r0, #8*4
-
- ldmia r0, {r2, r3, r4, r5}
- ldmia r1, {r6, r7, r8, r9}
- add r6, r6, r2 @ y8 = x8 + x0
- rsb r2, r6, r2, asl #1 @ x0 - x8
- add r7, r7, r3 @ y9 = x9 + x1
- rsb r3, r7, r3, asl #1 @ x1 - x9
- add r8, r8, r4 @ y10 = x10 + x2
- sub r11, r8, r4, asl #1 @ x10 - x2
- add r9, r9, r5 @ y11 = x11 + x3
- rsb r10, r9, r5, asl #1 @ x3 - x11
-
- stmia r1!, {r6, r7, r8, r9}
-
- add r2, r2, r3 @ (x0 - x8) + (x1 - x9)
- rsb r3, r2, r3, asl #1 @ (x1 - x9) - (x0 - x8)
-
- ldr r12, =cPI2_8
- smull r8, r5, r12, r2
- smull r8, r6, r12, r3
- mov r5, r5, asl #1
- mov r6, r6, asl #1
-
- stmia r0!, {r5, r6, r10, r11}
-
- ldmia r0, {r2, r3, r4, r5}
- ldmia r1, {r6, r7, r8, r9}
- add r6, r6, r2 @ y12 = x12 + x4
- sub r2, r6, r2, asl #1 @ x12 - x4
- add r7, r7, r3 @ y13 = x13 + x5
- sub r3, r7, r3, asl #1 @ x13 - x5
- add r8, r8, r4 @ y10 = x14 + x6
- sub r10, r8, r4, asl #1 @ x14 - x6
- add r9, r9, r5 @ y11 = x15 + x7
- sub r11, r9, r5, asl #1 @ x15 - x7
-
- stmia r1, {r6, r7, r8, r9}
-
- sub r2, r2, r3 @ (x12 - x4) - (x13 - x5)
- add r3, r2, r3, asl #1 @ (x12 - x4) + (x13 - x5)
-
- smull r8, r5, r12, r2
- smull r8, r6, r12, r3
- mov r5, r5, asl #1
- mov r6, r6, asl #1
- @ no stmia here, r5, r6, r10, r11 are passed to mdct_butterfly_8
-
- sub r0, r0, #4*4
- ldmia r0, {r1, r2, r3, r4}
- bl mdct_butterfly_8
-
- @ mdct_butterfly_8 will have incremented r0 by #8*4 already
- ldmia r0, {r1, r2, r3, r4, r5, r6, r10, r11}
-
- bl mdct_butterfly_8
- @ mdct_butterfly_8 increments r0 by another #8*4 here
- @ at end, r0 has been incremented by #16*4
-
- ldrpc
-
-mdct_butterfly_32:
- stmdb sp!, {r4-r11, lr}
-
- add r1, r0, #16*4
-
- ldmia r0, {r2, r3, r4, r5}
- ldmia r1, {r6, r7, r8, r9}
- add r6, r6, r2 @ y16 = x16 + x0
- rsb r2, r6, r2, asl #1 @ x0 - x16
- add r7, r7, r3 @ y17 = x17 + x1
- rsb r3, r7, r3, asl #1 @ x1 - x17
- add r8, r8, r4 @ y18 = x18 + x2
- rsb r4, r8, r4, asl #1 @ x2 - x18
- add r9, r9, r5 @ y19 = x19 + x3
- rsb r5, r9, r5, asl #1 @ x3 - x19
-
- stmia r1!, {r6, r7, r8, r9}
-
- ldr r12, =cPI1_8
- ldr lr, =cPI3_8
- smull r10, r6, r12, r2
- rsb r2, r2, #0
- smlal r10, r6, lr, r3
- smull r10, r7, r12, r3
- smlal r10, r7, lr, r2
- mov r6, r6, asl #1
- mov r7, r7, asl #1
-
- add r4, r4, r5 @ (x3 - x19) + (x2 - x18)
- rsb r5, r4, r5, asl #1 @ (x3 - x19) - (x2 - x18)
-
- ldr r11, =cPI2_8
- smull r10, r8, r4, r11
- smull r10, r9, r5, r11
- mov r8, r8, asl #1
- mov r9, r9, asl #1
-
- stmia r0!, {r6, r7, r8, r9}
-
- ldmia r0, {r2, r3, r4, r5}
- ldmia r1, {r6, r7, r8, r9}
- add r6, r6, r2 @ y20 = x20 + x4
- rsb r2, r6, r2, asl #1 @ x4 - x20
- add r7, r7, r3 @ y21 = x21 + x5
- rsb r3, r7, r3, asl #1 @ x5 - x21
- add r8, r8, r4 @ y22 = x22 + x6
- sub r11, r8, r4, asl #1 @ x22 - x6
- add r9, r9, r5 @ y23 = x23 + x7
- rsb r10, r9, r5, asl #1 @ x7 - x23
- stmia r1!, {r6, r7, r8, r9}
-
- @r4,r5,r6,r7,r8,r9 now free
- @ we don't use r5, r8, r9 below
-
- smull r4, r6, lr, r2
- rsb r2, r2, #0
- smlal r4, r6, r12, r3
- smull r4, r7, lr, r3
- smlal r4, r7, r12, r2
- mov r6, r6, asl #1
- mov r7, r7, asl #1
-
- stmia r0!, {r6, r7, r10, r11}
-
- ldmia r0, {r2, r3, r4, r5}
- ldmia r1, {r6, r7, r8, r9}
- add r6, r6, r2 @ y24 = x24 + x8
- sub r2, r6, r2, asl #1 @ x24 - x8
- add r7, r7, r3 @ y25 = x25 + x9
- sub r3, r7, r3, asl #1 @ x25 - x9
- add r8, r8, r4 @ y26 = x26 + x10
- sub r4, r8, r4, asl #1 @ x26 - x10
- add r9, r9, r5 @ y27 = x27 + x11
- sub r5, r9, r5, asl #1 @ x27 - x11
-
- stmia r1!, {r6, r7, r8, r9}
-
- smull r10, r7, lr, r3
- rsb r3, r3, #0
- smlal r10, r7, r12, r2
- smull r10, r6, r12, r3
- smlal r10, r6, lr, r2
- mov r6, r6, asl #1
- mov r7, r7, asl #1
-
- sub r4, r4, r5 @ (x26 - x10) - (x27 - x11)
- add r5, r4, r5, asl #1 @ (x26 - x10) + (x27 - x11)
-
- ldr r11, =cPI2_8
- smull r10, r8, r11, r4
- smull r10, r9, r11, r5
- mov r8, r8, asl #1
- mov r9, r9, asl #1
-
- stmia r0!, {r6, r7, r8, r9}
-
- ldmia r0, {r2, r3, r4, r5}
- ldmia r1, {r6, r7, r8, r9}
- add r6, r6, r2 @ y28 = x28 + x12
- sub r2, r6, r2, asl #1 @ x28 - x12
- add r7, r7, r3 @ y29 = x29 + x13
- sub r3, r7, r3, asl #1 @ x29 - x13
- add r8, r8, r4 @ y30 = x30 + x14
- sub r10, r8, r4, asl #1 @ x30 - x14
- add r9, r9, r5 @ y31 = x31 + x15
- sub r11, r9, r5, asl #1 @ x31 - x15
- stmia r1, {r6, r7, r8, r9}
-
- @ r4,r5,r6,r7,r8,r9 now free
- @ we don't use r5,r8,r9 below
-
- smull r4, r7, r12, r3
- rsb r3, r3, #0
- smlal r4, r7, lr, r2
- smull r4, r6, lr, r3
- smlal r4, r6, r12, r2
- mov r6, r6, asl #1
- mov r7, r7, asl #1
-
- stmia r0, {r6, r7, r10, r11}
-
- sub r0, r0, #12*4
- bl mdct_butterfly_16
-
- @ we know mdct_butterfly_16 increments r0 by #16*4
- @ and we wanted to advance by #16*4 anyway, so just call again
- bl mdct_butterfly_16
-
- ldmpc regs=r4-r11
-
- @ mdct_butterfly_generic_loop(x1, x2, T0, step, Ttop)
-mdct_butterfly_generic_loop:
- stmdb sp!, {r4-r11, lr}
- str r2, [sp, #-4]
- ldr r4, [sp, #36]
-1:
- ldmdb r0, {r6, r7, r8, r9}
- ldmdb r1, {r10, r11, r12, r14}
-
- add r6, r6, r10
- sub r10, r6, r10, asl #1
- add r7, r7, r11
- rsb r11, r7, r11, asl #1
- add r8, r8, r12
- sub r12, r8, r12, asl #1
- add r9, r9, r14
- rsb r14, r9, r14, asl #1
-
- stmdb r0!, {r6, r7, r8, r9}
-
- ldmia r2, {r6, r7}
- smull r5, r8, r6, r14
- rsb r14, r14, #0
- smlal r5, r8, r7, r12
- smull r5, r9, r6, r12
- smlal r5, r9, r7, r14
-
- mov r8, r8, asl #1
- mov r9, r9, asl #1
- add r2, r2, r3, asl #2
-
- ldmia r2, {r12, r14}
- smull r5, r6, r12, r11
- rsb r11, r11, #0
- smlal r5, r6, r14, r10
- smull r5, r7, r12, r10
- smlal r5, r7, r14, r11
-
- mov r6, r6, asl #1
- mov r7, r7, asl #1
- stmdb r1!, {r6, r7, r8, r9}
- add r2, r2, r3, asl #2
-
- cmp r2, r4
- blo 1b
-
- ldr r4, [sp, #-4]
-1:
- ldmdb r0, {r6, r7, r8, r9}
- ldmdb r1, {r10, r11, r12, r14}
-
- add r6, r6, r10
- sub r10, r6, r10, asl #1
- add r7, r7, r11
- sub r11, r7, r11, asl #1
- add r8, r8, r12
- sub r12, r8, r12, asl #1
- add r9, r9, r14
- sub r14, r9, r14, asl #1
-
- stmdb r0!, {r6, r7, r8, r9}
-
- ldmia r2, {r6, r7}
- smull r5, r9, r6, r14
- rsb r14, r14, #0
- smlal r5, r9, r7, r12
- smull r5, r8, r6, r12
- smlal r5, r8, r7, r14
-
- mov r8, r8, asl #1
- mov r9, r9, asl #1
-
- sub r2, r2, r3, asl #2
-
- ldmia r2, {r12, r14}
- smull r5, r7, r12, r11
- rsb r11, r11, #0
- smlal r5, r7, r14, r10
- smull r5, r6, r12, r10
- smlal r5, r6, r14, r11
-
- mov r6, r6, asl #1
- mov r7, r7, asl #1
- stmdb r1!, {r6, r7, r8, r9}
- sub r2, r2, r3, asl #2
-
- cmp r2, r4
- bhi 1b
-
- ldr r4, [sp, #36]
-1:
- ldmdb r0, {r6, r7, r8, r9}
- ldmdb r1, {r10, r11, r12, r14}
-
- add r6, r6, r10
- rsb r10, r6, r10, asl #1
- add r7, r7, r11
- rsb r11, r7, r11, asl #1
- add r8, r8, r12
- rsb r12, r8, r12, asl #1
- add r9, r9, r14
- rsb r14, r9, r14, asl #1
-
- stmdb r0!, {r6, r7, r8, r9}
-
- ldmia r2, {r6, r7}
- smull r5, r8, r6, r12
- rsb r12, r12, #0
- smlal r5, r8, r7, r14
- smull r5, r9, r6, r14
- smlal r5, r9, r7, r12
-
- mov r8, r8, asl #1
- mov r9, r9, asl #1
-
- add r2, r2, r3, asl #2
-
- ldmia r2, {r12, r14}
- smull r5, r6, r12, r10
- rsb r10, r10, #0
- smlal r5, r6, r14, r11
- smull r5, r7, r12, r11
- smlal r5, r7, r14, r10
-
- mov r6, r6, asl #1
- mov r7, r7, asl #1
- stmdb r1!, {r6, r7, r8, r9}
- add r2, r2, r3, asl #2
-
- cmp r2, r4
- blo 1b
-
- ldr r4, [sp, #-4]
-1:
- ldmdb r0, {r6, r7, r8, r9}
- ldmdb r1, {r10, r11, r12, r14}
-
- add r6, r6, r10
- sub r10, r6, r10, asl #1
- add r7, r7, r11
- rsb r11, r7, r11, asl #1
- add r8, r8, r12
- sub r12, r8, r12, asl #1
- add r9, r9, r14
- rsb r14, r9, r14, asl #1
-
- stmdb r0!, {r6, r7, r8, r9}
-
- ldmia r2, {r6, r7}
- smull r5, r9, r6, r12
- smlal r5, r9, r7, r14
- rsb r12, r12, #0
- smull r5, r8, r6, r14
- smlal r5, r8, r7, r12
-
- mov r8, r8, asl #1
- mov r9, r9, asl #1
- sub r2, r2, r3, asl #2
-
- ldmia r2, {r12, r14}
- smull r5, r7, r12, r10
- rsb r10, r10, #0
- smlal r5, r7, r14, r11
- smull r5, r6, r12, r11
- smlal r5, r6, r14, r10
-
- mov r6, r6, asl #1
- mov r7, r7, asl #1
- stmdb r1!, {r6, r7, r8, r9}
- sub r2, r2, r3, asl #2
-
- cmp r2, r4
- bhi 1b
-
- ldmpc regs=r4-r11
-