MPXPLAY-MMC v3.22 Audio / Video Player by PDSoft

This and readme.txt documents are derived from the console version(s) of Mpxplay,
because of this some informations can be incorrect or incomplete yet.

If You find a bug, first read the 'known bugs' section below, 
if the bug isn't there, please write it to me with these informations:
-your command line options (i.e. mpxplay.exe -bp -cf playlist.m3u)
-mpxplay.ini modifications (relative to the default)
-description (what did you do, and what did the program do, when you found it)
 (i.e. keyboard operations)

I never can test the program totally. Sometimes a modification causes a new bug.
If a function doesn't work properly (but it worked in the previous version(s)),
please write it to me...

Current known limitations of MMC:
- seek-preview cannot handle video stream changes (MPEG-TS) (no preview is displayed in this case)
- stream record: you can change play-program under the recording (the recording locks/uses the initial streams),
  but packet loss can happen is some rare cases
- if the video playing is choppy with hw decoding too, check the power management of your CPU (reduced CPU freq can cause lower frame scheduling precision)

General known bugs and limits:
- autodetection of filetypes:
 - basically filetypes are checked/detected by file-extensions
 - known (implemented) file-extensions are not autodetected (if check-by-extension fails)
 - unknown file-extensions (in playlist or from command-line) are autodetected (by their contents)
 - autodetection is disabled in commander mode
 - you can enable the autodetection for known file-extensions and in commander mode by the "Program control -> Extended filetyped detection" (or ProgramCntrl+8 flag in mpxplay.ini)
- multi tabs (ctrl-t):
 - max number of tabs per side is 8 (display limit)
 - using large playlist(s) on any tab can slow down some disk functions (file copy/move/del, id3-tag write)
   (because they search for the modified files on all tabs to update dir/file/id3 informations)
- Tag editing (F4): OGG VorbisComments longer than one packet (~4k) cannot be modified (eg. containing album cover picture)
- CDW : 
 - doesn't work on every CD-ROMs (only on those, which can copy/ripp/grab audio tracks)
 - the door open/close also doesn't work on every drives
 - program opens/reads one track only at once (cannot play and copy simultaneously)
 - seeking bugs/fault with -bpn option (when the next file is opened/loaded)
 - win32 (NT/XP): requires write access (or admin rights) on the drive
 - win32/aspi (it's used under win9x only, so probably completely unsupported, will be removed): the drive letter (d:) may be reversed/exchanged at 2 or more drives (couldn't assign the drive letter(s) to the aspi device number(s) yet)
- mixer:
 - soundlimit (-sl) has no effect at the begin of files in the default -bp (interrupt decoder) mode, only in -bs,-bn,-bni,bn8 (interrupt decoder is disabled) modes
- crossfade:
 - holds/uses the freq of the first song at different freqs (you can set a constant/alternative freq with -of)
 - doesn't give perfect result at some freq combinations (ie: 192khz master freq, crossfade between lower freqs: 44khz->48khz)
 - doesn't work in demo-mode (hi-scan)
 - doesn't work at fullbuffer (-bl) or at large prebuffer (-bbn 500), at auto-pause (-pap/ctrl-p) and pause-next (ctrl-s) functions
 - increased volume + limiter = non-linear fade-out and fade-in
- sort function (-io or ctrl-F1-F4):
 - some of the keys are unavailable in some cases, ie: filesize and filedate don't exist at loading standard playlists (M3U,PLS,etc.), 
   only at drive/directory scan (d:\*.*\*.*) or Mpxplay saved CUE files (with REM MPXPINFO FIDA,FISI infos)
 - doesn't work properly with -ipl/-idl/-ihl/-is functions (similar problem than previous)
- FTP: 
 - id3tag editing doesn't work (you cannot modify a file with ftp commands)
 - some session settings (the switches in sess manager) don't work if session is restored by startup (by mpxtabs.ini) (only -drfc option has effect in this case)
- possible random mode bugs (with crossfade)
- seeking is not exact on most VBR stream-filetypes (MP3,OGG,FLAC,MPG,TS) and may be buggy on older APE files (v<=3.92)
- Mpxplay cannot play very short files in some cases (shorter than 0.5 sec)(shorten than the DMA buffer)

- minimum playback freq: 512Hz (max is 4Ghz, but maybe the speed of your HD/CPU is not enough to play a more than 10 Mhz wav file)
- mpxplay.ini : max filesize=256kbytes; max number of lines=768; max chars per line is 512 in DOS, 1024 in Win32/unicode version

-------------------------------------------------------------------------------
Other informations:

-Video playing:

 You can select video decoding method in Tools -> Configure -> Video -> Video config -> Decoder type

 -FFmpeg (internal) (default):
  All audio and video files use the internal FFmpeg file parser and decoder to play A/V content.
  You don't have to install any external filter or codec.

 -QtMedia/DShow:
  You need a DShow decoder (like ffdshow) and file parsers/splitters (like Haali Media splitter),
  and probably a Win7DSFilterTweaker program to configure the primary dshow decoder.
  Used extensions for video playing: AVI, FLV, MKV/WEBM, MP4/MOV/3GP, MPG/VOB, OGM/OGV, TS, WMV
  If the video playing doesn't start (the system cannot play the file by dshow),
  the internal audio parsing/decoding going to work automatically.
 
 -None (audio only):
  FFMpeg's parsers and audio decoders are used to play files, without displaying video content.

-DVB/DTV usage/options:
 You can open DVB devices same as http streams, using "File -> Open url", or puting the "path" in a playlist (M3U) file (the latter is suggested).

 Supported protocols are "atsc:", "cqam:", "dvb-c:", "dvb-s:", "dvb-t:", "isdb_s:".
 You also can use "dvb-c2:", "dvb-s2:", "dvb-t2:" protocol names,
 but there's no difference in the device handling (basically the newer protocols can work with the older methods too).

 DVB options are separated by ":". They work with and without "dvb-" pre-tag (so "frequency" and "dvb-frequency" are also supported).

 Example: "dvb-t://dvb-frequency=770000000:dvb-bandwidth=7" -> Tune and read DVB-T device on 770 Mhz (usually a freq is enough to tune the device).

 All available options:
  Common options:
   dvb-adapter=<integer>     : specifies the adapter number (0,1,2..), if you have several adapters in your machine
   dvb-frequency=<integer>   : specifies the frequency to tune to in Hz
   dvb-inversion=<integer>   : specifies whether the signal is inverted or not (1 or 0)
   dvb-network-name=<string> : Unique network name in the System Tuning Spaces

  ATSC:
   dvb-major-channel=<integer>    : ATSC major channel
   dvb-minor-channel=<integer>    : ATSC minor channel
   dvb-physical-channel=<integer> : Physical channel

  DVB-C/DVB-S:
   dvb-srate=<integer>         : specifies the symbol rate of the modulated signal, in symbols/s
   dvb-modulation=<string>     : QAM,16QAM,32QAM,64QAM,128QAM,256QAM,8VSB,16VSB,QPSK,DQPSK,8PSK,16APSK,32APSK

  DVB-S/ISDB_S:
   dvb-polarization=<char>     : LNB polarization (V,H,R,L)
   dvb-lnb-low=<integer>       : Local oscillator low frequency (kHz) (0 - 2147483647)
   dvb-lnb-high=<integer>      : Local oscillator high frequency (kHz) (0 - 2147483647)
   dvb-lnb-switch=<integer>    : Universal LNB switch frequency (kHz) (0 - 2147483647)
   dvb-network-id=<integer>    : Network identifier
   dvb-azimuth=<integer>       : Satellite azimuth
   dvb-elevation=<integer>     : Satellite elevation
   dvb-longitude=<integer>     : Satellite longitude
   dvb-range=<string>          : Satellite range code as defined by manufacturer e.g. DISEqC switch code
   dvb-fec=<hexanum>           : specifies the code-rate to use for Forward Error Correction (default: -1 (auto), valid values: 00010002, 00020003, 00030004, 00050006, 00070008)

  DVB-T:
   dvb-bandwidth=<integer>     : specifies the bandwidth of the OFDM channel (6, 7 or 8 MHz depending on the country)
   dvb-code-rate-hp=<hexanum>  : specifies the code-rate to use for higher hierarchies(values: same as dvb-fec)
   dvb-code-rate-lp=<hexanum>  : specifies the code-rate to use for lower hierarchies (values: same as dvb-fec)
   dvb-guard=<hexanum>         : specifies the guard interval (valid values: 00010004, 00010008, 00010010, 00010020)
   dvb-transmission=<integer>  : transmission mode (-1 (Automatic), 1, 2, 4, 8, 16, 32)

-PLAYLIST usage:
 -you can create a playlist:
  - under DOS with the  DIR /B/ON *.MP3 > PLAYLIST.M3U  command
  - with Mpxplay:
    MPXPLAY.EXE d:\*.*\*.* -@s playlist.m3u
    MPXPLAY.EXE -ds c -@s playlist.m3u
    MPXPLAY.EXE -ds c -@s playlist.m3u *.mp3  (create playlist from C drive with MP3 files only)
    MPXPLAY.EXE -ds c -irl -@sw playlist.m3u  (to store/save file infos (artist,title,time) in the M3U)
  -inside Mpxplay: with the F2 key

 -MXU (extended playlist / file database):

  -create: MPXPLAY.EXE -irl -@sx EXTLIST.MXU PLAYLIST.M3U
       or: MPXPLAY.EXE -irl -@sx EXTLIST.MXU d:\*.*\*.*

  -use (load): MPXPLAY.EXE EXTLIST.MXU                 (used like a playlist)
           or: MPXPLAY.EXE -ig EXTLIST.MXU d:\*.*\*.*  (used to load file infos faster)
           or: MPXPLAY.EXE -ig EXTLIST.MXU             (without input file(s) -> for faster directory browsing)

 -subdir scan examples:
  D:\*.*\*.*        : load all supported (audio) files from the D drive
  D:\ABC*.*\*.*\*.* : load files from ABC*.* subdirs and from their subdirs
  D:\ABCD\*.*\*.*   : load files from ABCD dir and from its subdirs
  D:\?*.*\*.*   : load files from the first subdirectory level only (don't load root and don't scan deeper subdirectories)
  D:\ABC*.*\*.* : load files from ABC*.* subdirs only
  *.*           : load files from the current directory only
  *.MP3         : load MP3 files from the current directory

-ID3-TAG write/update in ASF,FLAC,MP4,OGG; AAC/AC3/APE/MP2/MP3/MPC (ID3v1.0,v1.1, ID3v2.3,v2.4, APEv2-tag)
 Tag editing in playlist editor (F4 key):
 -You can edit the tag of a single file, or a group of files (selected by Ins).
 -At group editing the program collects and displays the common tag informations (but usually this works in directory only)
 -Some dynamic-length metadata formats (ID3v2,ASF,FLAC,MP4,OGG) requires a padding
  field to extend the metadata infos. If this padding is not exist or too small,
  we have the following possibilities (the program gives these in a window):
  1. We duplicate the file adding all (new and old) informations to the new file. (write to a tmp file, rename at the end)
     The program also adds a padding field to the file, so usually no need
     to duplicate it again.
  2. We drop some tags from the metadata field (primary the unknown tags, which are not required
     for Mpxplay nor for audio playing, just gives extra informations to some players)
  3. MP4 format gives an extra option: we move the header infos (the complete MOOV atom, inc. META atom)
     to the end of file and we write all metadata infos there.

 Tag editing from command line:
 -you can use -iw with -it options (-ita,-itt, etc.) (see readme.txt)

 -or you can use a listfile on this way:

  make a text file in this form (write artist:title after every filenames)(don't write spaces in the filenames):

  filenam1.MP3 artist1:title1
  filenam2.MP3 artist2:title2
  filenam3.MP3 artist3:title3

  Name it to !FILES and run my program with these options:

  MPXPLAY.EXE -iw -ig !FILES playlist.m3u
  or
  MPXPLAY.EXE -iw -ig !FILES *.*

  and the program will write this ID3 info(s) into the audio files.

  (the listfile (!FILES) is same like an m3u file, but with artist & title)

  examples:
  mpxplay.exe -iw -ig !FILES -itl "80's collection" -itc "encoded by myself" playlist.m3u   (you can use -ig and -it options together)
  mpxplay.exe -iw -ita "Name of the artist" -ity "2004" *.mp3              (modify/write artist and year tags in all MP3 files)
  mpxplay.exe -iw -itl "New album name" -itc "" track04.ape track11.ape   (modify the album and clear the comment in the track04.ape and track11.ape files)


-FRAMES: Mpxplay handles the files in frames. 1 frame is usually 4608 pcm bytes (1152*channels*2)
	 (1 sec = ca. 38 frames at 44.1kHz)(depends on the freq of file too)

-CD-WAV (CDW) : the cd-wav function is not a simple audio CD player, this is
 a real time Digital Audio Copy (it reads the cda sectors and writes them to
 the sound card), because of this you can use crossfade, speed control,
 auto volume correction and surround on audio CDs and you can copy the
 audio tracks to the hd (with ALT-F5). 
 (note: parallel play and copy from the same disk can be very slow or bad)

-SOUNDLIMIT: cuts (don't write to the output) the signal below
 "soundlimit" it doesn't play (only decode) while, and it finishes the play
 (exit or step to next song in playlist) in last 400 frame when volume is
 bellow or equal to soundlimit.
 Set it to 50 for disco, 10 for classical music, 1 to cut at 'digital noise'
 and 0 to disable soundlimit checking.

-PROGRAMCNTRL configuration in mpxplay.ini (default: 17 = 1 + 16):
 0.   +1  confirm exit (-xce)
 1.   +2  machine shutdown at exit (-xas)
 2.   +4  reserved
 3.   +8  always try to autodetect the filetype (usefull in commander mode and if file-extension and file-type don't match)
 4.  +16  open unknown (like jpg,pdf,doc) file types with default (external) system application (enabled by default)
 5.  +32  open all files with default system application (inside A/V playing still can be controlled with ctrl-enter and skip keys)


-PLAYLISTCNTRL configuration in mpxplay.ini (default: 0):
 0.   +1  disable playlist warnings (only "non-standard CUE" yet)
 1.   +2  eq to -db option (disable left side)
 2.   +4  eq to -db2 option (use dir browser on both sides and load playlist as sublist from commandline)
 3.   +8  eq to -il option (use local id3-list for file id3-infos)
 4.  +16  non-filtered playlist search at alt-letter (the older method)

-SORTCONTROL configuration in mpxplay.ini (default: 0):
 0.   +1  use descending order on all tabs
 1.   +2  sort directories and playlists too (by filedate or filename) (else always by filename in ascending order)
 2.   +4  disable auto descending (for len,size,filedate columns) (else switching to sort by len/size/date initialized in descending order)
 3.   +8  don't keep playlist on the top of the directory at sort

-MIXERCONTROL configuration in mpxplay.ini (default: 1)
 0.   +1  enable sound limiter (fast volume reduction)
 1.   +2  allways use soft-tone (disable DOS hw soundcard tone controls)
 2.   +4  0.1% speed control (550-1000-9999) (instead of 1%)
 3.   +8  reserved
 4.  +16  disable decoder (MPx) tone (use always the au_mixer tone control)
 5.  +32  disable au_mixer tone (use tone control at MPx files only)

-DISPLAYMODE configuration in mpxplay.ini:
 (default: 126 = 64+32+16+8+4+2; -fl: 2; -fl -v: 6=2+4; -fe -fs : 14=8+4+2)
 5.  +32  enable spectrum analyser
 7. +128  use DesktopModeC (else P)

-DESKTOPMODE(P,C) configuration (default: 507=1+2+8+16+32+64+128+256 and 656511=1+2+4+8+16+32+64+1024+131072+524288):
 2.     +4  show all filenames in directory browser (not only supported audio/container)
 3.     +8  show playlist editor elevator ()
 4.    +16  vertical editor sides (else horizontal)
 6.    +64  show fulltime (in bottom right corner)
 7.   +128  show songtimes in editor
 8.   +256  show songnumbers in editor
 9.   +512  show drive letters in editor
10.  +1024  show filenames in editor instead of artist:title
11.  +2048  follow browser (via mouse) in editor
12.  +4096  shift playlist entry up or down by mouse (drag & move) (otherwise scroll editorside)
13.  +8192  allways follow song-skip with the cursor/editorhighline (else follows only if it stands on the current/played song)
14. +16384  disable "move side with editorhighline" function (set old editorhighline/side moving method)
15. +32768  disable ID3-window artist-title scroll (album (2.) line never scrolls)
16. +65536  always display tabs-header line/buttons in playlist editor
17. +131072 align fields in editor (separate filename and extension or artist and title (commander/player))
18. +262144 sign playlist to [playlist] (not [sub-list]) if other side is playlist-side (and enter key loads it to other side, starts playing immediately) (this was the default method before v1.56)
19. +524288 display dates of directories in playlist editor
(note: at some functions (like sort) the commander mode means that the 2., 10. and 19. bits are enabled together)

-LOADID3TAG configuration (default: 39 = 1 + 2 + 4 + 32)
0.  +1  use mxu/extm3u/id3list
1.  +2  load tags from audio files
2.  +4  create artist:title from (long)filename if no other id3info (enabled by default)
  (detected filename formats are: "Artist - Album (YEAR)\NN. Artist - Title.XXX" or "Artist - NN - Title.XXX" (one or more of the items can missing)(NN is tracknumber))
3.  +8  prefer list-tags (got from extm3u,mxu,id3list,filename) (else prefer audiofile-tags)
4. +16  preload informations from slow devices too (ftp,http)
5. +32  load ID3 tags from low level devices too (Icecast, http) (enabled by default)


-available CPNAMEs (codepages) for -8ucp and -8ccp options (def. ISO-8859-2 and CP437):
 ISO-8859-1,ISO-8859-2,ISO-8859-3 ,ISO-8859-4 ,ISO-8859-5 ,ISO-8859-6 ,ISO-8859-7,
 ISO-8859-8,ISO-8859-9,ISO-8859-10,ISO-8859-13,ISO-8859-14,ISO-8859-15,ISO-8859-16,
 CP424,CP437,CP720,CP737,CP775,CP850,CP852,CP855,CP856,CP857,CP858,
 CP860,CP861,CP862,CP863,CP864,CP865,CP866,CP869,CP874,CP1006,
 CP1250,CP1251,CP1252,CP1253,CP1254,CP1255,CP1256,CP1257,CP1258
 partial support for CP932,CP936,CP949,CP950 (and maybe the graphical-desktop of Mpxplay also will be bad)

-limiter function (MixerControl=1): is a fast auto volume reduction (if required)
 after channel-downmix, crossfade, surround, tone-control or if SoundVolume>100
 (usually the limiter function cannot work properly in LQ (HQmode=0) mixer mode)
