fix shine for gcc12 (#19458)

This commit is contained in:
Christian Baars 2023-09-05 10:53:51 +02:00 committed by GitHub
parent c2f8821b2f
commit a5835450e9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 65 additions and 65 deletions

View File

@ -34,7 +34,7 @@ void shine_format_bitstream(shine_global_config *config) {
for ( gr = 0; gr < config->mpeg.granules_per_frame; gr++ ) for ( gr = 0; gr < config->mpeg.granules_per_frame; gr++ )
{ {
int *pi = &config->l3_enc[ch][gr][0]; int *pi = &config->l3_enc[ch][gr][0];
int32_t *pr = &config->mdct_freq[ch][gr][0]; int *pr = &config->mdct_freq[ch][gr][0];
for ( i = 0; i < GRANULE_SIZE; i++ ) for ( i = 0; i < GRANULE_SIZE; i++ )
{ {
if ( (pr[i] < 0) && (pi[i] > 0) ) if ( (pr[i] < 0) && (pi[i] > 0) )

View File

@ -31,7 +31,7 @@ static void calc_xmin( gr_info *cod_info, shine_psy_xmin_t *l3_xmin, int gr, int
static int quantize(int ix[GRANULE_SIZE], int stepsize, shine_global_config *config); static int quantize(int ix[GRANULE_SIZE], int stepsize, shine_global_config *config);
int32_t sqrt_int(int32_t r) { int sqrt_int(int r) {
float x; float x;
float rr = r; float rr = r;
float y = rr*0.5; float y = rr*0.5;
@ -40,7 +40,7 @@ int32_t sqrt_int(int32_t r) {
x = (1.5f*x) - (x*x)*(x*y); x = (1.5f*x) - (x*x)*(x*y);
if(r>101123) x = (1.5f*x) - (x*x)*(x*y); if(r>101123) x = (1.5f*x) - (x*x)*(x*y);
int32_t is = (int32_t)(x*rr + 0.5f); int is = (int)(x*rr + 0.5f);
return is + ((r - is*is)>>31); return is + ((r - is*is)>>31);
} }
@ -382,7 +382,7 @@ void shine_loop_initialise(shine_global_config *config) {
* In quantize, the long multiply does not shift it's result left one * In quantize, the long multiply does not shift it's result left one
* bit to compensate. * bit to compensate.
*/ */
config->l3loop->steptabi[i] = (int32_t)((config->l3loop->steptab[i]*2) + 0.5); config->l3loop->steptabi[i] = (int)((config->l3loop->steptab[i]*2) + 0.5);
} }
/* quantize: vector conversion, three quarter power table. /* quantize: vector conversion, three quarter power table.
@ -401,7 +401,7 @@ void shine_loop_initialise(shine_global_config *config) {
int quantize(int ix[GRANULE_SIZE], int stepsize, shine_global_config *config ) int quantize(int ix[GRANULE_SIZE], int stepsize, shine_global_config *config )
{ {
int i, max, ln; int i, max, ln;
int32_t scalei; int scalei;
float scale, dbl; float scale, dbl;
scalei = config->l3loop->steptabi[stepsize+127]; /* 2**(-stepsize/4) */ scalei = config->l3loop->steptabi[stepsize+127]; /* 2**(-stepsize/4) */

View File

@ -5,8 +5,8 @@
#include "l3subband.h" #include "l3subband.h"
/* This is table B.9: coefficients for aliasing reduction */ /* This is table B.9: coefficients for aliasing reduction */
#define MDCT_CA(coef) (int32_t)(coef / sqrt(1.0 + (coef * coef)) * 0x7fffffff) #define MDCT_CA(coef) (int)(coef / sqrt(1.0 + (coef * coef)) * 0x7fffffff)
#define MDCT_CS(coef) (int32_t)(1.0 / sqrt(1.0 + (coef * coef)) * 0x7fffffff) #define MDCT_CS(coef) (int)(1.0 / sqrt(1.0 + (coef * coef)) * 0x7fffffff)
#define MDCT_CA0 MDCT_CA(-0.6) #define MDCT_CA0 MDCT_CA(-0.6)
#define MDCT_CA1 MDCT_CA(-0.535) #define MDCT_CA1 MDCT_CA(-0.535)
@ -38,7 +38,7 @@ void shine_mdct_initialise(shine_global_config *config) {
for(k=36; k--; ) for(k=36; k--; )
/* combine window and mdct coefficients into a single table */ /* combine window and mdct coefficients into a single table */
/* scale and convert to fixed point before storing */ /* scale and convert to fixed point before storing */
config->mdct.cos_l[m][k] = (int32_t)(sin(PI36*(k+0.5)) config->mdct.cos_l[m][k] = (int)(sin(PI36*(k+0.5))
* cos((PI/72)*(2*k+19)*(2*m+1)) * 0x7fffffff); * cos((PI/72)*(2*k+19)*(2*m+1)) * 0x7fffffff);
} }
@ -50,17 +50,17 @@ void shine_mdct_sub(shine_global_config *config, int stride) {
/* note. we wish to access the array 'config->mdct_freq[2][2][576]' as /* note. we wish to access the array 'config->mdct_freq[2][2][576]' as
* [2][2][32][18]. (32*18=576), * [2][2][32][18]. (32*18=576),
*/ */
int32_t (*mdct_enc)[18]; int (*mdct_enc)[18];
int ch,gr,band,j,k; int ch,gr,band,j,k;
int32_t mdct_in[36]; int mdct_in[36];
for(ch=config->wave.channels; ch--; ) for(ch=config->wave.channels; ch--; )
{ {
for(gr=0; gr<config->mpeg.granules_per_frame; gr++) for(gr=0; gr<config->mpeg.granules_per_frame; gr++)
{ {
/* set up pointer to the part of config->mdct_freq we're using */ /* set up pointer to the part of config->mdct_freq we're using */
mdct_enc = (int32_t (*)[18]) config->mdct_freq[ch][gr]; mdct_enc = (int (*)[18]) config->mdct_freq[ch][gr];
/* polyphase filtering */ /* polyphase filtering */
for(k=0; k<18; k+=2) for(k=0; k<18; k+=2)
@ -91,7 +91,7 @@ void shine_mdct_sub(shine_global_config *config, int stride) {
for(k=18; k--; ) for(k=18; k--; )
{ {
int32_t vm; int vm;
#ifdef __BORLANDC__ #ifdef __BORLANDC__
uint32_t vm_lo; uint32_t vm_lo;
#else #else

View File

@ -28,7 +28,7 @@ void shine_subband_initialise(shine_global_config *config) {
else else
modf(filter-0.5, &filter); modf(filter-0.5, &filter);
/* scale and convert to fixed point before storing */ /* scale and convert to fixed point before storing */
config->subband.fl[i][j] = (int32_t)(filter * (0x7fffffff * 1e-9)); config->subband.fl[i][j] = (int)(filter * (0x7fffffff * 1e-9));
} }
} }
@ -46,20 +46,20 @@ void shine_subband_initialise(shine_global_config *config) {
* picking out values from the windowed samples, and then multiplying * picking out values from the windowed samples, and then multiplying
* them by the filter matrix, producing 32 subband samples. * them by the filter matrix, producing 32 subband samples.
*/ */
void shine_window_filter_subband(int16_t **buffer, int32_t s[SBLIMIT], int ch, shine_global_config *config, int stride) { void shine_window_filter_subband(int16_t **buffer, int s[SBLIMIT], int ch, shine_global_config *config, int stride) {
int32_t y[64]; int y[64];
int i,j; int i,j;
int16_t *ptr = *buffer; int16_t *ptr = *buffer;
/* replace 32 oldest samples with 32 new samples */ /* replace 32 oldest samples with 32 new samples */
for (i=32;i--;) { for (i=32;i--;) {
config->subband.x[ch][i+config->subband.off[ch]] = ((int32_t)*ptr) << 16; config->subband.x[ch][i+config->subband.off[ch]] = ((int)*ptr) << 16;
ptr += stride; ptr += stride;
} }
*buffer = ptr; *buffer = ptr;
for (i=64; i--; ) { for (i=64; i--; ) {
int32_t s_value; int s_value;
#ifdef __BORLANDC__ #ifdef __BORLANDC__
uint32_t s_value_lo; uint32_t s_value_lo;
#else #else
@ -81,7 +81,7 @@ void shine_window_filter_subband(int16_t **buffer, int32_t s[SBLIMIT], int ch, s
config->subband.off[ch] = (config->subband.off[ch] + 480) & (HAN_SIZE-1); /* offset is modulo (HAN_SIZE)*/ config->subband.off[ch] = (config->subband.off[ch] + 480) & (HAN_SIZE-1); /* offset is modulo (HAN_SIZE)*/
for (i=SBLIMIT; i--; ) { for (i=SBLIMIT; i--; ) {
int32_t s_value; int s_value;
#ifdef __BORLANDC__ #ifdef __BORLANDC__
uint32_t s_value_lo; uint32_t s_value_lo;
#else #else

View File

@ -4,6 +4,6 @@
#include <stdint.h> #include <stdint.h>
void shine_subband_initialise( shine_global_config *config ); void shine_subband_initialise( shine_global_config *config );
void shine_window_filter_subband(int16_t **buffer, int32_t s[SBLIMIT], int k, shine_global_config *config, int stride); void shine_window_filter_subband(int16_t **buffer, int s[SBLIMIT], int k, shine_global_config *config, int stride);
#endif #endif

View File

@ -106,12 +106,12 @@ shine_global_config *shine_initialise(shine_config_t *pub_config) {
for (x = 0; x < MAX_CHANNELS; x++) { for (x = 0; x < MAX_CHANNELS; x++) {
for (y = 0; y < MAX_GRANULES; y++) { for (y = 0; y < MAX_GRANULES; y++) {
// 2 * 2 * 576 each // 2 * 2 * 576 each
config->l3_enc[x][y] = (int*)heap_caps_malloc_prefer(sizeof(int32_t)*GRANULE_SIZE, MALLOC_CAP_32BIT, MALLOC_CAP_SPIRAM|MALLOC_CAP_32BIT); //Significant performance hit in IRAM config->l3_enc[x][y] = (int*)heap_caps_malloc_prefer(4*GRANULE_SIZE, MALLOC_CAP_32BIT, MALLOC_CAP_SPIRAM|MALLOC_CAP_32BIT); //Significant performance hit in IRAM
if (!config->l3_enc[x][y]) { if (!config->l3_enc[x][y]) {
// error should never occur because of spiram size // error should never occur because of spiram size
//config->l3_enc[x][y] = (int*)heap_caps_malloc(sizeof(int32_t)*GRANULE_SIZE,MALLOC_CAP_SPIRAM|MALLOC_CAP_32BIT); //config->l3_enc[x][y] = (int*)heap_caps_malloc(sizeof(int32_t)*GRANULE_SIZE,MALLOC_CAP_SPIRAM|MALLOC_CAP_32BIT);
} }
config->mdct_freq[x][y] = (int*)heap_caps_malloc_prefer(sizeof(int32_t)*GRANULE_SIZE, MALLOC_CAP_32BIT, MALLOC_CAP_SPIRAM|MALLOC_CAP_32BIT); //OK 1% config->mdct_freq[x][y] = (int*)heap_caps_malloc_prefer(4*GRANULE_SIZE, MALLOC_CAP_32BIT, MALLOC_CAP_SPIRAM|MALLOC_CAP_32BIT); //OK 1%
if (!config->mdct_freq[x][y]) { if (!config->mdct_freq[x][y]) {
// error // error
//config->mdct_freq[x][y] = (int*)heap_caps_malloc(sizeof(int32_t)*GRANULE_SIZE, MALLOC_CAP_SPIRAM|MALLOC_CAP_32BIT); //config->mdct_freq[x][y] = (int*)heap_caps_malloc(sizeof(int32_t)*GRANULE_SIZE, MALLOC_CAP_SPIRAM|MALLOC_CAP_32BIT);
@ -123,15 +123,15 @@ shine_global_config *shine_initialise(shine_config_t *pub_config) {
#endif #endif
config->l3loop = (l3loop_t*)heap_caps_malloc(sizeof(l3loop_t), MALLOC_CAP_SPIRAM); config->l3loop = (l3loop_t*)heap_caps_malloc(sizeof(l3loop_t), MALLOC_CAP_SPIRAM);
#ifdef SHINE_DEBUG #ifdef SHINE_DEBUG
printf("xrsq & xrabs each: %d\n", sizeof(int32_t)*GRANULE_SIZE); printf("xrsq & xrabs each: %d\n", sizeof(int)*GRANULE_SIZE);
#endif #endif
config->l3loop->xrsq = (int*)heap_caps_malloc_prefer(sizeof(int32_t)*GRANULE_SIZE, MALLOC_CAP_32BIT, MALLOC_CAP_SPIRAM|MALLOC_CAP_32BIT); //OK 0.5% config->l3loop->xrsq = (int*)heap_caps_malloc_prefer(4*GRANULE_SIZE, MALLOC_CAP_32BIT, MALLOC_CAP_SPIRAM|MALLOC_CAP_32BIT); //OK 0.5%
if (!config->l3loop->xrsq) { if (!config->l3loop->xrsq) {
// error // error
//config->l3loop->xrsq = (int*)heap_caps_malloc(sizeof(int32_t)*GRANULE_SIZE, MALLOC_CAP_SPIRAM|MALLOC_CAP_32BIT); //OK 0.5% //config->l3loop->xrsq = (int*)heap_caps_malloc(sizeof(int32_t)*GRANULE_SIZE, MALLOC_CAP_SPIRAM|MALLOC_CAP_32BIT); //OK 0.5%
} }
config->l3loop->xrabs = (int*)heap_caps_malloc_prefer(sizeof(int32_t)*GRANULE_SIZE, MALLOC_CAP_32BIT, MALLOC_CAP_SPIRAM|MALLOC_CAP_32BIT); //OK 0.5% config->l3loop->xrabs = (int*)heap_caps_malloc_prefer(4*GRANULE_SIZE, MALLOC_CAP_32BIT, MALLOC_CAP_SPIRAM|MALLOC_CAP_32BIT); //OK 0.5%
if (!config->l3loop->xrabs) { if (!config->l3loop->xrabs) {
//config->l3loop->xrabs = (int*)heap_caps_malloc(sizeof(int32_t)*GRANULE_SIZE, MALLOC_CAP_SPIRAM|MALLOC_CAP_32BIT); //OK 0.5% //config->l3loop->xrabs = (int*)heap_caps_malloc(sizeof(int32_t)*GRANULE_SIZE, MALLOC_CAP_SPIRAM|MALLOC_CAP_32BIT); //OK 0.5%
} }

View File

@ -2,7 +2,7 @@
#define mul(a,b) \ #define mul(a,b) \
({ \ ({ \
register int32_t res; \ register int res; \
__asm__ __volatile__("mult %0, %1" : : "r" (a), "r" (b)); \ __asm__ __volatile__("mult %0, %1" : : "r" (a), "r" (b)); \
__asm__ __volatile__("mfhi %0" : "=r" (res)); \ __asm__ __volatile__("mfhi %0" : "=r" (res)); \
res; \ res; \
@ -19,14 +19,14 @@
#define mulz(hi,lo) \ #define mulz(hi,lo) \
do { \ do { \
register int32_t t; \ register int t; \
__asm__ __volatile__("mfhi %0" : "=r" (t)); \ __asm__ __volatile__("mfhi %0" : "=r" (t)); \
(hi) = t; \ (hi) = t; \
} while (0) } while (0)
#define cmuls(dre, dim, are, aim, bre, bim) \ #define cmuls(dre, dim, are, aim, bre, bim) \
do { \ do { \
register int32_t t1, t2, tre; \ register int t1, t2, tre; \
__asm__ __volatile__("mult %0, %1" : : "r" (are), "r" (bre)); \ __asm__ __volatile__("mult %0, %1" : : "r" (are), "r" (bre)); \
__asm__ __volatile__("msub %0, %1" : : "r" (aim), "r" (bim)); \ __asm__ __volatile__("msub %0, %1" : : "r" (aim), "r" (bim)); \
__asm__ __volatile__("mfhi %0; mflo %1" : "=r" (t1), "=r" (t2)); \ __asm__ __volatile__("mfhi %0; mflo %1" : "=r" (t1), "=r" (t2)); \

View File

@ -1,11 +1,11 @@
#include <stdint.h> #include <stdint.h>
#ifndef asm_mul #ifndef asm_mul
//#define /// mul(a,b) (int32_t) ( ( ((int64_t) a) * ((int64_t) b) ) >>32 ) //#define /// mul(a,b) (int) ( ( ((int64_t) a) * ((int64_t) b) ) >>32 )
#define asm_mul(x,y) \ #define asm_mul(x,y) \
({ \ ({ \
register int32_t result; \ register int result; \
asm ("mulsh %0, %2, %1" : "=r" (result) : "r" (x), "r" (y)); \ asm ("mulsh %0, %2, %1" : "=r" (result) : "r" (x), "r" (y)); \
result ;\ result ;\
}) })
@ -15,7 +15,7 @@
#ifndef asm_muls //Not sure about this #ifndef asm_muls //Not sure about this
#define asm_muls(x,y) \ #define asm_muls(x,y) \
({ \ ({ \
register int32_t result; \ register int result; \
asm ( \ asm ( \
"mulsh %0, %2, %1\n\t" \ "mulsh %0, %2, %1\n\t" \
"add %0, %0, %0" \ "add %0, %0, %0" \
@ -25,24 +25,24 @@
//#define muls(a,b) (int32_t) ( ( ((int64_t) a) * ((int64_t) b) ) >>31 ) //#define muls(a,b) (int) ( ( ((int64_t) a) * ((int64_t) b) ) >>31 )
#endif #endif
#ifndef asm_mulr //no rounding shortcut #ifndef asm_mulr //no rounding shortcut
#define asm_mulr(x,y) \ #define asm_mulr(x,y) \
({ \ ({ \
register int32_t result; \ register int result; \
asm ("mulsh %0, %2, %1" : "=r" (result) : "r" (x), "r" (y)); \ asm ("mulsh %0, %2, %1" : "=r" (result) : "r" (x), "r" (y)); \
result ;\ result ;\
}) })
//#define mulr(a,b) (int32_t) ( ( ( ((int64_t) a) * ((int64_t) b)) + 0x80000000LL ) >>32 ) //#define mulr(a,b) (int) ( ( ( ((int64_t) a) * ((int64_t) b)) + 0x80000000LL ) >>32 )
#endif #endif
#ifndef asm_mulsr //no rounding shortcut #ifndef asm_mulsr //no rounding shortcut
#define asm_mulsr(x,y) \ #define asm_mulsr(x,y) \
({ \ ({ \
register int32_t result; \ register int result; \
asm ( \ asm ( \
"mulsh %0, %2, %1\n\t" \ "mulsh %0, %2, %1\n\t" \
"add %0, %0, %0" \ "add %0, %0, %0" \
@ -50,7 +50,7 @@
result ;\ result ;\
}) })
//#define mulsr(a,b) (int32_t) ( ( ( ((int64_t) a) * ((int64_t) b)) + 0x40000000LL ) >>31 ) //#define mulsr(a,b) (int) ( ( ( ((int64_t) a) * ((int64_t) b)) + 0x40000000LL ) >>31 )
#endif #endif
#ifndef asm_mul0 #ifndef asm_mul0
@ -84,7 +84,7 @@
/* /*
#define cmuls(dre, dim, are, aim, bre, bim) \ #define cmuls(dre, dim, are, aim, bre, bim) \
do { \ do { \
register int32_t tre, tim; \ register int tre, tim; \
asm ( \ asm ( \
"mull %0, %2, %4\n\t" \ //mulsh "mull %0, %2, %4\n\t" \ //mulsh
"mulsh r3, %2, %4\n\t" \ //mulsh "mulsh r3, %2, %4\n\t" \ //mulsh
@ -111,9 +111,9 @@ do { \
#define asm_cmuls(dre, dim, are, aim, bre, bim) \ #define asm_cmuls(dre, dim, are, aim, bre, bim) \
do { \ do { \
int32_t tre; \ int tre; \
(tre) = (int32_t) (((int64_t) (are) * (int64_t) (bre) - (int64_t) (aim) * (int64_t) (bim)) >> 31); \ (tre) = (int) (((int64_t) (are) * (int64_t) (bre) - (int64_t) (aim) * (int64_t) (bim)) >> 31); \
(dim) = (int32_t) (((int64_t) (are) * (int64_t) (bim) + (int64_t) (aim) * (int64_t) (bre)) >> 31); \ (dim) = (int) (((int64_t) (are) * (int64_t) (bim) + (int64_t) (aim) * (int64_t) (bre)) >> 31); \
(dre) = tre; \ (dre) = tre; \
} while (0) } while (0)
#endif #endif

View File

@ -4,14 +4,14 @@
#if __ARM_ARCH >= 6 #if __ARM_ARCH >= 6
#define mul(x,y) \ #define mul(x,y) \
({ \ ({ \
register int32_t result; \ register int result; \
asm ("smmul %0, %2, %1" : "=r" (result) : "r" (x), "r" (y)); \ asm ("smmul %0, %2, %1" : "=r" (result) : "r" (x), "r" (y)); \
result ;\ result ;\
}) })
#else #else
#define mul(x,y) \ #define mul(x,y) \
({ \ ({ \
register int32_t result; \ register int result; \
asm ("smull r3, %0, %2, %1" : "=r" (result) : "r" (x), "r" (y) : "r3"); \ asm ("smull r3, %0, %2, %1" : "=r" (result) : "r" (x), "r" (y) : "r3"); \
result ; \ result ; \
}) })
@ -20,7 +20,7 @@
/* Fractional multiply with single bit left shift. */ /* Fractional multiply with single bit left shift. */
#define muls(x,y) \ #define muls(x,y) \
({ \ ({ \
register int32_t result; \ register int result; \
asm ( \ asm ( \
"smull r3, %0, %2, %1\n\t" \ "smull r3, %0, %2, %1\n\t" \
"movs r3, r3, lsl #1\n\t" \ "movs r3, r3, lsl #1\n\t" \
@ -34,7 +34,7 @@
#if __ARM_ARCH >= 6 #if __ARM_ARCH >= 6
#define mulr(x,y) \ #define mulr(x,y) \
({ \ ({ \
register int32_t result; \ register int result; \
asm ( \ asm ( \
"smmulr %0, %2, %1" : "=r" (result) : "r" (x), "r" (y) \ "smmulr %0, %2, %1" : "=r" (result) : "r" (x), "r" (y) \
); \ ); \
@ -43,7 +43,7 @@
#else #else
#define mulr(x,y) \ #define mulr(x,y) \
({ \ ({ \
register int32_t result; \ register int result; \
asm ( \ asm ( \
"smull r3, %0, %2, %1\n\t" \ "smull r3, %0, %2, %1\n\t" \
"adds r3, r3, #0x80000000\n\t" \ "adds r3, r3, #0x80000000\n\t" \
@ -56,7 +56,7 @@
#define mulsr(x,y) \ #define mulsr(x,y) \
({ \ ({ \
register int32_t result; \ register int result; \
asm ( \ asm ( \
"smull r3, %0, %1, %2\n\t" \ "smull r3, %0, %1, %2\n\t" \
"movs r3, r3, lsl #1\n\t" \ "movs r3, r3, lsl #1\n\t" \
@ -81,7 +81,7 @@
#define cmuls(dre, dim, are, aim, bre, bim) \ #define cmuls(dre, dim, are, aim, bre, bim) \
do { \ do { \
register int32_t tre, tim; \ register int tre, tim; \
asm ( \ asm ( \
"smull r3, %0, %2, %4\n\t" \ "smull r3, %0, %2, %4\n\t" \
"smlal r3, %0, %3, %5\n\t" \ "smlal r3, %0, %3, %5\n\t" \

View File

@ -66,11 +66,11 @@ const int shine_scale_fact_band_index[9][23] =
/* note. 0.035781 is shine_enwindow maximum value */ /* note. 0.035781 is shine_enwindow maximum value */
/* scale and convert to fixed point before storing */ /* scale and convert to fixed point before storing */
#define SHINE_EW(x) (int32_t)((double)(x) * 0x7fffffff) #define SHINE_EW(x) (int)((double)(x) * 0x7fffffff)
#define SHINE_EW2(a,b) SHINE_EW(a), SHINE_EW(b) #define SHINE_EW2(a,b) SHINE_EW(a), SHINE_EW(b)
#define SHINE_EW10(a,b,c,d,e,f,g,h,i,j) SHINE_EW2(a,b), SHINE_EW2(c,d), SHINE_EW2(e,f), SHINE_EW2(g,h), SHINE_EW2(i,j) #define SHINE_EW10(a,b,c,d,e,f,g,h,i,j) SHINE_EW2(a,b), SHINE_EW2(c,d), SHINE_EW2(e,f), SHINE_EW2(g,h), SHINE_EW2(i,j)
const int32_t shine_enwindow[] = { const int shine_enwindow[] = {
SHINE_EW10( 0.000000, -0.000000, -0.000000, -0.000000, -0.000000, -0.000000, -0.000000, -0.000001, -0.000001, -0.000001), SHINE_EW10( 0.000000, -0.000000, -0.000000, -0.000000, -0.000000, -0.000000, -0.000000, -0.000001, -0.000001, -0.000001),
SHINE_EW10( -0.000001, -0.000001, -0.000001, -0.000002, -0.000002, -0.000002, -0.000002, -0.000003, -0.000003, -0.000003), SHINE_EW10( -0.000001, -0.000001, -0.000001, -0.000002, -0.000002, -0.000002, -0.000002, -0.000003, -0.000003, -0.000003),
SHINE_EW10( -0.000004, -0.000004, -0.000005, -0.000005, -0.000006, -0.000007, -0.000008, -0.000008, -0.000009, -0.000010), SHINE_EW10( -0.000004, -0.000004, -0.000005, -0.000005, -0.000006, -0.000007, -0.000008, -0.000008, -0.000009, -0.000010),

View File

@ -10,7 +10,7 @@ extern const int samplerates[9];
extern const int bitrates[16][4]; extern const int bitrates[16][4];
extern const int shine_scale_fact_band_index[9][23]; extern const int shine_scale_fact_band_index[9][23];
extern const int32_t shine_enwindow[]; extern const int shine_enwindow[];
#endif #endif

View File

@ -85,27 +85,27 @@ typedef struct {
} priv_shine_mpeg_t; } priv_shine_mpeg_t;
typedef struct { typedef struct {
int32_t *xr; /* magnitudes of the spectral values */ int *xr; /* magnitudes of the spectral values */
int32_t *xrsq; /* xr squared */ int *xrsq; /* xr squared */
int32_t *xrabs; /* xr absolute */ int *xrabs; /* xr absolute */
int32_t xrmax; /* maximum of xrabs array */ int xrmax; /* maximum of xrabs array */
int32_t en_tot[MAX_GRANULES]; /* gr */ int en_tot[MAX_GRANULES]; /* gr */
int32_t en[MAX_GRANULES][21]; int en[MAX_GRANULES][21];
int32_t xm[MAX_GRANULES][21]; int xm[MAX_GRANULES][21];
int32_t xrmaxl[MAX_GRANULES]; int xrmaxl[MAX_GRANULES];
double steptab[128]; /* 2**(-x/4) for x = -127..0 */ double steptab[128]; /* 2**(-x/4) for x = -127..0 */
int32_t steptabi[128]; /* 2**(-x/4) for x = -127..0 */ int steptabi[128]; /* 2**(-x/4) for x = -127..0 */
int16_t int2idx[10000]; /* x**(3/4) for x = 0..9999 */ int16_t int2idx[10000]; /* x**(3/4) for x = 0..9999 */
} l3loop_t; } l3loop_t;
typedef struct { typedef struct {
int32_t cos_l[18][36]; int cos_l[18][36];
} mdct_t; } mdct_t;
typedef struct { typedef struct {
int off[MAX_CHANNELS]; int off[MAX_CHANNELS];
int32_t fl[SBLIMIT][64]; int fl[SBLIMIT][64];
int32_t x[MAX_CHANNELS][HAN_SIZE]; int x[MAX_CHANNELS][HAN_SIZE];
} subband_t; } subband_t;
/* Side information */ /* Side information */
@ -150,8 +150,8 @@ typedef struct {
} shine_psy_xmin_t; } shine_psy_xmin_t;
typedef struct { typedef struct {
int32_t l[MAX_GRANULES][MAX_CHANNELS][22]; /* [cb] */ int l[MAX_GRANULES][MAX_CHANNELS][22]; /* [cb] */
int32_t s[MAX_GRANULES][MAX_CHANNELS][13][3]; /* [window][cb] */ int s[MAX_GRANULES][MAX_CHANNELS][13][3]; /* [window][cb] */
} shine_scalefac_t; } shine_scalefac_t;
@ -167,8 +167,8 @@ typedef struct shine_global_flags {
int16_t *buffer[MAX_CHANNELS]; int16_t *buffer[MAX_CHANNELS];
double pe[MAX_CHANNELS][MAX_GRANULES]; double pe[MAX_CHANNELS][MAX_GRANULES];
int *l3_enc[MAX_CHANNELS][MAX_GRANULES]; //4% reduction in performance IRAM int *l3_enc[MAX_CHANNELS][MAX_GRANULES]; //4% reduction in performance IRAM
int32_t l3_sb_sample[MAX_CHANNELS][MAX_GRANULES+1][18][SBLIMIT]; int l3_sb_sample[MAX_CHANNELS][MAX_GRANULES+1][18][SBLIMIT];
int32_t *mdct_freq[MAX_CHANNELS][MAX_GRANULES]; //1% reduction in perormance IRAM int *mdct_freq[MAX_CHANNELS][MAX_GRANULES]; //1% reduction in perormance IRAM
int ResvSize; int ResvSize;
int ResvMax; int ResvMax;
l3loop_t *l3loop; l3loop_t *l3loop;