README for the TOOLS directory
==============================

Preamble
--------

In this directory you can find some nice scripts and code that makes
using MPlayer easier.

FIXME: Document the following tools:

bmovl-test


MPlayer scripts in the TOOLS dir
--------------------------------

edgedetect.fp, emboss.fp

Author:       Reimar Döffinger

Description:  Examples of custom fragment program for OpenGL video out driver

Usage:        mplayer -vo gl:yuv=4:customprog=edgedetect.fp


midentify.sh

Author:       Tobias Diedrich

Description:  Runs 'mplayer -identify' for all arguments while preventing
              video window flashing.

Usage:        midentify.sh file1 [file2 ...]


mpconsole.sh

Author:       Rich Felker

Description:  Script to run MPlayer on the console (fbdev/mga_vid/etc.) without
              the console text and/or flashing cursor getting in the way.

Usage:        mpconsole.sh [mplayer options]


mplmult.sh

Author:       Reimar Döffinger

Description:  Example how to output video on multiple windows in sync. Might
              be even more useful in combination with -vo ggi to distribute
              the video arbitrarily.

Usage:        mplmult.sh <n> <options>
              n        Number of MPlayer instances that display the video.
              options  Any options you would pass to MPlayer, more than
                       one file will usually not work.


subsearch.sh

Author:       Alex Beregszaszi

Description:  Collects subtitle files from the directory given as argument
              ('.' if none is given) and its subdirectories and prints
              them as a comma separated list to stdout.

Usage:        subsearch.sh [directory]
              mplayer -sub `subsearch.sh` movie


wma2ogg.pl

Author:       Peter Simon

Description:  Converts WMA files to Ogg or MP3.

Usage:        wma2ogg [options] <-f FILE1 | -f FILE2 ... | -a>
              -f, -file   filename
              -a          converts all WMA files in the current directory
              -t          output filetype (ogg, mp3) [default=ogg]
              -lame       I wanna use L.A.M.E. sure enough!
              -br         bitrate (kb/s) [default=from the WMA]
              -del        remove WMA file(s) after the transcoding


Tech scripts in the TOOLS dir
-----------------------------

calcbpp.pl

Author:       Moritz Bunkus

Description:  A script that calculates the $bpp for a movie, mentioned in
              DOCS/tech/encoding-tips.txt, see that document for more info.

Usage:        calcbpp.pl <resolution> <aspect ratio> <bitrate> <fps>
              resolution:    the cropped but unscaled resolution
                             (use '-vf cropdetect')
              aspect ratio:  the encoded aspect ratio. All DVDs come at
                             720x576 but contain a flag that tells the player
                             wether it should display the DVD at an aspect
                             ratio of 4/3 (1.333) or at 16/9 (1.777). Have a
                             look at MPlayer's output - there's something
                             about 'prescaling'. That's what you are looking
                             for.
              bitrate:       the video bitrate in kbit/s
              fps:           the fps

              example: calcbpp.pl 720x440 16/9 896 25


countquant.pl

Author:       Moritz Bunkus

Description:  Counts the quantizers used for the encoding, mentioned in
              DOCS/tech/encoding-tips.txt, see that document for more info.

Usage:        countquant.pl < divx2pass.log
              It will print out which quantizer was used how often. If you see
              that e.g. the lowest quantizer (vqmin=2) gets used for > 95% of
              the frames then you can safely increase your picture size.


plotpsnr.pl

Author:       Jonas Jermann

Description:  Draw PSNR log graphs using gnuplot.

Usage:        plotpsnr.pl [options] <file>
              -h, --help    Display this help message
              -quant        Display quantizers
              -size         Display size
              -psnr         Display PSNR
              -iframes      Display I-frames
              -pframes      Display P-frames
              -bframes      Display B-frames
              -aframes      Display all frames in different colors
              -cmp <file2>  Compare two files
              -qs <style>   Quantizer style
              -ss <style>   Size style
              -ps <style>   PSNR style

              Default: -quant -size -psnr -qs "p" -ss "i" -ps "p"

Note:         Requires gnuplot. Comparison is based on file2. Comparison
              assumes that the frame numbers of both files fit.


psnr-video.sh

Author:       Matthias Wieser

Description:  Calculates the PSNR between two existing video files.
              The PSNR is calculated frame by frame.
              Also prints the overall PSNR.
              The script can be used to:
               * Compare different softwarescalers (should I use
                 -sws 1 or -sws 2 ?)
               * Compare different resolutions (is it better to scale
                 down to 640x360 or to 560x320)
               * Compare different deinterlacers
               * Compare different video codecs
               * Compare video filters (is it better to use -vf hqdn3d
                 or lavcopts:nr=400)
               * [...]

Usage:        psnr-video.sh <file1> <file2> [<frames>] [<options1>] [<options2>]

              <file1> and <file2> are the video files for which the PSNR
                should be calculated.
              [<frames>] is the number of frames to process, starting
                from frame 1.
              [<options1>] are additional MPlayer options for <file1>
              [<options2>] are additional MPlayer options for <file2>

              A file called ./psnr.dat will be created with the following
              content:

              File;Y;Cb;Cr
              00000001.ppm;34.23;39.54;40.06;35.426
              00000002.ppm;33.03;38.71;39.26;34.271
              00000003.ppm;33.45;38.91;39.28;34.655
              00000004.ppm;32.72;38.69;38.85;33.972
              [...]
              00000247.ppm;35.55;40.84;42.15;36.785
              PSNR:;35.9887

Note:         This script relies on the the tool "pnmpsnr" for the
              frame-by-frame PSNR calculation.
              Be aware that psnr-video.sh needs a lot of temporary space
              in /tmp/.


asfinfo

Author:       Arpi

Description:  a simple ASF header display program

Usage:        asfinfo <filename.asf>

Note:         Also see MPlayer's -identify option.


avi-fix

Author:       Arpi

Description:  A simple tool to fix chunk sizes in RIFF AVI files.

Usage:        avi-fix [-fix] <badfile.avi>

Note:         It does not check or fix the index. You can try to fix it with
              ffmpeg -i ... -acodec copy -vcodec copy.


checktree.sh

Author:       Ivo van Poorten

Description:  Check the source tree for anomalies.

Usage:        checktree.sh -help

Note:         This script is meant for developers to check the current
              source tree and/or the patches they are working on.


mphelp_check.py

Author:       Uoti Urpala

Description:  Check console message translations for common errors.

Usage:        mphelp_check.py [--missing] <master file> <files to check>

Note:         Compares MPlayer translation files against a master file and
              reports conflicting arguments, extra strings not present in
              the base file and (optionally) missing strings.


cpuinfo

Author:       Jürgen Keil

Description:  the prototype ../cpuinfo.c

Note:         Used by configure to emulate /proc/cpuinfo on non-Linux systems.


dump_mp4

Author:       Arpi

Description:  MPEG4-ES stream inspector, dumps the stream startcodes.


fastmemcpybench

Author:       Felix Bünemann

Description:  benchmark/testbed for fastmemcpy stuff

Note:         Also see fastmem.sh.


movinfo

Author:       Arpi

Description:  Show QuickTime MOV file structure.

Usage:        movinfo <filename.mov>


vivodump

Author:       Arpi

Description:  Dump H.263 frame headers from VIVO files.

Usage:        vivodump <input_file> <output_file>



Miscellaneous scripts in the TOOLS dir
--------------------------------------

subedit.pl

Author:       Michael Klepikov

Description:  A script for pipelined editing of subtitle files.

Usage:        subedit.pl [switches]
    -if,--input-format <fmt>   input format; supported: SRT (default: SRT)
    -of,--output-format <fmt>  output format; supported: SRT
                               (default: input format)
    -s,--shift <time>          shift all subtitles by <time>
                               (format: [-]hh:mm:ss,fraction)
    -c,--scale <time>          scale by adding <time> to overall duration
    -f,--split-from <time>     drop subtitles that end before <time>
    -t,--split-to <time>       drop subtitles that start after <time> (will
                               truncate timing if it overlaps a boundary)
    -r,--renumber              renumber SRT subtitles in output
    -d,--debug                 enable debug output
    -h,--help                  help message


w32codec_dl.pl

Author:       Tom Lees

Description:  This script will use the Windows Media Player codec download
              infrastructure to aquire the codecs listed in codecs.conf and put
              them in a directory named "codecs/" below the current directory.

Usage:        w32codec_dl.pl <codecs.conf location>

Note:         You will need the libwww-perl stuff and the cabextract utility
              which can be found at http://www.kyz.uklinux.net/cabextract.php3.


binary_codecs.sh

Author:       Andrea Menucci, thuglife

Description:  Downloads binary codecs from mplayerhq.hu and installs them
              on a Debian system.

Usage:        binary_codecs.sh install
              binary_codecs.sh uninstall


vobshift.py

Author:       Gábor Farkas

Description:  Adjust the time-info in vobsub files

Usage:        vobshift.py in.idx out.idx +8.3
              Will shift the time by 8.3 seconds


subrip.c

Author:       Kim Minh Kaplan

Description:  Transform VOBsub subtitles into Subrip text subtitles using
              GOCR/JOCR.

Usage:        subrip <vobsub basename> [subid [output filename] ]

Note:         Requires at least JOCR/GOCR 0.37.
              You will have to change the 'vobsub_id' value if you want a
              subtitle different from number 0. Hint: You can view the
              subtitle that is being decoded with "display subtitle-*.pgm".


alaw-gen.c

Author:       Arpi

Description:  Generates alaw/ulaw tables.

Note:         Created to work around a past license issue, no longer useful.


avisubdump.c

Author:       Tobias Diedrich

Description:  Dumps vobsub soft subtitles streams embedded in AVI files.

Usage:        avisubdump <movie.avi>


vfw2menc.c

Author:       Gianluigi Tiesi

Description:  Creates a codec settings file from the Video for Windows codecs
              found in the mplayer codec packs.

Usage:        vfw2menc -f <fourcc> -d <codec.dll> -s <settingsfile.mcf>
              -h|--help            - displays this help
              -d|--driver filename - dll or drv to load
              -f|--fourcc fourcc   - fourcc of selected driver
              -s|--save filename   - save settings to file
              -c|--check filename  - load and show setting in filename
              -v|--view            - displays the config dialog and do nothing

Notes:        Works on Windows/Linux x86 only.


modify_reg.c

Author:       Alan Nisota

Description:  Modifies registry file (usually ~/.mplayer/registry)

Usage:        modify_reg -r <registry_file> -l
              modify_reg -r <registry_file> -k <key> [-d|-v <value>[-t <type>]]
              -r|--registry - path to registry file
              -l|--list     - shows all keys and values
              -k|--key      - registry key
              -d|--del      - delete key
              -v|--value    - new value for key
              -t|--type     - key type: string (default) or dword

Notes:        Necessary to use CoreAVC with MPlayer


compare.c

Author:       Michael Niedermayer

Description:  Simple file compare program that detects the number of rounding
              errors and dies if the error is too large.

Usage:        compare <file1> <file2>


realcodecs/

Author:       miscellaneous

Description:  Wrappers for Linux Real binary codecs used to analyze, alter and
              dump the data flow between RealPlayer and its codecs.

Usage:        - Set the path to the RealPlayer codecs directory in the C files.
              - Run 'make realcodecs'.
              - Rename the original codecs to match the names expected in the
                wrapper sources. The default is to give them a "real" prefix,
                e.g. realcook.so.6.0.
              - Put the wrappers in the RealPlayer codecs directory.

Notes:        Known to work at least on Linux x86 with RealPlayer8.
