All right, I think this is good enough. I just released version 1.00 of mp3packer, freshly rewritten in OCaml. It works a bit differently from the Perl version.
* Full-directory parsing is no longer available. This will be fixed in the near future.
* Ditto for the "-X" delete input file option.
* No runtimes or Perls or extra downloads required.
* The "-m" switch is no longer needed or supported. The new version reads the file once (like the old "-m" mode) but uses about the same amount of memory as the 2-pass normal mode.
* The arguments can no longer be tacked together. In the Perl version, "-st" meant "-s -t". Now "-st" will throw an error.
* New "-debug" switch for... debugging. Use "-debug all" to print out heaps o' data.
Also, the "-b" switch has been modified slightly. If an exact bitrate is given (like "-b 128") the program will change the smallest bitrate per frame to allow a more exact bitrate. For example "-b 128" will limit the first frame to an
unpadded 128kbps frame, wheras the second frame will be limited to a
padded 128kbps frame.
The result of this is that if all frames are the smallest possible, it follows the standard CBR dithering pattern.
If you give a number to "-b" which is one more than a valid bitrate, then the smallest bitrate would be a padded frame of that bitrate. All other bitrates round up to the next highest unpadded bitrate. For example:
CODE
130 -> Unpadded 160
129 -> Padded 128
128 -> Unpadded, padded, padded... 128 (depending on frame)
127 -> Unpadded 128
126 -> Unpadded 128
113 -> Padded 112
112 -> Unpadded, padded padded, unpadded... 112
One of the results of this is that the highest bitrate possible is actually obtained with "-b 321" which results in a bitrate of 320.03 kbps.
ALSO NOTE:The Perl versions were public domian, the new versions will be GPL. This means it can still be distributed with closed-source applications like psyllium's winmp3packer, but it should point out the copyright holder (me!) and contain a copy of the GPL.