Short: MPEG audio player for Delfina DSP Author: Smack/Infect! (Michael Henke) Type: mus/play Architecture: m68k-amigaos $VER: DelfMPEG 1.0 (Sat 17-May-2003) #features -plays MPEG audio files with almost no CPU load (Delfina's DSP56002 does all the decoding and playback) -supports MPEG-1 layer II and III -NEW: can write the decoded data to a file -ARexx interface (full 'remote control' capability) -multi-stage buffering system (for smooth playback while loading from disk) -free software (full source code included, of course) #required -CPU 68020+ -AmigaOS V37+ -Delfina DSP board -asyncio.library V39+ -developed on A1200 - OS3.1/68030+882@40MHz/16MBFastRAM/Delfina1200DSP -tested on various machines with Delfina 1200, Lite, Plus or Flipper #recommended -reqtools.library V38+ -latest version of delfina.library (see also 'known problems' section) -some MPEG audio files :) #changes since previous release -fixed interference with serial I/O (interrupt timing problem) -recognition of the new Delfina Flipper board (shown in VERBOSE mode) -OUTFILEINTEL option added (write decoded data to a file - Intel byteorder) #how to use DelfMPEG is a shell-only program. The following options can be used: FILES ......... -one or more filenames. (MPEG files or playlists) -if omitted a reqtools file requester appears. -if a file is not recognized as MPEG-1 audio then it is interpreted as a playlist file. playlists are simple text files that can be generated by popular player programs, such as AMPlifier, Winamp (*.m3u) and others. -playlist format: one file name per line, comment lines beginning with a '#' character are ignored. OUTFILE/-o -write decoded data to this file (no playback). -the output file will be overwritten without warning! -output file format: raw PCM (no AIFF or WAV header), 16 bits per sample (big endian), number of channels (1=mono or 2=stereo) and sampling frequency (32000, 44100 or 48000 Hz) are taken from the MPEG input file. -note: you can use DelfSF to play the raw file. (Aminet:mus/play/DelfSF.lha) OUTFILEINTEL/-oi -same as OUTFILE, except that the output data is written in Intel byteorder (little endian). -note: you can use DelfSF to play the raw file. (Aminet:mus/play/DelfSF.lha) AREXX ......... -activate ARexx mode. -please read the file 'arexx.txt' for details. -there are some example scripts in the 'rexx' sub-directory VERBOSE/-v .... -output more information. NOPLAY/-n ..... -don't play but just output some information. -this works also without a Delfina board. SHOWTAG/-t .... -display ID3v1 tag before playing. -some extra information that can be appended to MPEG audio files, such as title, artist etc. MONO/-m ....... -decode only the left channel of stereo files. -WARNING: degrades playback quality! -this option can be used to reduce DSP load on Delfina Lite boards which have a slower DSP (40 MHz instead of 73 MHz) DACRATE/-d (default: 0) -set Delfina's codec rate to a fixed value (in kHz). -WARNING: can degrade playback quality! -this option can be used to reduce DSP load on Delfina Lite boards which have a slower DSP (40 MHz instead of 73 MHz) -the default value of 0 (zero) means "best quality" -the given value is automatically rounded to the nearest available Delfina rate: 16, 27, 32 or 48 kHz. (for Delfina 1200 and Plus: 12, 24, 36 or 48 kHz) VOLUME/-vol (default: 100) -set the playback volume (in per cent, range 0...200). -WARNING: can degrade playback quality! if the volume is boosted (101...200) there can distortions caused by output clipping. FRAMEBUF/-f (default: 100) -set the number of read-ahead frame buffers. (does not influence performance) ASYNCBUF/-a (default: 128) -set the size of the AsyncIO buffer (in Kbytes). (large IO-buffers = faster reading from disk) FFSKIP/-ff (default: 10) -set the number of frames that are skipped during fast forward mode, i.e. when Ctrl-F is pressed NOFASTL/-nl NOFASTP/-np ... -the fast internal DSP memory is NOT used (L-data/Program) -only useful for benchmarks or debugging NOTIMER/-nt ... -suppress output of the position timer during playback. (recommended for playing background music while you are using other programs) STRICT/-s ..... -abort playback when an error in input file is detected. (normally DelfMPEG tries to continue playback by skipping the error in the file) During playback these keys can be used: Ctrl-F fast forward Ctrl-E pause/continue Ctrl-C stop current file, start next file Ctrl-D quit program #known problems -DelfMPEG only recognizes MPEG-1 audio files. not supported: MPEG-2 or mixed audio/video files. -some mp3 files are not played correctly! what's wrong with DelfMPEG? 1) DSP load approaches or exceeds the 100% limit on slow Delfinas. symptom: audible "drop-outs", DECODER_BUSY warning in VERBOSE mode. actions: use MONO or DACRATE options to reduce DSP load (and quality) or overclock your Delfina Lite (by hardware modification or software hack "DelfTweak") or buy a new, faster Delfina. 2) in VERBOSE mode an "unexpected EOF" error is reported for some files. symptom: just the error message. actions: this seems to be caused by some (bad) MPEG audio encoders that truncate the last frame in mp3 files. use LAME instead, it's the best mp3 encoder around, IMO. -DelfMPEG causes deadlocks/crashes. 1) delfina.library 4.14 - the "fake crash" bug symptom: soon after DelfMPEG started playing the "Delfina crashed" requester appears; DelfLoad display jumps to 100%. actions: wait for Petsoff to release a fixed delfina.library. ignore the "Delfina crashed" requester (that's right, do not reply it while DelfMPEG is playing). or you could use an older version of delfina.library (4.13 or lower) - not recommended, there seem to be other problems. 2) delfina.library 4.14 and lower - the "AHI killer" bug symptom: AHI and DelfAIFF crash if used after DelfMPEG. the system freezes and must be rebooted. actions: wait for Petsoff to release a fixed delfina.library. use the NOFASTP option of DelfMPEG, it avoids the bug but it also slows down the decoder! or use the workaround: quit DelfMPEG and all other Delfina programs, use "avail flush" to remove delfina.library from memory and then start your AHI programs. 3) delfina.library beta versions > 4.14 - the "sudden freeze" problem symptom: while playing MPEG files the system might suddenly "freeze" (playback stops; CPU load jumps to 100%, thus blocking any running applications) actions: the reason for this problem is not known. it could be a bug in delfina.library, at least there exists an unofficial patched version of the library that seems to work better. #acknowledgements DelfMPEG uses ideas/code from: -MPEG Audio Layer II decoder by Fredrik Noring and Tomas Berndtsson (an mp2 player for Atari Falcon, DSP56K code) -amp11 by Niklas Beisert (clean and fast C++ code) -FalcAMP by Denis "STGhost" Huguet and David "Splash" Carrere (an mp3 player for Atari Falcon, DSP56K code) -reference code by MPEG Software Simulation Group ("the original" C code) #author mailto: smack42@web.de DelfMPEG - MPEG audio player for Delfina DSP Copyright (C) 1999-2003 Michael Henke 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. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA