
PM123.EXE
=========

Beta 1

    - First public release

Beta 2

    - Added keyboard shortcuts:
        Left/Right = Rewind/Fast Forward
        Enter = Play/Stop
        5 (on numeric keypad) = Pause
        Up/Down = Next/Previous song
        Alt F4 = Quit
        +/- = Increase/Decrease volume

       (every option underlined in menu can be access directly by
        pressing Alt and the underlined key, even outside the menu)

    - Added skin support
    - Fixed shuffle
    - Fixed RIFF headered and/or broken MP3 support
    - Added seek slider (grab seek slider to move within MP3)
    - Fixed control button errors
    - Enhanced/fixed tag editor
    - WarpAMP playlist loading

    Plus various bug fixes...

1.0

    - Improved skin handling (making it possible to make PM123 look
      almost 1:1 with WinAmp)
    - Improved palette handling
    - Fixed WarpAMP playlist loading
    - Fixed drag'n'drop playlist reorganizing
    - Changed GBM.DLL to GBM123.DLL because people might have other
      non-compatible GBM.DLLs in their LIBPATH.
    - Added 82 more genres, including WinAmp genre extensions
    - PM123 can now take `advantage' of full window dragging in Warp 4
    - Drag'n'dropping a directory presents a menu where you can
      select recursive or non-recursive adding
    - Properties dialogs refined
    - Added 'auto play on playlist use'
    - Added selectable scrolling setting
    - Added 'Edit ID3 tag' to main menu
    - Added PM123 Skin Utility with WinAmp skin conversion and
      skin bundling
    - Playlist file adding moved to threads
    - Multiple directory drop
    - Main window accepts multiple files and/or directories
    - PM123 remote control via \PIPE\PM123 (even over the network)
    - Added frequency and mode to playlist info field, and to
      main display (click on the songname)
    - Added visual plugins
    - Added graphical equalizer with band mute and preamplifier
    - Improved HTTP handling
    - Added M3U support in playlist
    - Spectrum analyzer, CPU usage and oscilloscope plugin
    - Real Equalizer

    Plus those regular bug fixes...

1.01

    - Fixed bug in WinAmp skin loading that caused PM123 to crash
    - Fixed a WinAmp skin seek slider glitch - please reconvert
      your seek slider problematic skins
    - You don't have to add ".lst" when saving a playlist anymore
    - Spectrum analyzer plugin revised:
        - Added falloff
        - Made analyzer area droppable
        - Frequency chop allows you to drop unused frequencies
        - More efficient spectral leakage reduce method
    - Added a warning if some bitmaps of a skin were not found
    - Added read ahead buffering in streaming audio
    - HTTP.DLL renamed to HTTP123.DLL
    - Fixed Warp 3 glitches in fonts
    - Fixed a crash in playlist sort
    - Added a new settings (and a new settings page):
       - Play 48 kHz as 44 kHz
       - Streaming audio settings
       - Default display mode (filename, ID3 tag, information)
    - Fixed font bug in older skins
    - Fixed a bug in the Unregistered window which caused it to hover
      above all windows
    - Fixed bug when pressing Alt-F4 in the main window
    - Fixed Recall-menu behaviour
    - Added a new "smooth scroller" with DBCS and national character support,
      which can be activated by starting PM123 with the "-smooth" switch
    - Improved 256-color support
    - Shift-click Play/Stop button while playing to fade out and stop playing

1.1 beta 1

    - Fixed file with spaces in pipe commands.
    - execmode -sp executed on pm123.exe so it now runs in Warp Server 4 SMP
    - Patched notebook loading problem with Default display settings.
    - Adjusted equalizer dialog frequencies to correspond with new mpg123 values.
    - Fixed auto-play on load when another stream is playing.
    - Implemented new decoder, filter and output plugins.  For this beta,
      very little plug-ins are fully functional.
    - Playback of playlist does not close the output plug-in between playback
      of the entries anymore.
    - "Use this playlist" and next/previous now loads the ID3 Tag.
    - "Default display" now works everywhere.
    - Playlist now continues playing after selecting a song from the playlist.
    - Drag and drop from the playlist to main window now works properly.
    - Random button does random playback again, not sorting.  Random is
      also much faster than it was in beta 2. Use "Random" in the Sort submenu
      if you want to do playlist shuffling.
    - Repeat and Random playback state are now reloaded after launch.
    - Fixed random crash when adding with recurse, I hope...
    - Repeat now works in all conditions.
    - Adding to a playlist before the current loaded song now updates its index.
    - Deleting from a playlist before the current loaded song now also updates
      its index.
    - Directories can now be added from the "Add to list" file dialog.
      This is basically a hack in the file dialog. Unless you manually type
      the path, the directory will have to be selected in the directory listbox
      AND it must be the current directory listed in the file listbox AND
      the filename entry field must be empty, or "*" or the default "*.*".
    - HUGE playlist (~900 songs and more) are now able to load.
    - pm123 doesn't crash when loading playlist from the command line
      for an already opened instance.  This includes .m3u since they are
      now loaded as playlists.
    - Fixed problem when loading playlist and a song from the unloaded
      playlist was already playing.
    - Deleting entries from a playlist doesn't auto-use use it anymore.
    - Sorting by size and time is now much faster.
    - Loading entries from the playlist now actually loads the right entry,
      not just the one with the same exact filename.  but this basically
      makes it faster...
    - Added support for WinAmp style .pls playlist files including SHOUTcast.
      Titles for SHOUTcast servers are loaded from the .pls so you see all
      the neat stuff like the load of the servers when you load the playlist.
    - Fixed problem loading HTTP URLs with no path like on SHOUTcast.
    - Included procedure in netscape.html to properly configure pm123 as a
      Netscape Navigator helper application.
    - Fixed memory leak when removing entries from the playlist.
    - Streaming buffer now works properly and continues playing buffered
      stream even if read operations are stalled.
    - Broken HTTP connections are now properly canceled and closed on stop.
    - Added workaround for timing problem in DART for setting volume right
      after the device is opened.
    - HTTP URL with no filename like SHOUTcast now show the complete host
      instead of interpreting it as a filename. Title streaming is on its
      way...

1.1 beta 2

    - Song information from the decoder is now loaded in playlist.
    - Server name and genre are now loaded in playlist.
    - Streaming title is up and running!
    - Fixed possible crash on corrupted playlists.
    - Reduced flickering when resizing and moving playlist, playlist manager
      and other windows.
    - Implemented bookmark system!  Bookmarks are loaded in the main menu
      directly, making them easy to use.
    - Root directories can now be loaded from the file dialog kludge.
    - Loaded directories using the file dialog kludge are now saved.
    - Defaults and Undo do not double plug-ins entries anymore,
      although they still do not do anything useful for plug-ins.
    - Added "Save stream" in main menu to save data on disk before it is
      decoded.
    - Comments from songs are now loaded in the main window.
    - Fixed inconsistency problem when stopping song in playlist and
      pressing play again.
    - Fixed tracking problems for plug-ins configure dialog.
    - Added new wavout.dll plug-in.
    - Different output plug-ins can now be activated.
    - Increased stack size.
    - Trying to open various dialogs now get focus when they are already opened.
    - Fixed loading Songname in playlist.
    - Fixed loading/playing songs using the pipe.
    - Fixed annoying crash in OS2AUDIO.DLL.
    - Fixed analyzer first and last band (although they don't really show)
    - Changed pm123.ini format, now uses safe OS/2 INI APIs.
      ***DELETE YOUR OLD INI FILE!!***
    - Last .EQ file loaded are now reloaded on startup.
    - Changed .EQ file format.  Now saves the gain in floating point value,
      instead of system dependent pixel slider values.
    - It is now possible to open more than one instance of the PM123
      process. Pipes created by the new processes will be \pipe\pm123_2
      and \pipe\pm123pl_2, and successive instances will increment that
      number in their pipe names.
    - Visual plug-ins with cx or cy smaller or equal to 0 will no longer
      be deinit and reinit when changing main window size (tiny, small, normal).
    - Load Track dialog now keeps in memory last drive used and automatically
      refreshes.
    - CD Tracks can now be loaded in the playlist.
    - analyzer.dll does not crash anymore if DIVE cannot be allocated.
    - Playlist entry emphasis is no longer changed on each entry added
      to the playlist.
    - "*volume" pipe command now also returns the current volume.
    - fixed +/- keyboard volume hotkeys
    - relative paths to plug-ins in skins are now relative to pm123.exe

MPG123.DLL Decoder Plug-in History
==================================

mpg123.dll 1.10 in pm123 1.1 beta 2
===================================

- Implemented title streaming code, and code for "Save stream".
- SHOUTcast and icecast server information now passed on to pm123 with
  decoder_fileinfo().
- Fixed problem with calculation of average bitrate, and of seeking, for
  VBR MP3s.
- Increased first MPEG header from 10K to 128K.  I hope this is enough
  for all MP3s with bitmaps (yes images geez) before the MP3 itself.
- Should not crash on corrupted Xing VBR headers anymore.
- Read ahead buffer thread now runs at critical priority, so no more skip
  when read ahead buffer is activated.

mpg123.dll 1.09 in pm123 1.1 beta 1
===================================

- Fixed streaming audio by adding two in a row header checking.
- Implements new pm123 decoder plug-in interface.

mpg123.dll 1.08
===============

- Fixed floating point exception crashes.  Let me know if you can still
  reproduce any SYS3183.
- Fixed problem with MP3 EQ range calculation with low frequency
  overflowing table and screwing up memory when MPEG 2.5 Layer III files
  were played.
- Added support for virtual hostnames in HTTP123.DLL
- In HTTP123.DLL, fixed seeking (and also loading) problems and glitches,
  especially with slow media (like CD-ROMs) and big read buffers.  But be
  wise, Read Ahead buffering produces an unnecessary overhead on fast media.
- Added mp3->wav decoder.  Command line utility only for now.

- For developers, added a play status semaphore.  It can be used to sleep
  instead of DosSleep() with the advantage of knowing exactly when the player
  stops.

mpg123.dll 1.07
===============

- Fixed MMPM crash when DART underrun occurs.
- Fixed Equalizer mute crash.
- FileInfo (in playlist) was always reporting 0 length songs.

mpg123.dll 1.06
===============

- Fixed possible infinite loop in read ahead header.
- Added support for Xing Variable Bitrate MP3s.
- Added auto-repause kludge so that when MMOS/2 gives access back to the
  sound device, the bug in MMOS/2 doesn't unpause mpg123.
- Added new 10 bands ISO normal frequency equalizer for MP3s *only*.  The
  interface (which also needs to be fixed) will not be updated until Taneli
  has more time on his hands, but here are the bands.  Also note that the
  decibel calculation was wrong before (way too loud):

  31.5 Hz
  63.0 Hz
  125  Hz
  250  Hz
  500  Hz
  1.00 kHz
  2.00 kHz
  4.00 kHz
  8.00 kHz
  16.0 KHz

mpg123.dll 1.05
===============

- 12kHz MPEG 2.5 Layer 3 files now play.
- Added fix for new Xing encoded MP3s from mpg123 0.59q
- Added read ahead header check.  This should make ALL valid MP3s even with
  borked headers work, and should not identify anything else than MPEG
  audio files as MPEG audio files such as bitmaps lying around in your MP3
  directories.
- Added fix for Aurora from dink.

mpg123.dll 1.04
===============

- oops, broke some MP3s for nothing, it's back all right now
- play 48 at 44 works right now

mpg123.dll 1.03
===============

- found some Audio MPEG Header documentation.  Should now work with any
  MP3s other players or decoders play, if not, please contact me.  I've
  also fixed 8000Hz MP3 support, cool.
- patched possible divide by zero when loading corrupted files.

mpg123.dll 1.02
===============

- implemented workaround for bad GUS driver DART buffer timing (it jumps by
  250 ms step once in a while instead of incrementing for each buffer).
  Makes decoderPlayingSamples() work correctly on GUS.
- finally found the proper buffers to flush.  no more first buffer trash
  kludge and now any snap crackle and pop are REALLY only coming from your
  sound card alone (check the visual plugins if you don't believe me)
- faster seek by boosting priority (oops, forgot this initially :)
- audio engine now fills empty buffers with 128 value instead of 0 for 8
  bit playback (removes the clicks, but it still sounds like shit :).

mpg123.dll in pm123 1.01
========================

- fixed timing bug between MP123_PLAY and MP123_STOP
- added buffer mode to HTTP123.DLL and in MPG123.DLL.  rewing and fast
  forward will give a quirk in buffer mode sometimes.

mpg123.dll in pm123 1.0
=======================

- decoderFileInfo can now be called more than once at the same time
- kludged the jump to command to trash the first buffer (until I figure out
  more on the digital audio processing and where it keeps the buffer)
- enlarged filename length from ~512 to ~1024, allows for bigger URL I guess.
- now compiled with VAC++, works better with DLLs than EMX
- RxDecoderError now works
- decoderError now reports non-critical errors
- decoderError now queues error messages, empty it, or you'll memory leak
- added filter plugins
- added possibility to change the decoder's band gain (there are only 32
  linear bands, at the moment, this means at a sample rate of 44100, ~689Hz
  per band = 44100/2/32) they suck BTW
- added decoderPlayingSamples, to catch a few samples realtime from the
  OS/2 DART audio system to display real time stuff like an oscilloscope or
  a spectrum analyzer.  Note, it will get a buffer length in bytes, you have
  to calculate how many of them you need according to the bitspersample and
  channels.
- decoderFileInfo now reports 0 on success and some error code otherwize.
- decoderPlaying extention as decoderStatus
- new kludge that plays 48kHz PCM at 44.1kHz.  This is really ugly, you
  don't hear a big difference, but you're better off converting it.  If you
  are wondering why I'm not converting it realtime 1. more CPU time needed
  *OR* 2. sounds real bad (aliasing and company)
- HTTP module now in HTTP.DLL

MPG123.DLL in pm123 beta 2
==========================

- decoderTime(PLAYEDSECS) now shows the position being played, not decoded.
- when buffers are trashed for rew and ffwd, the mpeg stream file position
  is brought to the file position that the decoder was at when it filled
  the currently playing audio buffer.
- the decoderTime(TOTALSECS) now reports something until all audio buffers
  are played.
- max buffers locked to 200 and min to 5. these are 16KB buffers, and they
  seem like absolute limits anyway.
- fix crash when there was an MCI error when starting playing and pm123
  already played something before (trying to free memory it didn't allocate)
- the first buffer is trashed to prevent the playing of the last buffer of
  the previous stream (I can't figure out what's going on, help me!!!)
  Whatever snaps, crackles and pops left are due to your MPEG streams
  or your sound card.
- new decoderFileInfo().  allows program that need to check validity or
  specs of an mpeg stream with mpg123
- stop now unpauses the stream before closing.
- opening http streams should work better now.
- much better rewind and fast forward (makes jumptosecs work a lot better too)
- reporting errors should be more reliable
- http routines now report usable error messages
- http routines now check for "Content-Length" to determine total time
- seeking and timer routines now use the file position instead of keeping
  track of the frame numbers.  makes the decoder faster and more consistent
  with the total time.
- added REXX support ... hum

MPG123.DLL in pm123 beta 1
==========================

- initial release

--

mpg123.dll  POSSIBLE upcoming in the future
==========================

- NS/2 plugin
- Continous playback (by predecoding? This is going to be pretty complicated.)
- MMOS/2 MP3 I/O Procedure

