diff options
Diffstat (limited to 'apps/codecs')
-rw-r--r-- | apps/codecs/libfaad/sbr_dct.c | 222 |
1 files changed, 94 insertions, 128 deletions
diff --git a/apps/codecs/libfaad/sbr_dct.c b/apps/codecs/libfaad/sbr_dct.c index 123514f226..f471745813 100644 --- a/apps/codecs/libfaad/sbr_dct.c +++ b/apps/codecs/libfaad/sbr_dct.c | |||
@@ -1452,103 +1452,76 @@ void DCT2_32_unscaled(real_t *y, real_t *x) | |||
1452 | 1452 | ||
1453 | #else /* #ifdef SBR_LOW_POWER */ | 1453 | #else /* #ifdef SBR_LOW_POWER */ |
1454 | 1454 | ||
1455 | static const real_t dct4_64_tab[] ICONST_ATTR = { | 1455 | /* table for pre-processing within dct4_kernel() */ |
1456 | COEF_CONST(0.999924719333649), COEF_CONST(0.998118102550507), | 1456 | static const real_t dct4_pre_tab[] ICONST_ATTR = { |
1457 | COEF_CONST(0.993906974792480), COEF_CONST(0.987301409244537), | 1457 | COEF_CONST(0.999924719333649), COEF_CONST(-1.01219630241394), COEF_CONST(-0.987653195858002), |
1458 | COEF_CONST(0.978317379951477), COEF_CONST(0.966976463794708), | 1458 | COEF_CONST(0.998118102550507), COEF_CONST(-1.05943882465363), COEF_CONST(-0.936797380447388), |
1459 | COEF_CONST(0.953306019306183), COEF_CONST(0.937339007854462), | 1459 | COEF_CONST(0.993906974792480), COEF_CONST(-1.10412919521332), COEF_CONST(-0.883684754371643), |
1460 | COEF_CONST(0.919113874435425), COEF_CONST(0.898674488067627), | 1460 | COEF_CONST(0.987301409244537), COEF_CONST(-1.14615952968597), COEF_CONST(-0.828443288803101), |
1461 | COEF_CONST(0.876070082187653), COEF_CONST(0.851355195045471), | 1461 | COEF_CONST(0.978317379951477), COEF_CONST(-1.18542873859405), COEF_CONST(-0.771206021308899), |
1462 | COEF_CONST(0.824589252471924), COEF_CONST(0.795836925506592), | 1462 | COEF_CONST(0.966976463794708), COEF_CONST(-1.22184216976166), COEF_CONST(-0.712110757827759), |
1463 | COEF_CONST(0.765167236328125), COEF_CONST(0.732654273509979), | 1463 | COEF_CONST(0.953306019306183), COEF_CONST(-1.25531196594238), COEF_CONST(-0.651300072669983), |
1464 | COEF_CONST(0.698376238346100), COEF_CONST(0.662415742874146), | 1464 | COEF_CONST(0.937339007854462), COEF_CONST(-1.28575766086578), COEF_CONST(-0.588920354843140), |
1465 | COEF_CONST(0.624859452247620), COEF_CONST(0.585797846317291), | 1465 | COEF_CONST(0.919113874435425), COEF_CONST(-1.31310594081879), COEF_CONST(-0.525121808052063), |
1466 | COEF_CONST(0.545324981212616), COEF_CONST(0.503538429737091), | 1466 | COEF_CONST(0.898674488067627), COEF_CONST(-1.33729076385498), COEF_CONST(-0.460058242082596), |
1467 | COEF_CONST(0.460538715124130), COEF_CONST(0.416429549455643), | 1467 | COEF_CONST(0.876070082187653), COEF_CONST(-1.35825383663177), COEF_CONST(-0.393886327743530), |
1468 | COEF_CONST(0.371317148208618), COEF_CONST(0.325310230255127), | 1468 | COEF_CONST(0.851355195045471), COEF_CONST(-1.37594485282898), COEF_CONST(-0.326765477657318), |
1469 | COEF_CONST(0.278519600629807), COEF_CONST(0.231058135628700), | 1469 | COEF_CONST(0.824589252471924), COEF_CONST(-1.39032101631165), COEF_CONST(-0.258857429027557), |
1470 | COEF_CONST(0.183039888739586), COEF_CONST(0.134580686688423), | 1470 | COEF_CONST(0.795836925506592), COEF_CONST(-1.40134787559509), COEF_CONST(-0.190325915813446), |
1471 | COEF_CONST(0.085797272622585), COEF_CONST(0.036807164549828), | 1471 | COEF_CONST(0.765167236328125), COEF_CONST(-1.40899872779846), COEF_CONST(-0.121335685253143), |
1472 | COEF_CONST(-1.012196302413940), COEF_CONST(-1.059438824653626), | 1472 | COEF_CONST(0.732654273509979), COEF_CONST(-1.41325521469116), COEF_CONST(-0.052053272724152), |
1473 | COEF_CONST(-1.104129195213318), COEF_CONST(-1.146159529685974), | 1473 | COEF_CONST(0.698376238346100), COEF_CONST(-1.41410708427429), COEF_CONST( 0.017354607582092), |
1474 | COEF_CONST(-1.185428738594055), COEF_CONST(-1.221842169761658), | 1474 | COEF_CONST(0.662415742874146), COEF_CONST(-1.41155219078064), COEF_CONST( 0.086720645427704), |
1475 | COEF_CONST(-1.255311965942383), COEF_CONST(-1.285757660865784), | 1475 | COEF_CONST(0.624859452247620), COEF_CONST(-1.40559673309326), COEF_CONST( 0.155877828598022), |
1476 | COEF_CONST(-1.313105940818787), COEF_CONST(-1.337290763854981), | 1476 | COEF_CONST(0.585797846317291), COEF_CONST(-1.39625501632690), COEF_CONST( 0.224659323692322), |
1477 | COEF_CONST(-1.358253836631775), COEF_CONST(-1.375944852828980), | 1477 | COEF_CONST(0.545324981212616), COEF_CONST(-1.38354969024658), COEF_CONST( 0.292899727821350), |
1478 | COEF_CONST(-1.390321016311646), COEF_CONST(-1.401347875595093), | 1478 | COEF_CONST(0.503538429737091), COEF_CONST(-1.36751127243042), COEF_CONST( 0.360434412956238), |
1479 | COEF_CONST(-1.408998727798462), COEF_CONST(-1.413255214691162), | 1479 | COEF_CONST(0.460538715124130), COEF_CONST(-1.34817838668823), COEF_CONST( 0.427100926637650), |
1480 | COEF_CONST(-1.414107084274292), COEF_CONST(-1.411552190780640), | 1480 | COEF_CONST(0.416429549455643), COEF_CONST(-1.32559752464294), COEF_CONST( 0.492738455533981), |
1481 | COEF_CONST(-1.405596733093262), COEF_CONST(-1.396255016326904), | 1481 | COEF_CONST(0.371317148208618), COEF_CONST(-1.29982328414917), COEF_CONST( 0.557188928127289), |
1482 | COEF_CONST(-1.383549690246582), COEF_CONST(-1.367511272430420), | 1482 | COEF_CONST(0.325310230255127), COEF_CONST(-1.27091765403748), COEF_CONST( 0.620297133922577), |
1483 | COEF_CONST(-1.348178386688232), COEF_CONST(-1.325597524642944), | 1483 | COEF_CONST(0.278519600629807), COEF_CONST(-1.23895013332367), COEF_CONST( 0.681910991668701), |
1484 | COEF_CONST(-1.299823284149170), COEF_CONST(-1.270917654037476), | 1484 | COEF_CONST(0.231058135628700), COEF_CONST(-1.20399808883667), COEF_CONST( 0.741881847381592), |
1485 | COEF_CONST(-1.238950133323669), COEF_CONST(-1.203998088836670), | 1485 | COEF_CONST(0.183039888739586), COEF_CONST(-1.16614532470703), COEF_CONST( 0.800065577030182), |
1486 | COEF_CONST(-1.166145324707031), COEF_CONST(-1.125483393669128), | 1486 | COEF_CONST(0.134580686688423), COEF_CONST(-1.12548339366913), COEF_CONST( 0.856321990489960), |
1487 | COEF_CONST(-1.082109928131104), COEF_CONST(-1.036129593849182), | 1487 | COEF_CONST(0.085797272622585), COEF_CONST(-1.08210992813110), COEF_CONST( 0.910515367984772), |
1488 | COEF_CONST(-0.987653195858002), COEF_CONST(-0.936797380447388), | 1488 | COEF_CONST(0.036807164549828), COEF_CONST(-1.03612959384918), COEF_CONST( 0.962515234947205) |
1489 | COEF_CONST(-0.883684754371643), COEF_CONST(-0.828443288803101), | 1489 | }; |
1490 | COEF_CONST(-0.771206021308899), COEF_CONST(-0.712110757827759), | 1490 | |
1491 | COEF_CONST(-0.651300072669983), COEF_CONST(-0.588920354843140), | 1491 | /* table for post-processing within dct4_kernel() */ |
1492 | COEF_CONST(-0.525121808052063), COEF_CONST(-0.460058242082596), | 1492 | static const real_t dct4_post_tab[] ICONST_ATTR = { |
1493 | COEF_CONST(-0.393886327743530), COEF_CONST(-0.326765477657318), | 1493 | COEF_CONST(1 ), COEF_CONST(-1 ), COEF_CONST(-1 ), |
1494 | COEF_CONST(-0.258857429027557), COEF_CONST(-0.190325915813446), | 1494 | COEF_CONST(0.998795449733734), COEF_CONST(-1.04786312580109), COEF_CONST(-0.949727773666382), |
1495 | COEF_CONST(-0.121335685253143), COEF_CONST(-0.052053272724152), | 1495 | COEF_CONST(0.995184719562531), COEF_CONST(-1.09320187568665), COEF_CONST(-0.897167563438416), |
1496 | COEF_CONST(0.017354607582092), COEF_CONST(0.086720645427704), | 1496 | COEF_CONST(0.989176511764526), COEF_CONST(-1.13590693473816), COEF_CONST(-0.842446029186249), |
1497 | COEF_CONST(0.155877828598022), COEF_CONST(0.224659323692322), | 1497 | COEF_CONST(0.980785250663757), COEF_CONST(-1.17587554454803), COEF_CONST(-0.785694956779480), |
1498 | COEF_CONST(0.292899727821350), COEF_CONST(0.360434412956238), | 1498 | COEF_CONST(0.970031261444092), COEF_CONST(-1.21301150321960), COEF_CONST(-0.727051079273224), |
1499 | COEF_CONST(0.427100926637650), COEF_CONST(0.492738455533981), | 1499 | COEF_CONST(0.956940352916718), COEF_CONST(-1.24722504615784), COEF_CONST(-0.666655659675598), |
1500 | COEF_CONST(0.557188928127289), COEF_CONST(0.620297133922577), | 1500 | COEF_CONST(0.941544055938721), COEF_CONST(-1.27843391895294), COEF_CONST(-0.604654192924500), |
1501 | COEF_CONST(0.681910991668701), COEF_CONST(0.741881847381592), | 1501 | COEF_CONST(0.923879504203796), COEF_CONST(-1.30656290054321), COEF_CONST(-0.541196048259735), |
1502 | COEF_CONST(0.800065577030182), COEF_CONST(0.856321990489960), | 1502 | COEF_CONST(0.903989315032959), COEF_CONST(-1.33154439926148), COEF_CONST(-0.476434230804443), |
1503 | COEF_CONST(0.910515367984772), COEF_CONST(0.962515234947205), | 1503 | COEF_CONST(0.881921231746674), COEF_CONST(-1.35331797599793), COEF_CONST(-0.410524487495422), |
1504 | COEF_CONST(1.000000000000000), COEF_CONST(0.998795449733734), | 1504 | COEF_CONST(0.857728600502014), COEF_CONST(-1.37183141708374), COEF_CONST(-0.343625843524933), |
1505 | COEF_CONST(0.995184719562531), COEF_CONST(0.989176511764526), | 1505 | COEF_CONST(0.831469595432281), COEF_CONST(-1.38703989982605), COEF_CONST(-0.275899350643158), |
1506 | COEF_CONST(0.980785250663757), COEF_CONST(0.970031261444092), | 1506 | COEF_CONST(0.803207516670227), COEF_CONST(-1.39890682697296), COEF_CONST(-0.207508206367493), |
1507 | COEF_CONST(0.956940352916718), COEF_CONST(0.941544055938721), | 1507 | COEF_CONST(0.773010432720184), COEF_CONST(-1.40740370750427), COEF_CONST(-0.138617098331451), |
1508 | COEF_CONST(0.923879504203796), COEF_CONST(0.903989315032959), | 1508 | COEF_CONST(0.740951120853424), COEF_CONST(-1.41251015663147), COEF_CONST(-0.069392144680023), |
1509 | COEF_CONST(0.881921231746674), COEF_CONST(0.857728600502014), | 1509 | COEF_CONST(0.707106769084930), COEF_CONST( 0 ), COEF_CONST( 0 ), |
1510 | COEF_CONST(0.831469595432281), COEF_CONST(0.803207516670227), | 1510 | COEF_CONST(0.671558916568756), COEF_CONST(-1.41251015663147), COEF_CONST( 0.069392263889313), |
1511 | COEF_CONST(0.773010432720184), COEF_CONST(0.740951120853424), | 1511 | COEF_CONST(0.634393274784088), COEF_CONST(-1.40740370750427), COEF_CONST( 0.138617157936096), |
1512 | COEF_CONST(0.707106769084930), COEF_CONST(0.671558916568756), | 1512 | COEF_CONST(0.595699310302734), COEF_CONST(-1.39890682697296), COEF_CONST( 0.207508206367493), |
1513 | COEF_CONST(0.634393274784088), COEF_CONST(0.595699310302734), | 1513 | COEF_CONST(0.555570185184479), COEF_CONST(-1.38703989982605), COEF_CONST( 0.275899469852448), |
1514 | COEF_CONST(0.555570185184479), COEF_CONST(0.514102697372437), | 1514 | COEF_CONST(0.514102697372437), COEF_CONST(-1.37183141708374), COEF_CONST( 0.343625962734222), |
1515 | COEF_CONST(0.471396654844284), COEF_CONST(0.427555114030838), | 1515 | COEF_CONST(0.471396654844284), COEF_CONST(-1.35331797599793), COEF_CONST( 0.410524636507034), |
1516 | COEF_CONST(0.382683426141739), COEF_CONST(0.336889833211899), | 1516 | COEF_CONST(0.427555114030838), COEF_CONST(-1.33154439926148), COEF_CONST( 0.476434201002121), |
1517 | COEF_CONST(0.290284633636475), COEF_CONST(0.242980122566223), | 1517 | COEF_CONST(0.382683426141739), COEF_CONST(-1.30656290054321), COEF_CONST( 0.541196107864380), |
1518 | COEF_CONST(0.195090234279633), COEF_CONST(0.146730497479439), | 1518 | COEF_CONST(0.336889833211899), COEF_CONST(-1.27843391895294), COEF_CONST( 0.604654192924500), |
1519 | COEF_CONST(0.098017133772373), COEF_CONST(0.049067649990320), | 1519 | COEF_CONST(0.290284633636475), COEF_CONST(-1.24722504615784), COEF_CONST( 0.666655719280243), |
1520 | COEF_CONST(-1.000000000000000), COEF_CONST(-1.047863125801086), | 1520 | COEF_CONST(0.242980122566223), COEF_CONST(-1.21301138401031), COEF_CONST( 0.727051138877869), |
1521 | COEF_CONST(-1.093201875686646), COEF_CONST(-1.135906934738159), | 1521 | COEF_CONST(0.195090234279633), COEF_CONST(-1.17587554454803), COEF_CONST( 0.785695075988770), |
1522 | COEF_CONST(-1.175875544548035), COEF_CONST(-1.213011503219605), | 1522 | COEF_CONST(0.146730497479439), COEF_CONST(-1.13590705394745), COEF_CONST( 0.842446029186249), |
1523 | COEF_CONST(-1.247225046157837), COEF_CONST(-1.278433918952942), | 1523 | COEF_CONST(0.098017133772373), COEF_CONST(-1.09320187568665), COEF_CONST( 0.897167563438416), |
1524 | COEF_CONST(-1.306562900543213), COEF_CONST(-1.331544399261475), | 1524 | COEF_CONST(0.049067649990320), COEF_CONST(-1.04786312580109), COEF_CONST( 0.949727773666382) |
1525 | COEF_CONST(-1.353317975997925), COEF_CONST(-1.371831417083740), | ||
1526 | COEF_CONST(-1.387039899826050), COEF_CONST(-1.398906826972961), | ||
1527 | COEF_CONST(-1.407403707504273), COEF_CONST(-1.412510156631470), | ||
1528 | COEF_CONST(0), COEF_CONST(-1.412510156631470), | ||
1529 | COEF_CONST(-1.407403707504273), COEF_CONST(-1.398906826972961), | ||
1530 | COEF_CONST(-1.387039899826050), COEF_CONST(-1.371831417083740), | ||
1531 | COEF_CONST(-1.353317975997925), COEF_CONST(-1.331544399261475), | ||
1532 | COEF_CONST(-1.306562900543213), COEF_CONST(-1.278433918952942), | ||
1533 | COEF_CONST(-1.247225046157837), COEF_CONST(-1.213011384010315), | ||
1534 | COEF_CONST(-1.175875544548035), COEF_CONST(-1.135907053947449), | ||
1535 | COEF_CONST(-1.093201875686646), COEF_CONST(-1.047863125801086), | ||
1536 | COEF_CONST(-1.000000000000000), COEF_CONST(-0.949727773666382), | ||
1537 | COEF_CONST(-0.897167563438416), COEF_CONST(-0.842446029186249), | ||
1538 | COEF_CONST(-0.785694956779480), COEF_CONST(-0.727051079273224), | ||
1539 | COEF_CONST(-0.666655659675598), COEF_CONST(-0.604654192924500), | ||
1540 | COEF_CONST(-0.541196048259735), COEF_CONST(-0.476434230804443), | ||
1541 | COEF_CONST(-0.410524487495422), COEF_CONST(-0.343625843524933), | ||
1542 | COEF_CONST(-0.275899350643158), COEF_CONST(-0.207508206367493), | ||
1543 | COEF_CONST(-0.138617098331451), COEF_CONST(-0.069392144680023), | ||
1544 | COEF_CONST(0), COEF_CONST(0.069392263889313), | ||
1545 | COEF_CONST(0.138617157936096), COEF_CONST(0.207508206367493), | ||
1546 | COEF_CONST(0.275899469852448), COEF_CONST(0.343625962734222), | ||
1547 | COEF_CONST(0.410524636507034), COEF_CONST(0.476434201002121), | ||
1548 | COEF_CONST(0.541196107864380), COEF_CONST(0.604654192924500), | ||
1549 | COEF_CONST(0.666655719280243), COEF_CONST(0.727051138877869), | ||
1550 | COEF_CONST(0.785695075988770), COEF_CONST(0.842446029186249), | ||
1551 | COEF_CONST(0.897167563438416), COEF_CONST(0.949727773666382) | ||
1552 | }; | 1525 | }; |
1553 | 1526 | ||
1554 | // Table adapted from codeclib to fit into IRAM | 1527 | // Table adapted from codeclib to fit into IRAM |
@@ -1556,59 +1529,52 @@ const uint32_t dct4_revtab[32] ICONST_ATTR = { | |||
1556 | 0, 24, 12, 22, 6, 30, 11, 19, 3, 27, 15, 21, 5, 29, 9, 17, | 1529 | 0, 24, 12, 22, 6, 30, 11, 19, 3, 27, 15, 21, 5, 29, 9, 17, |
1557 | 1, 25, 13, 23, 7, 31, 10, 18, 2, 26, 14, 20, 4, 28, 8, 16}; | 1530 | 1, 25, 13, 23, 7, 31, 10, 18, 2, 26, 14, 20, 4, 28, 8, 16}; |
1558 | 1531 | ||
1532 | // Bufferfly used in dct4_kernel()'s pre- and post-processing | ||
1533 | #define BUTTERFLY_DCT4(out1, out2, real_part, imag_part, tab, tabidx) \ | ||
1534 | x_re = real_part; \ | ||
1535 | x_im = imag_part; \ | ||
1536 | tmp = MUL_C(x_re + x_im, tab[tabidx++]); \ | ||
1537 | out1 = MUL_C(x_re , tab[tabidx++]) + tmp; \ | ||
1538 | out2 = MUL_C(x_im , tab[tabidx++]) + tmp; \ | ||
1539 | |||
1559 | /* size 64 only! */ | 1540 | /* size 64 only! */ |
1560 | void dct4_kernel(real_t *real, real_t *imag) | 1541 | void dct4_kernel(real_t *real, real_t *imag) |
1561 | { | 1542 | { |
1562 | uint32_t i, idx; | 1543 | uint32_t i, idx, tabidx; |
1563 | real_t x_re, x_im, tmp; | 1544 | real_t x_re, x_im, tmp; |
1564 | FFTComplex xc[32]; /* used for calling codeclib's fft implementation */ | 1545 | FFTComplex xc[32]; /* used for calling codeclib's fft implementation */ |
1565 | 1546 | ||
1566 | /* Step 2: modulate and pre-rotate for codeclib's fft implementation */ | 1547 | /* Step 2: modulate and pre-rotate for codeclib's fft implementation */ |
1567 | // 3*32=96 multiplications | 1548 | // 3*32=96 multiplications |
1568 | // 3*32=96 additions | 1549 | // 3*32=96 additions |
1569 | for (i = 0; i < 32; i++) | 1550 | for (i = 0, tabidx = 0; i < 32; i++) |
1570 | { | 1551 | { |
1571 | idx = dct4_revtab[i]; | 1552 | idx = dct4_revtab[i]; |
1572 | x_re = real[i]; | 1553 | BUTTERFLY_DCT4(xc[idx].im, xc[idx].re, real[i], imag[i], dct4_pre_tab, tabidx); |
1573 | x_im = imag[i]; | ||
1574 | tmp = MUL_C(x_re + x_im, dct4_64_tab[i ]); | ||
1575 | xc[idx].re = MUL_C(x_im , dct4_64_tab[i + 64]) + tmp; | ||
1576 | xc[idx].im = MUL_C(x_re , dct4_64_tab[i + 32]) + tmp; | ||
1577 | } | 1554 | } |
1578 | 1555 | ||
1579 | /* Step 3: FFT (codeclib's implementation) */ | 1556 | /* Step 3: FFT (codeclib's implementation) */ |
1580 | ff_fft_calc_c(5, xc); | 1557 | ff_fft_calc_c(5, xc); |
1581 | 1558 | ||
1582 | /* Step 4: modulate + reordering */ | 1559 | /* Step 4: modulate + reordering */ |
1583 | // 3*31+2=95 multiplications | 1560 | // 3*30+2=92 multiplications |
1584 | // 3*31+2=95 additions | 1561 | // 3*30+2=92 additions |
1585 | x_re = xc[0].re; | 1562 | imag[0] = xc[0].im; |
1586 | x_im = xc[0].im; | 1563 | real[0] = xc[0].re; |
1587 | tmp = MUL_C(x_re + x_im, dct4_64_tab[0 + 3*32]); | 1564 | for (i = 1, tabidx = 3*1; i < 16; i++) |
1588 | real[0] = MUL_C(x_im , dct4_64_tab[0 + 5*32]) + tmp; | ||
1589 | imag[0] = MUL_C(x_re , dct4_64_tab[0 + 4*32]) + tmp; | ||
1590 | for (i = 1; i < 16; i++) | ||
1591 | { | 1565 | { |
1592 | idx = 32-i; | 1566 | idx = 32-i; |
1593 | x_re = xc[idx].re; | 1567 | BUTTERFLY_DCT4(imag[i], real[i], xc[idx].re, xc[idx].im, dct4_post_tab, tabidx); |
1594 | x_im = xc[idx].im; | ||
1595 | tmp = MUL_C(x_re + x_im, dct4_64_tab[i + 3*32]); | ||
1596 | real[i] = MUL_C(x_im , dct4_64_tab[i + 5*32]) + tmp; | ||
1597 | imag[i] = MUL_C(x_re , dct4_64_tab[i + 4*32]) + tmp; | ||
1598 | } | 1568 | } |
1599 | // i = 16, idx = 16 = reorder_tab[16]; | 1569 | // i = 16, idx = 16 = reorder_tab[16]; |
1600 | x_re = xc[16].re; | 1570 | x_re = xc[16].re; |
1601 | x_im = xc[16].im; | 1571 | x_im = xc[16].im; |
1602 | imag[16] = MUL_C(x_im - x_re, dct4_64_tab[16 + 3*32]); | 1572 | imag[16] = MUL_C(x_im - x_re, COEF_CONST(0.707106769084930)); |
1603 | real[16] = MUL_C(x_re + x_im, dct4_64_tab[16 + 3*32]); | 1573 | real[16] = MUL_C(x_re + x_im, COEF_CONST(0.707106769084930)); |
1604 | for (i = 17; i < 32; i++) | 1574 | for (i = 17, tabidx = 3*17; i < 32; i++) |
1605 | { | 1575 | { |
1606 | idx = 32-i; | 1576 | idx = 32-i; |
1607 | x_re = xc[idx].re; | 1577 | BUTTERFLY_DCT4(imag[i], real[i], xc[idx].re, xc[idx].im, dct4_post_tab, tabidx); |
1608 | x_im = xc[idx].im; | ||
1609 | tmp = MUL_C(x_re + x_im, dct4_64_tab[i + 3*32]); | ||
1610 | real[i] = MUL_C(x_im , dct4_64_tab[i + 5*32]) + tmp; | ||
1611 | imag[i] = MUL_C(x_re , dct4_64_tab[i + 4*32]) + tmp; | ||
1612 | } | 1578 | } |
1613 | } | 1579 | } |
1614 | 1580 | ||