This is the bug/patch tracker for Rockbox. Click here for more information.
Quick links: Bugs · Patches · Rockbox frontpage
FS#9160 - Use Tremor IMDCT for WMA
Attached to Project:
Rockbox
Opened by MichaelGiacomelli (saratoga) - Sunday, 06 July 2008, 20:50 GMT+2
Last edited by MichaelGiacomelli (saratoga) - Friday, 18 July 2008, 03:24 GMT+2
Opened by MichaelGiacomelli (saratoga) - Sunday, 06 July 2008, 20:50 GMT+2
Last edited by MichaelGiacomelli (saratoga) - Friday, 18 July 2008, 03:24 GMT+2
|
DetailsThe Tremor IMDCT is much, much faster then the WMA (and almost certainly the FAAD) one. This patch copies the Tremor IMDCT over to libwma with minor changes to remove it's connection to Vorbis.
The resulting decoder sounds correct on the Sim and ARM, while being 4MHz faster on PP5024. I have not tested it on Coldfire, but expect some speedup and hopefully no reduction in quality. |
This task depends upon
Closed by MichaelGiacomelli (saratoga)
Friday, 18 July 2008, 03:24 GMT+2
Reason for closing: Accepted
Friday, 18 July 2008, 03:24 GMT+2
Reason for closing: Accepted
<PaulJam> saratoga: without the patch: 249,25% and with the patch: 298,75%
<PaulJam> saratoga: 128kbps (it is one of the windows example music songs)
Also, updated patch to not produce a warning. Output should be identical. If no one finds any glitches, I will try to clean this up and commit it sometime this week or next, then look into adding it to AAC.
i just used the "write WAV" functionality of the test_codec plugin and did an ABX test using Foobar2000 to compare the output with and without the patch.
And the volume of the output with the patch applied is noticeably lower in direct comparison to the output without the patch.
Gives me more or less identical output (<-140dB RMS error) meaning that resolution remains well above 16 bits. We probably lost a bit of accuracy since the fixed point format in Tremor and libwma are mismatched, but I don't see much sense in rewriting the IMDCT in ARM ASM just to save some accuracy above the 16th bit.
However, this does not rule out the possibility of clipping on loud samples, so any testing is appreciated.
Edit: Sorry, patch had some other junk in it related to Tremor. Should be fixed now.
Regarding choice of algorithm, I've actually seen claims that both methods are fastest, so I tend to think there is not a huge difference.
Removed some unneeded fixed point functions left over from the ffmpeg imdct.
a) the speed increase is significant
b) it seems you already measured a very low RMS error
c) you won't get much feedback on possible errors here
Good job!