I am currently generating a spectrogram of an audio file - that is, I decode an MP3 file using IMFSourceReader as seen here to get raw PCM data, then do
a short-time fourier transform to separate the component frequencies.

On an i7 ultrabook, it takes 15 seconds to decode the MP3 file, which I find a little too long. Programs like Audacity can do it in 10 seconds, WavePad Sound Editor can do it in 6 seconds. Ideally, I'd like to be able to decode an MP3 file on a ARM ship
(such as Surface's Tegra 3) in 10 seconds. Is there a faster way to decode MP3 files in WinRT apps?

Furthermore, I am not 100% familiar with the MP3 format, but my understanding is that part of the compression is achieved by throwing out frequencies outside the human hearing range, so I am assuming that MP3 files store data in the time-frequency domain
rather than the time domain. Is my assumption correct and if so, is there a way to get that information directly (rather than decoding to PCM, then performing a short-time fourier transform to get the time-frequency
domain again)?

Thank you for your time.