This is the bug/patch tracker for Rockbox. Click here for more information.
Quick links: Bugs · Patches · Rockbox frontpage
FS#11461 - libfaad aac-he speed optimization
Attached to Project:
Rockbox
Opened by Andree Buschmann (Buschel) - Tuesday, 06 July 2010, 22:05 GMT+2
Last edited by Andree Buschmann (Buschel) - Friday, 09 July 2010, 20:50 GMT+2
Opened by Andree Buschmann (Buschel) - Tuesday, 06 July 2010, 22:05 GMT+2
Last edited by Andree Buschmann (Buschel) - Friday, 09 July 2010, 20:50 GMT+2
|
DetailsThis patch adds some optimization to the sbr filter that is used by aac-he files. Several loops were unrolled in the analysis and synthesis filters as well as several variables and tables were moved to IRAM.
Speed on PP5022 with 64kaache.m4a: 115.5 MHz (svn 130 MHz) |
This task depends upon
Closed by Andree Buschmann (Buschel)
Friday, 09 July 2010, 20:50 GMT+2
Reason for closing: Accepted
Additional comments about closing: Submitted v15 with r27358/r27359
Friday, 09 July 2010, 20:50 GMT+2
Reason for closing: Accepted
Additional comments about closing: Submitted v15 with r27358/r27359
Speed on PP5022 with 64kaache.m4a: 107.4 MHz (svn 115.5 MHz)
Speed on PP5022 with 64kaache.m4a: 106.5 MHz (svn 130 MHz)
- changes dct to "in-place".
- several arrays could be removed based on the "in-place" dct
- shifts were moved to the final output to reduce amount of shifts
Speed on PP5022 with 64kaache.m4a: 106.1 MHz (svn 130 MHz)
Speed on PP5022 with 64kaache.m4a: 106.0 MHz (svn 130 MHz)
120.07 (SVN) -> 115.7 MHz (v11).
Its surprising that PP is faster. The improved multiplier, fast memory, and 64 bit wide L1 bus usually means that filterbanks are much faster on AMSv2. Mp3 for instance is something like 25% faster vs. PP.
hf_generation -> 20.0 MHz
hf_adjustment -> 14.35 MHz
Also, I made a quick sketch of how the SBR stuff fits into LC because the libfaad code is so confusing:
reconstruct_channel_pair->
ifilter_bank ->
ff_imdct_calc
sbrDecodeInit
sbrDecodeCoupleFrame ->
sbr_process_channel ->
sbr_qmf_analysis_32
hf_generation (20.0 MHz) ->
calc_prediction_coef
hf_adjustment (14.35 MHz) ->
estimate_current_envelope
calculate_gain
hf_assembly
sbr_qmf_synthesis_32
Speed on PP5022 with 64kaache.m4a: 104.8 MHz (svn 130 MHz)
Speed on MCF5249 with 64kaache.m4a: 242 MHz (svn 373 MHz)
Retest on MCF5250 still missing.
Coldfire MCF5250 (iAudio X5): SVN 33.7 %rt (368.5 MHz) +v15 60.66 %rt (204.72 MHz)
PP5002 (iPod 2nd Gen): SVN 43.44 %rt (184.16 MHz) +v15 52.16 %rt (153.37 MHz)
PP5020 (iRiver H10 6GB): SVN 61.27 %rt (130.56 MHz) +v15 70.28 %rt ((113.83 MHz)
Relative speedups
MCF5250 80%
PP5002 20%
PP5020 15%