VOGONS


Lowest CPU to play MP3s?

Topic actions

Reply 40 of 49, by Standard Def Steve

User metadata
Rank Oldbie
Rank
Oldbie

All this talk about using integer based decoding to make MP3s playable on 486/early Pentium really makes you appreciate the P6 FPU, eh?

Playing a 320K MP3 with foobar2k on a P2-300 only uses 1-2% of the CPU (Win2K SP4). There's no perceptible slowdown during playback, and you couldn't make it skip if you tried! I guess the more robust DMA of the later chipsets are probably helping, too.

94 MHz NEC VR4300 | SGI Reality CoPro | 8MB RDRAM | Each game gets its own SSD - nooice!

Reply 41 of 49, by Scali

User metadata
Rank l33t
Rank
l33t
Standard Def Steve wrote:

All this talk about using integer based decoding to make MP3s playable on 486/early Pentium really makes you appreciate the P6 FPU, eh?

Or not... 😀
Apparently because FPUs have become so efficient in recent years, it is difficult for people to get their heads around the idea that an FPU was not necessarily the fastest way to get something done in the old days.
An FPU is good at working with floating point numbers. But these tend to be relatively large numbers, so they require quite a bit of bandwidth and 'oomph'. The smallest possible data any x87 FPU can handle is 32-bit (single-precision IEEE754). Even on machines that have an 8-bit or 16-bit bus. How is that ever going to be fast?
Not to mention that the IEEE754 standard also states strict rounding and renormalization rules after every operation. This was quite processor-intensive back in the day.

So in the old days, you used an FPU only when you absolutely had to. Whenever you could simplify/approximate the mathematics to integer logic, preferably with less precision, it was a huge win.
Quake is the turning point there, in terms of games. Before Quake, hardly any 3D game ever even bothered to make use of the FPU. Quake made it painfully obvious why: it dies on anything less than a Pentium.
FPUs were meant for high-precision scientific calculations, not for anything realtime.

It would be interesting to see what you could do with an mp3 decoder that is entirely tuned for integer performance, possibly even restricted to 16-bit maths only (I optimized a JPG decoder for that once, to run on a Canon PowerShot camera, which contained an 80186-compatible CPU running ROMDOS), and possibly taking some shortcuts, like reducing sample rate and decoding in mono.

I'm pretty sure even a 386 should be able to play *some* kind of mp3, even if it would only be 64kbit mono at 16 kHz or whatever. But it would be quite a challenging project to get there.

http://scalibq.wordpress.com/just-keeping-it- … ro-programming/

Reply 42 of 49, by RiP

User metadata
Rank Member
Rank
Member
zyga64 wrote:
RiP wrote:

I'm sure Cyrix 5x86 can play it much better if I could find one some day.

Yes, with Cyrix 5x86/100 with optimization features enabled (as in feipoa thread) I was able to play MP3s in full quality via MPXPlay. CPU usage was near 100%, though.

Which chipsets support the Cyrix's optimization features?

matze79 wrote:
RiP wrote:
xjas wrote:

But playing WAV still takes 50-60% of the CPU. Anyway to stop Windows from mixing or resampling? 😕

Also possible to tweak the system to work faster?

What Soundcard do you use ?

Creative Sound Blaster 16 ISA

Scali wrote:
WinAMP probably has one of the best integer-optimized MP3 decoders available for x86. I suppose as with most things, it depends […]
Show full quote

WinAMP probably has one of the best integer-optimized MP3 decoders available for x86.
I suppose as with most things, it depends on what you want to focus on: performance or quality?
Back in the day I switched from WinAMP to Sonique on my Pentium 133. It took way more CPU (probably because it used floating point and generally better accuracy/signal reconstruction), but the sound quality was significantly better.

I guess the real question is: how far could you optimize an MP3 integer decoder for x86? WinAMP is fast, but probably did not go 'all out' in terms of performance, but just a decent balance between quality and performance. I wonder if you could squeeze more performance out of it by using some clever approximations/tables etc, and hand-optimzing the code in assembly for a specific CPU architecture.
I think it is an interesting subject to research at some point.

At any rate, the floating point MP3 decoders will work quite well on a Pentium, but will be very poor on 486, because the Pentium FPU is just way faster. With integer decoders, the difference is much smaller.

Maybe but Winamp is still far better if it can play at 44KHz high resolution stereo.
I was heard that MP3 playback doesn't require FPU.

bakemono wrote:

This player can handle 160kbps 44KHz stereo on a 486-100 (maybe even a DX2-80) http://www.vgmpf.com/Wiki/index.php/Digital_Sound_System

The Amiga OS "amplifier" can play 64kbps 22KHz downmixed to 11KHz on a 50MHz 68030 with 68882 FPU 😉

I played 128k MP3 on Amiga 2000 +GVP 68040 40MHz without FPU (OS4.1) successfully, not sure about the output though.

xjas wrote:

Even a 286 or 386 should have no issue playing 44kHz WAVs if it can read them from disk & DMA them to the sound card fast enough. Playing a WAV file is not CPU intensive if you have DMA.

It's when you get into mixing or resampling that it starts bogging down the CPU, and if you're using something like Media Player in Windows 9x, it's doing that. Try from the DOS command line - it should be no sweat.

Are you sure? 😕

Reply 43 of 49, by xjas

User metadata
Rank l33t
Rank
l33t
RiP wrote:
xjas wrote:

Even a 286 or 386 should have no issue playing 44kHz WAVs if it can read them from disk & DMA them to the sound card fast enough. Playing a WAV file is not CPU intensive if you have DMA.

It's when you get into mixing or resampling that it starts bogging down the CPU, and if you're using something like Media Player in Windows 9x, it's doing that. Try from the DOS command line - it should be no sweat.

Are you sure? 😕

Yes - from the DOS command line, using a player that does hardware DMA transfer to the soundcard (which nearly all of them did.) In Windows, which mixes audio streams together and has to match sample rates, it's a different story.

BTW I used to carry an already-well-out-of-date Thinkpad 365ED (Cyrix 5x86/100) around during my undergrad years, and I remember playing lots of MP3s in Winamp on that thing, while multitasking and getting other stuff done. The old builds were definitely pretty well optimized.

twitch.tv/oldskooljay - playing the obscure, forgotten & weird - most Tuesdays & Thursdays @ 6:30 PM PDT. Bonus streams elsewhen!

Reply 44 of 49, by RiP

User metadata
Rank Member
Rank
Member

Well, I tried Waveout and it's about 10% faster than DirectSound.
Post your 486 Winamp benchmarks

I also replaced SB16 PNP ISA with AWE64D PCI and now I can even play 320K MP3 at 90% 😎
It seems PCI works about 15-20% faster for me.

Reply 46 of 49, by ShovelKnight

User metadata
Rank Oldbie
Rank
Oldbie
Standard Def Steve wrote:

All this talk about using integer based decoding to make MP3s playable on 486/early Pentium really makes you appreciate the P6 FPU, eh?

Playing a 320K MP3 with foobar2k on a P2-300 only uses 1-2% of the CPU (Win2K SP4). There's no perceptible slowdown during playback, and you couldn't make it skip if you tried! I guess the more robust DMA of the later chipsets are probably helping, too.

I remember playing MP3s in Winamp on my AMD K5-PR133 with an ESS sound card without any difficulties whatsoever. Don't know about CPU utilisation, but I could listen to my music and use office apps at the same time without apparent slowdowns.

But I mostly listened to 128kbps stuff at the time, I only switched to higher bitrates later when I already upgraded my CPU to Pentium-MMX 233 MHz and sold my V.32bis (14.4kbps) modem in favour of a new V92bis (56kbps) modem which made downloading high bitrate music from Napster and Kazaa a lot more pleasant 🤣 My ISP at the time offered free dialup from 11PM until 6AM and I used this free time to download a lot of music and even some MPEG1-encoded movies in 320x240. Ah, those were the days...

Reply 47 of 49, by Baoran

User metadata
Rank l33t
Rank
l33t

I remember starting playing mp3 music after 1995 which would be pentium 90Mhz era for me. Not sure when mp3 files first appeared, but that makes me think that faster 486 cpus should be able to play them as well as my pentium did back then.

Reply 48 of 49, by derSammler

User metadata
Rank l33t
Rank
l33t

Everthing with the speed of a Pentium 75 is able to play 128 kbps MP3s at full quality. If you half the quality of the decoder, even a DX4-100 will do. This is for Windows. In pure DOS, a DX4-100 can even do full quality decoding using e.g. QuickView.

Reply 49 of 49, by Cyberdyne

User metadata
Rank Oldbie
Rank
Oldbie

I was using Windows 3.11 and Winplay 3 and allso Windows 95 and Winamp and i can tell you for a fact a 486 DX2-66 will not play a 128kbs in full quality, but you can tweak it to play, but a DX4-100 will play, and Pentiums have no problem. I can not comment on other bitrates, because that was the late 90s early 2k audible (Napster) standard. And i was using those machines back then.

I am aroused about any X86 motherboard that has full functional ISA slot. I think i have problem. Not really into that original (Turbo) XT,286,386 and CGA/EGA stuff. So just a DOS nut.
PS. If I upload RAR, it is a 16-bit DOS RAR Version 2.50.