mpega.library 2.4 [080]
=======================
A 68080 build of Sigbjørn Skjæret's mpega.library clone (v1.7), which
decodes MPEG audio (layers I, II and III) with libmad 0.15.1b. Programs
that use mpega.library (players, AmiPlexAmp, ...) work unchanged: just
replace the library.
What is different
-----------------
The 2004 68k binary of the clone uses libmad's fastest but least
accurate fixed-point mode. This build uses libmad's full-accuracy mode
(64-bit products) and makes it fast on the 68080:
- polyphase synthesis window in assembler, keeping only the high
longword of each 64-bit MULS.L product;
- dct32 compiled to assembler by a dedicated generator, with rounded
Q31 multiplies (bit exact with the C code);
- long-block IMDCT windowing fused with the overlap-add;
- alias reduction in Q31, skipping the all-zero upper lines;
- Huffman decoding with BFEXTU straight from the bitstream;
- dithered 16-bit output in assembler (bit exact with the C code);
- code laid out for the 16 KB instruction cache of the 68080.
Measured on a Vampire V4 (68080 at 99 MHz), 254 kbit/s VBR MP3, 44.1 kHz
stereo, CPU time in % of real time; quality = signal to error ratio
against a floating-point reference decoder (ffmpeg):
dithered rounded quality
previous 68k binary (040) 25.9 % 23.6 % 49.4 dB (errors up to 124 LSB)
this 68080 build 21.2 % 19.6 % 95.8 dB (errors up to 1 LSB)
Also tested with 128 kbit/s CBR, 22 kHz mono and 16 kHz MPEG-2 files,
and a very loud 191 kbit/s track (102.5 dB).
The FPU is not used: on the 68080 the integer unit is faster for this
work (measured), and the output keeps full 16-bit accuracy.
Installation
------------
Copy mpega.library to LIBS: (keep a copy of the old one), then reboot or
run "Avail FLUSH" so that the new one is loaded.
"Version mpega.library FULL" shows:
mpega.library 2.4 (22.10.2026)
[080] mpega.library clone v1.7 by Sigbjørn (CISC) Skjæret, 68080 version
by Renaud Schweingruber, using libmad 0.15.1b - Copyright (C) 2000-2004
Underbit Technologies, Inc.
The library uses 68020 instructions (64-bit MULS.L, BFEXTU) and is
tuned for the 68080. It is not meant for the 68060 (64-bit MULS.L is
emulated there).
License and source code
-----------------------
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or (at your
option) any later version. It is distributed WITHOUT ANY WARRANTY; see
the file COPYING for details.
libmad - MPEG audio decoder library
Copyright (C) 2000-2004 Underbit Technologies, Inc.
mpega.library clone Copyright (C) Sigbjørn Skjæret and contributors.
68080 version Copyright (C) 2026 Renaud Schweingruber.
Written offer of source code (GPL version 2, section 3b):
For at least three years from the date of this release, I will give any
third party, on request and for no more than the cost of physically
performing the source distribution, a complete machine-readable copy of
the corresponding source code of this mpega.library, including the
scripts used to build it. Write to:
Renaud Schweingruber <renaud.schweingruber@protonmail.com>
Credits
-------
Robert Leslie / Underbit Technologies for libmad, Sigbjørn Skjæret,
Jarmo Laakkonen and Stephan Rupprecht for the mpega.library clone,
Stéphane Tavenard for the original mpega.library interface.
|