home *** CD-ROM | disk | FTP | other *** search
-
- mpeg3play version 0.9.3
- February 2, 1997
-
-
- Home page: The Solaris Helpers Page at
- http://home1.swipnet.se/%7Ew-10694/helpers.html
- Author: Johan.Hagman@mailbox.swipnet.se
-
-
- mpeg3play is an MPEG audio layer 2 and layer 3 audio decoder/player for
- Solaris 2.4 or later versions, based on public ISO/MPEG audio decoder
- source code.
-
- Version 0.9 was the initial release of the player, but it can also be
- compiled for Linux (since version 0.9.1) and HPUX (since version 0.9.3).
-
- The original software is a slow but portable MPEG to AIFF decoder,
- impossible to use as a real-time player. I have optimized the source
- code to the point where it becomes possible to use the decoder for
- real-time playback, and have modified it for output to the Solaris
- audio device.
-
- The -h (help) command line option shows the program usage:
-
- % mpeg3play -h
- +---------------------------------------+
- | mpeg3play version 0.9.3, 2-Feb-97 |
- +---------------------------------------+
- This is an MPEG audio layer 2 and layer 3 decoder/player
- based on public ISO/MPEG audio decoder source code. Solaris
- port and optimizations by Johan.Hagman@mailbox.swipnet.se.
-
- Copyright (C) 1996, 1997 by Johan Hagman.
- This program is free software.
-
- usage: mpeg3play [-v] [-h] [-f] [-o outfile.aiff] filename
- -v enable verbose mode
- -h display program help information
- -f fork off new player and return
- -o outfile write an AIFF output PCM sound file
- filename bit stream of encoded audio ("-" means stdin)
-
- ----------------------------------------------------------------------
-
- ABOUT THE SOURCE CODE
-
- mpeg3play was developed on Solaris 2.4 with Sun SPARCompiler C 4.0.
-
- Note that this is the portable C version of mpeg3play. The Solaris/SPARC
- binary available from the Solaris Helpers page includes some assembly
- optimizations in addition to the C optimizations in this source.
-
- A number of customization flags can be set in the makefile:
-
- FSINGLE Use single precision math.
- OPTIMIZE Select optimized C routines. If this is not defined,
- the original, slow code is selected.
- BUILTIN_TABLES Build lookup tables into the binary. Must always be
- defined with this source distribution.
- DETECT_CLIP Check and correct clipped samples. Slows down the player
- somewhat, but sounds better with (too) loud audio data.
- ASM_OPTIMIZE Select optimized assembly functions. As shipped, the
- following functions are expected to be optimized in
- some external file:
- SubBandSynthesis()
- II_dequantize_sample()
- inv_mdct()
- INT_MATH Select integer math routines. As shipped, an optimized
- integer math version of the function SubBandSynthesis()
- is expected to be be defined in some external file.
-
- This is a runtime profile that lists the most important functions to
- optimize for playback of layer 3 audio:
-
- % cumulative self self total
- time seconds seconds calls ms/call ms/call name
- 49.8 2.61 2.61 20736 0.13 0.13 SubBandSynthesis [3]
- 8.6 3.66 0.45 1152 0.39 0.39 III_dequantize_sample [6]
- 4.4 4.13 0.23 1152 0.20 0.44 III_hufman_decode [5]
- 3.2 4.50 0.17 172393 0.00 0.00 huffman_decoder [7]
- 2.1 4.74 0.11 675263 0.00 0.00 hget1bit [10]
- 1.7 4.94 0.09 576 0.16 0.16 III_stereo [12]
- 1.3 5.01 0.07 1152 0.06 0.06 III_antialias [13]
- 1.0 5.06 0.05 36864 0.00 0.00 III_hybrid [20]
- 0.8 5.15 0.04 107827 0.00 0.00 getbits [11]
- 0.6 5.18 0.03 1152 0.03 0.03 III_reorder [23]
-
- To make it easier to update and improve mpeg3play, I would like to be
- notified of enhancements to this source, so that they can be merged
- into future versions of mpeg3play.
-
- The original source code that the player is based on can be found in
- ftp://ftp.tnt.uni-hannover.de/pub/MPEG/audio/mpeg2/software/
- technical_report/dist08.tar.gz
-
- ----------------------------------------------------------------------
-
- KNOWN PROBLEMS
-
- - Audio streams through Netscape sometimes fail (probably a caching
- issue, try to clear the Netscape cache if this happens).
-
- - Cannot play some 16kbps mono files. This is probably due to the very
- crude implementation of bitstream synchword detection. It may not be
- able to correctly decode valid bitstreams which have false synchword
- patterns in the ancillary data portion of the bitstream.
-
- - mpeg3play makes the Linux audio driver leak memory (presumably by not
- cleaning up nicely once it's done).
-
- ----------------------------------------------------------------------
-
- HISTORY
-
- 16-Dec-96 0.9 Initial release.
- 30-Jan-97 0.9.1 Code cleanups to remove compiler warnings, audio device
- initialization moved to its own function. The implementation
- of SubBandSynthesis slightly changed.
- Linux port by Tim Newsome <drz@froody.bloke.com>.
- 31-Jan-97 0.9.2 Some additional optimizations, single precision floats
- (-DFSINGLE) now works on Linux.
- 2-Feb-97 0.9.3 A port to HPUX 9.05 by Damien Clermonte <clermond@esiee.fr>.
-
- ----------------------------------------------------------------------
-
- Copyright (C) 1996, 1997 by Johan Hagman
-
- Johan Hagman disclaims all warranties with regard to this software,
- including all implied warranties of merchantability and fitness.
- In no event will Johan Hagman be liable for direct, incidental or
- consequential damages resulting from loss of data or business
- opportunities, resulting from mpeg3play, or any part of same,
- either alone or in conjunction with other programs.
-
- mpeg3play is distributed "as is" at no additional charge.
-