@@ -352,19 +352,18 @@ struct fixedfloat {
352
352
353
353
root_table[3 + x] = 2^(x/4)
354
354
*/
355
+ static mad_fixed_t const root_table_val [7 ] PROGMEM = {
356
+ MAD_F (0x09837f05 ) /* 2^(-3/4) == 0.59460355750136 */ ,
357
+ MAD_F (0x0b504f33 ) /* 2^(-2/4) == 0.70710678118655 */ ,
358
+ MAD_F (0x0d744fcd ) /* 2^(-1/4) == 0.84089641525371 */ ,
359
+ MAD_F (0x10000000 ) /* 2^( 0/4) == 1.00000000000000 */ ,
360
+ MAD_F (0x1306fe0a ) /* 2^(+1/4) == 1.18920711500272 */ ,
361
+ MAD_F (0x16a09e66 ) /* 2^(+2/4) == 1.41421356237310 */ ,
362
+ MAD_F (0x1ae89f99 ) /* 2^(+3/4) == 1.68179283050743 */
363
+ };
355
364
static inline mad_fixed_t root_table (int i )
356
365
{
357
- static mad_fixed_t const root_table_val [7 ] PROGMEM = {
358
- MAD_F (0x09837f05 ) /* 2^(-3/4) == 0.59460355750136 */ ,
359
- MAD_F (0x0b504f33 ) /* 2^(-2/4) == 0.70710678118655 */ ,
360
- MAD_F (0x0d744fcd ) /* 2^(-1/4) == 0.84089641525371 */ ,
361
- MAD_F (0x10000000 ) /* 2^( 0/4) == 1.00000000000000 */ ,
362
- MAD_F (0x1306fe0a ) /* 2^(+1/4) == 1.18920711500272 */ ,
363
- MAD_F (0x16a09e66 ) /* 2^(+2/4) == 1.41421356237310 */ ,
364
- MAD_F (0x1ae89f99 ) /* 2^(+3/4) == 1.68179283050743 */
365
- };
366
- volatile uint32_t a = * (uint32_t * )& root_table_val [i ];
367
- return * (mad_fixed_t * )& a ;
366
+ return root_table_val [i ];
368
367
}
369
368
/*
370
369
coefficients for aliasing reduction
@@ -374,28 +373,26 @@ static inline mad_fixed_t root_table(int i)
374
373
cs[i] = 1 / sqrt(1 + c[i]^2)
375
374
ca[i] = c[i] / sqrt(1 + c[i]^2)
376
375
*/
376
+ static mad_fixed_t const cs_val [8 ] PROGMEM = {
377
+ + MAD_F (0x0db84a81 ) /* +0.857492926 */ , + MAD_F (0x0e1b9d7f ) /* +0.881741997 */ ,
378
+ + MAD_F (0x0f31adcf ) /* +0.949628649 */ , + MAD_F (0x0fbba815 ) /* +0.983314592 */ ,
379
+ + MAD_F (0x0feda417 ) /* +0.995517816 */ , + MAD_F (0x0ffc8fc8 ) /* +0.999160558 */ ,
380
+ + MAD_F (0x0fff964c ) /* +0.999899195 */ , + MAD_F (0x0ffff8d3 ) /* +0.999993155 */
381
+ };
377
382
static inline mad_fixed_t cs (int i )
378
383
{
379
- static mad_fixed_t const cs_val [8 ] PROGMEM = {
380
- + MAD_F (0x0db84a81 ) /* +0.857492926 */ , + MAD_F (0x0e1b9d7f ) /* +0.881741997 */ ,
381
- + MAD_F (0x0f31adcf ) /* +0.949628649 */ , + MAD_F (0x0fbba815 ) /* +0.983314592 */ ,
382
- + MAD_F (0x0feda417 ) /* +0.995517816 */ , + MAD_F (0x0ffc8fc8 ) /* +0.999160558 */ ,
383
- + MAD_F (0x0fff964c ) /* +0.999899195 */ , + MAD_F (0x0ffff8d3 ) /* +0.999993155 */
384
- };
385
- volatile uint32_t a = * (uint32_t * )& cs_val [i ];
386
- return * (mad_fixed_t * )& a ;
384
+ return cs_val [i ];
387
385
}
388
386
387
+ static mad_fixed_t const ca_val [8 ] PROGMEM = {
388
+ - MAD_F (0x083b5fe7 ) /* -0.514495755 */ , - MAD_F (0x078c36d2 ) /* -0.471731969 */ ,
389
+ - MAD_F (0x05039814 ) /* -0.313377454 */ , - MAD_F (0x02e91dd1 ) /* -0.181913200 */ ,
390
+ - MAD_F (0x0183603a ) /* -0.094574193 */ , - MAD_F (0x00a7cb87 ) /* -0.040965583 */ ,
391
+ - MAD_F (0x003a2847 ) /* -0.014198569 */ , - MAD_F (0x000f27b4 ) /* -0.003699975 */
392
+ };
389
393
static inline mad_fixed_t ca (int i )
390
394
{
391
- static mad_fixed_t const ca_val [8 ] PROGMEM = {
392
- - MAD_F (0x083b5fe7 ) /* -0.514495755 */ , - MAD_F (0x078c36d2 ) /* -0.471731969 */ ,
393
- - MAD_F (0x05039814 ) /* -0.313377454 */ , - MAD_F (0x02e91dd1 ) /* -0.181913200 */ ,
394
- - MAD_F (0x0183603a ) /* -0.094574193 */ , - MAD_F (0x00a7cb87 ) /* -0.040965583 */ ,
395
- - MAD_F (0x003a2847 ) /* -0.014198569 */ , - MAD_F (0x000f27b4 ) /* -0.003699975 */
396
- };
397
- volatile uint32_t a = * (uint32_t * )& ca_val [i ];
398
- return * (mad_fixed_t * )& a ;
395
+ return ca_val [i ];
399
396
}
400
397
401
398
/*
@@ -417,32 +414,31 @@ mad_fixed_t const imdct_s[6][6] PROGMEM = {
417
414
418
415
window_l[i] = sin((PI / 36) * (i + 1/2))
419
416
*/
417
+ static mad_fixed_t const window_l_val [36 ] PROGMEM = {
418
+ MAD_F (0x00b2aa3e ) /* 0.043619387 */ , MAD_F (0x0216a2a2 ) /* 0.130526192 */ ,
419
+ MAD_F (0x03768962 ) /* 0.216439614 */ , MAD_F (0x04cfb0e2 ) /* 0.300705800 */ ,
420
+ MAD_F (0x061f78aa ) /* 0.382683432 */ , MAD_F (0x07635284 ) /* 0.461748613 */ ,
421
+ MAD_F (0x0898c779 ) /* 0.537299608 */ , MAD_F (0x09bd7ca0 ) /* 0.608761429 */ ,
422
+ MAD_F (0x0acf37ad ) /* 0.675590208 */ , MAD_F (0x0bcbe352 ) /* 0.737277337 */ ,
423
+ MAD_F (0x0cb19346 ) /* 0.793353340 */ , MAD_F (0x0d7e8807 ) /* 0.843391446 */ ,
424
+
425
+ MAD_F (0x0e313245 ) /* 0.887010833 */ , MAD_F (0x0ec835e8 ) /* 0.923879533 */ ,
426
+ MAD_F (0x0f426cb5 ) /* 0.953716951 */ , MAD_F (0x0f9ee890 ) /* 0.976296007 */ ,
427
+ MAD_F (0x0fdcf549 ) /* 0.991444861 */ , MAD_F (0x0ffc19fd ) /* 0.999048222 */ ,
428
+ MAD_F (0x0ffc19fd ) /* 0.999048222 */ , MAD_F (0x0fdcf549 ) /* 0.991444861 */ ,
429
+ MAD_F (0x0f9ee890 ) /* 0.976296007 */ , MAD_F (0x0f426cb5 ) /* 0.953716951 */ ,
430
+ MAD_F (0x0ec835e8 ) /* 0.923879533 */ , MAD_F (0x0e313245 ) /* 0.887010833 */ ,
431
+
432
+ MAD_F (0x0d7e8807 ) /* 0.843391446 */ , MAD_F (0x0cb19346 ) /* 0.793353340 */ ,
433
+ MAD_F (0x0bcbe352 ) /* 0.737277337 */ , MAD_F (0x0acf37ad ) /* 0.675590208 */ ,
434
+ MAD_F (0x09bd7ca0 ) /* 0.608761429 */ , MAD_F (0x0898c779 ) /* 0.537299608 */ ,
435
+ MAD_F (0x07635284 ) /* 0.461748613 */ , MAD_F (0x061f78aa ) /* 0.382683432 */ ,
436
+ MAD_F (0x04cfb0e2 ) /* 0.300705800 */ , MAD_F (0x03768962 ) /* 0.216439614 */ ,
437
+ MAD_F (0x0216a2a2 ) /* 0.130526192 */ , MAD_F (0x00b2aa3e ) /* 0.043619387 */ ,
438
+ };
420
439
static inline mad_fixed_t window_l (int i )
421
440
{
422
- static mad_fixed_t const window_l_val [36 ] PROGMEM = {
423
- MAD_F (0x00b2aa3e ) /* 0.043619387 */ , MAD_F (0x0216a2a2 ) /* 0.130526192 */ ,
424
- MAD_F (0x03768962 ) /* 0.216439614 */ , MAD_F (0x04cfb0e2 ) /* 0.300705800 */ ,
425
- MAD_F (0x061f78aa ) /* 0.382683432 */ , MAD_F (0x07635284 ) /* 0.461748613 */ ,
426
- MAD_F (0x0898c779 ) /* 0.537299608 */ , MAD_F (0x09bd7ca0 ) /* 0.608761429 */ ,
427
- MAD_F (0x0acf37ad ) /* 0.675590208 */ , MAD_F (0x0bcbe352 ) /* 0.737277337 */ ,
428
- MAD_F (0x0cb19346 ) /* 0.793353340 */ , MAD_F (0x0d7e8807 ) /* 0.843391446 */ ,
429
-
430
- MAD_F (0x0e313245 ) /* 0.887010833 */ , MAD_F (0x0ec835e8 ) /* 0.923879533 */ ,
431
- MAD_F (0x0f426cb5 ) /* 0.953716951 */ , MAD_F (0x0f9ee890 ) /* 0.976296007 */ ,
432
- MAD_F (0x0fdcf549 ) /* 0.991444861 */ , MAD_F (0x0ffc19fd ) /* 0.999048222 */ ,
433
- MAD_F (0x0ffc19fd ) /* 0.999048222 */ , MAD_F (0x0fdcf549 ) /* 0.991444861 */ ,
434
- MAD_F (0x0f9ee890 ) /* 0.976296007 */ , MAD_F (0x0f426cb5 ) /* 0.953716951 */ ,
435
- MAD_F (0x0ec835e8 ) /* 0.923879533 */ , MAD_F (0x0e313245 ) /* 0.887010833 */ ,
436
-
437
- MAD_F (0x0d7e8807 ) /* 0.843391446 */ , MAD_F (0x0cb19346 ) /* 0.793353340 */ ,
438
- MAD_F (0x0bcbe352 ) /* 0.737277337 */ , MAD_F (0x0acf37ad ) /* 0.675590208 */ ,
439
- MAD_F (0x09bd7ca0 ) /* 0.608761429 */ , MAD_F (0x0898c779 ) /* 0.537299608 */ ,
440
- MAD_F (0x07635284 ) /* 0.461748613 */ , MAD_F (0x061f78aa ) /* 0.382683432 */ ,
441
- MAD_F (0x04cfb0e2 ) /* 0.300705800 */ , MAD_F (0x03768962 ) /* 0.216439614 */ ,
442
- MAD_F (0x0216a2a2 ) /* 0.130526192 */ , MAD_F (0x00b2aa3e ) /* 0.043619387 */ ,
443
- };
444
- volatile uint32_t a = * (uint32_t * )& window_l_val [i ];
445
- return * (mad_fixed_t * )& a ;
441
+ return window_l_val [i ];
446
442
}
447
443
# endif /* ASO_IMDCT */
448
444
@@ -452,18 +448,17 @@ static inline mad_fixed_t window_l(int i)
452
448
453
449
window_s[i] = sin((PI / 12) * (i + 1/2))
454
450
*/
451
+ static mad_fixed_t const window_s_val [12 ] PROGMEM = {
452
+ MAD_F (0x0216a2a2 ) /* 0.130526192 */ , MAD_F (0x061f78aa ) /* 0.382683432 */ ,
453
+ MAD_F (0x09bd7ca0 ) /* 0.608761429 */ , MAD_F (0x0cb19346 ) /* 0.793353340 */ ,
454
+ MAD_F (0x0ec835e8 ) /* 0.923879533 */ , MAD_F (0x0fdcf549 ) /* 0.991444861 */ ,
455
+ MAD_F (0x0fdcf549 ) /* 0.991444861 */ , MAD_F (0x0ec835e8 ) /* 0.923879533 */ ,
456
+ MAD_F (0x0cb19346 ) /* 0.793353340 */ , MAD_F (0x09bd7ca0 ) /* 0.608761429 */ ,
457
+ MAD_F (0x061f78aa ) /* 0.382683432 */ , MAD_F (0x0216a2a2 ) /* 0.130526192 */ ,
458
+ };
455
459
static inline mad_fixed_t window_s (int i )
456
460
{
457
- static mad_fixed_t const window_s_val [12 ] PROGMEM = {
458
- MAD_F (0x0216a2a2 ) /* 0.130526192 */ , MAD_F (0x061f78aa ) /* 0.382683432 */ ,
459
- MAD_F (0x09bd7ca0 ) /* 0.608761429 */ , MAD_F (0x0cb19346 ) /* 0.793353340 */ ,
460
- MAD_F (0x0ec835e8 ) /* 0.923879533 */ , MAD_F (0x0fdcf549 ) /* 0.991444861 */ ,
461
- MAD_F (0x0fdcf549 ) /* 0.991444861 */ , MAD_F (0x0ec835e8 ) /* 0.923879533 */ ,
462
- MAD_F (0x0cb19346 ) /* 0.793353340 */ , MAD_F (0x09bd7ca0 ) /* 0.608761429 */ ,
463
- MAD_F (0x061f78aa ) /* 0.382683432 */ , MAD_F (0x0216a2a2 ) /* 0.130526192 */ ,
464
- };
465
- volatile uint32_t a = * (uint32_t * )& window_s_val [i ];
466
- return * (mad_fixed_t * )& a ;
461
+ return window_s_val [i ];
467
462
}
468
463
469
464
/*
@@ -473,19 +468,18 @@ static inline mad_fixed_t window_s(int i)
473
468
is_ratio[i] = tan(i * (PI / 12))
474
469
is_table[i] = is_ratio[i] / (1 + is_ratio[i])
475
470
*/
471
+ static mad_fixed_t const is_table_val [7 ] PROGMEM = {
472
+ MAD_F (0x00000000 ) /* 0.000000000 */ ,
473
+ MAD_F (0x0361962f ) /* 0.211324865 */ ,
474
+ MAD_F (0x05db3d74 ) /* 0.366025404 */ ,
475
+ MAD_F (0x08000000 ) /* 0.500000000 */ ,
476
+ MAD_F (0x0a24c28c ) /* 0.633974596 */ ,
477
+ MAD_F (0x0c9e69d1 ) /* 0.788675135 */ ,
478
+ MAD_F (0x10000000 ) /* 1.000000000 */
479
+ };
476
480
static inline mad_fixed_t is_table (int i )
477
481
{
478
- static mad_fixed_t const is_table_val [7 ] PROGMEM = {
479
- MAD_F (0x00000000 ) /* 0.000000000 */ ,
480
- MAD_F (0x0361962f ) /* 0.211324865 */ ,
481
- MAD_F (0x05db3d74 ) /* 0.366025404 */ ,
482
- MAD_F (0x08000000 ) /* 0.500000000 */ ,
483
- MAD_F (0x0a24c28c ) /* 0.633974596 */ ,
484
- MAD_F (0x0c9e69d1 ) /* 0.788675135 */ ,
485
- MAD_F (0x10000000 ) /* 1.000000000 */
486
- };
487
- volatile uint32_t a = * (uint32_t * )& is_table_val [i ];
488
- return * (mad_fixed_t * )& a ;
482
+ return is_table_val [i ];
489
483
}
490
484
491
485
/*
@@ -1739,7 +1733,10 @@ void sdctII(mad_fixed_t const x[18], mad_fixed_t X[18])
1739
1733
s = * (volatile mad_fixed_t * )(volatile uint32_t * )& scale [i + 2 ]; tmp [i + 2 ] = mad_f_mul (x [i + 2 ] - x [18 - (i + 2 ) - 1 ], s ); //scale[i + 2]);
1740
1734
}
1741
1735
1736
+ #pragma GCC diagnostic push
1737
+ #pragma GCC diagnostic ignored "-Wstringop-overflow"
1742
1738
fastsdct (tmp , & X [1 ]);
1739
+ #pragma GCC diagnostic pop
1743
1740
1744
1741
/* output accumulation */
1745
1742
0 commit comments