home *** CD-ROM | disk | FTP | other *** search
/ Geek 6 / Geek-006.iso / video / conversores / mpgavi.exe / README.TXT < prev    next >
Text File  |  1999-11-10  |  27KB  |  553 lines

  1. ----------------------------------------------------------------------
  2. MPEG2AVI.EXE v0.16B35 11/10/99 QUICK DOCUMENTATION
  3. HOMEPAGE : http://members.xoom.com/mpeg2avi  mpeg2avi@xoom.com
  4. ----------------------------------------------------------------------
  5.  
  6.                MPEG2AVI - MPEG1/MPEG2-video -> AVI converter
  7.  
  8.      1) Overview
  9.      2) System requirements
  10.      3) Known limitations
  11.      4) Future versions
  12.      5) What's NEW in this release
  13.      6) What's CHANGED in this release
  14.      7) A few command line examples
  15.  
  16.      Don't forget to read these other important documents:
  17.  
  18.           mpeg2avi.txt  - User's Guide
  19.           sample.lst    - "streamlist" sample file
  20.           ivtc.txt    - inverse telecine information, incomplete!
  21.           vfw_yuv.txt      - MPEG2AVI FAQ and YUV-AVI information
  22.  
  23. ----------------------------------------------------------------------
  24. 1) Overview of MPEG2AVI's abilities :
  25. ----------------------------------------------------------------------
  26.      MPEG2AVI is a command-line utility that will convert an MPEG-1/2 video
  27.      bitstream to a Video For Windows AVI file.  MPEG-audio conversion is
  28.      not supported, so audiostreams (if present) will be ignored.  MPEG2AVI
  29.      can only convert one bitstream at a time (multi-file input is not
  30.      supported), with limited video processing during the conversion.
  31.      
  32.      "mpeg2avi.txt" contains a (preliminary) user's manual
  33.  
  34. Input features -
  35.  
  36.      MPEG2AVI accepts the following formats:
  37.  
  38.           1) elementary MPEG-1 video bitstreams (*.M1V)
  39.           2) MPEG-1 system bitstreams (*.MPG), VideoCD (*.DAT)
  40.           3) elementary MPEG-2 MP@ML video bitstreams (*.M1V)
  41.           4) MPEG-2 system bitstreams (*.MPG), unencrypted DVD (*.VOB)
  42.  
  43.      Additional support for (*.VOB) files
  44.           a) MPEG2AVI can start decoding at any LBA offset.
  45.           b) MPEG2AVI can read a group of VOB files as one continuous
  46.      stream
  47.              (see sample.lst on using streamlists with MPEG2AVI)
  48.  
  49. Decoding features -
  50.  
  51.      MPEG2AVI is a derivative program of the MSSG MPEG-2 video codec
  52.      (MPEG2V12)  Some features, such as scalable MPEG-2 support, have been
  53.      removed in favor of faster performace.
  54.  
  55.            1) Optional reference-quality floating-point IDCT algorithm
  56.                IEEE1180-1990 64-bit double-precision FPU IDCT (slow)
  57.           *2) Standard high-quality MMX IDCT algorithm
  58.                IEEE1180-1990 32-bit MMX IDCT (fast)
  59.            3) Optional high-speed MMX IDCT algorithm (not IEEE1180
  60.      compliant)
  61.            4) accurate motion compensation routines (full-pel, half-pel)
  62.               (more accurate than XingMPEG/XingDVD player)
  63.           
  64. Processing features -
  65.  
  66.      MPEG2AVI can perform the following operations on decoded video:
  67.  
  68.           1) Centered cropping (X & Y), X & Y must be divisible by 8
  69.           2) Arbitrary downsizing (X & Y), X & Y must be divisible by 8
  70.           3) fast "half-resolution mode" (reduces decoded video to half its
  71.              original X & Y dimensions)
  72.           4) Inverse telecine (IVTC) function for better conversion of
  73.              film-material (24fps) coded @ MPEG-2 interlaced video (29.97)
  74.           5) Frame-skipping, every <nth> frame is deleted
  75.           6) Frame-range, a selected range of frames are processed
  76.                (useful for encoding a specific segment of a bitstream)
  77.  
  78. Output features -
  79.  
  80.      MPEG2AVI can generate the following video files :
  81.  
  82.      1)  Video for Windows *.AVI
  83.          any VFW compressor which supports "RGB24"
  84.           uncompressed RGB24 AVI format
  85.          special YUV-output modes (YV12, YUY2) for faster AVI encoding
  86.             (the VFW compressor must support YV12/YUY2 input!)
  87.  
  88.  
  89. ----------------------------------------------------------------------
  90. 2) System Requirements
  91. ----------------------------------------------------------------------
  92.  
  93.      Windows 9x/NT4 or later
  94.      Microsoft Video for Windows "Video Compression" library
  95.      32MB RAM
  96.      Pentium/MMX class processor (CPU must support MMX instructions)
  97.  
  98.      On an Intel Celeron-450 PC, an MPEG-2 video (720x480) can be converted
  99.      directly (no video processing) to M-JPEG AVI at roughly 2/3 real-time
  100.      (15fps.)  Resizing the decoded video degrades performance.
  101.  
  102. ----------------------------------------------------------------------
  103. 3) KNOWN LIMITATIONS
  104. ----------------------------------------------------------------------
  105.  
  106.      + bad bitstreams can cause MPEG2AVI to crash
  107.      
  108.      + single-file input only (MPEG2AVI cannot convert a group of MPEG
  109.        files to one AVI file)
  110.           
  111.      + auto inverse telecine introduces visual artifacts during each coding
  112.        transition in the MPEG bitstream
  113.           
  114.      + no audio decoding
  115.      
  116.      + YUV AVI modes incompatible with some VFW compressors
  117.      
  118.      + codec-selection fails intermittently with Win2k systems
  119.  
  120. ----------------------------------------------------------------------
  121. 4) FOR THE FUTURE
  122. ----------------------------------------------------------------------
  123.  
  124.      + Adobe Premiere Plug-In support
  125.      + Closer study of the inverse-telecine operation
  126.  
  127. ----------------------------------------------------------------------
  128. 5) What's *NEW* in this (pre)release
  129. ----------------------------------------------------------------------
  130. + Added IVTC "polarity" control ('-s0' - '-s9')
  131. + v0.16B34 experimental multithreaded read-ahead system.
  132.   The read-ahead system reads up to 256KB ahead of the current bitstream
  133.   Pointer.  This should eliminate stalls induced by an empty read buffer.
  134. + v0.16B33 The default INT32 IDCT ('-r1') has been replaced with a faster
  135.   MMX32 iDCT.  The MMX32 IDCT complies with IEEE-1180's accuracy
  136.   requirements.  The older INT32 IDCT is still available as ('-r4'), but
  137.   it should be considered obsolete.  The MMX32-IDCT is just as accurate,
  138.   and faster.
  139.  
  140. + v0.16B31 auto inverse telecine function ('-s<n>d'), helps convert
  141.   "troublesome" MPEG-2 (VOB) bitstreams which contain both interlaced and
  142.   progressive video.  Reduces "A/V drift", but does not eliminate
  143.   audio/video missync entirely :(
  144.  
  145. + v0.16B3 streamlist implemented as a C++ object.
  146.  
  147. + v0.16B24 stream-VOB input (multiple VOB files from a "streamlist"
  148.   '-b strlist.lst' ( 'strlist' = name of streamlist )
  149.   Tells MPEG2AVI to parse a list of files from 'strlist.lst', then
  150.   decode the files as a single continuous mpeg-bitstream.
  151.   See the sample streamlist file 'sample.lst', for more info
  152.  
  153. + v0.16B23 MMX optimized CSC (YUV -> RGB), (faster '-o6' and '-o7')
  154.   For bitstreams of CHROMA420 format, all output modes <-o6 -o7 -o8 -o9>
  155.   are MMX optimized.  Half-resolution ('-2') and crop ('-1 <x> <y>')
  156.   include MMX optimizations.
  157.   The downsizers -3X & -3Y, are not yet MMX :(
  158.   And of course HiQuality FIR filters ('-q0') are not MMX :(
  159.  
  160. + v0.16B22 MMX optimizations, MPEG2AVI now requires an MMX-CPU!
  161.  
  162. + v0.16B2 (Demuxer converted to C++, to support LBA seek, '-@ <lba>')
  163.   '-@ <lba>'  - start @ LBA address (VOB demux only!)
  164.       Note, the specified LBA must contain a system header!
  165.       (otherwise the MPEG-decoder cannot sync)
  166.  
  167.   '-b <filename> 0xID'  -  select stream-ID (VOB demux only!)
  168.       The StreamID is optional (default == 0xE0), if specified the
  169.       demuxer will decode video data from the specified stream ID.
  170.  
  171.   '-*' - encode MPEG-data (watermark video),
  172.          The data will appear in the upper-left of the cropped area :
  173.           1) MPEG2AVI frame# (decoded frames, start from 0)
  174.           2) GOP timecode (MPEG GOP header time code XX:XX:XX:frame)
  175.           3) temporal reference (MPEG picture header)
  176.           4) address (LBA) of last valid SYSTEM HEADER (VOB only)
  177.  
  178.         (Of this information, only (1), (2), and (4) are reliable.
  179.          The temporal reference is printed out-of-order (due to the
  180.          frame reordering performed by the MPEG-decoder.)
  181.  
  182.  
  183. + v0.16B1 (AVI-writer converted to C++, to support '-$ <n>' feature)
  184.   Several new features
  185.    '-$ <nnn>'  -  auto-split AVI-file after <nnn> megabytes are written
  186.    '-! <nnn>'  -  skip 1 frame per <nnn> decoded frames.  (The nth frame
  187.                   is decoded, but not sent to the output-routines.)
  188.  
  189. + v0.15B51 hopefully fixed AVI-modes '-o8' and '-o9' (for real!)
  190.   added decoding-range control '-# <start> <end>'
  191.     (MPEG2AVI does not "seek" the starting-point, decodes and
  192.      examines every picture-header until it reaches the start-point.
  193.      You should expect MPEG2AVI to waste a lot of time reaching the
  194.      designated starting frame#.)
  195.   restored resize-granularity to 8 for all CHROMA modes (was 16 before)
  196.  
  197. + v0.15B5 YUY2 AVI mode '-o9'
  198.   YUY2 mode has been successfully tested with PicVideo M-JPEG codec.
  199.   fixed KeyFrame-rate issue when Microsoft MPEG-4 codec is used with
  200.   the YUV AVI modes ('-o8' or '-o9')
  201.  
  202. + v0.15B4  YV12 AVI mode '-o8'
  203.   Video-frames are sent to the video-codec as raw YUV bitmaps.  YUV
  204.   mode is faster than the standard RGB24 mode.
  205.  
  206. ---------------------------------------
  207. 6) *CHANGES* From Previous Versions
  208. ---------------------------------------
  209. + v0.16B35 moved cDemuxer to read-ahead thread, fixed resizer
  210.   "green-bar" bug introduced by B34.  Auto-IVTC (-s0d, -s1d, etc.)
  211.   logic changed.  It now uses "resume2"-mode.
  212. + MPEG2AVI v0.16B33 was supposed to default to the MMX32 IDCT, but
  213.   due to an error on my part, it still defaulted to the INT32 IDCT.
  214.   0.16B34 corrects this bug.
  215.   MPEG2AVI's file input is now handled using Win32 native filehandling
  216.   routines [ CreateFile(), ReadFile(), SetFilePointer(),
  217.   and CloseHandle() .]
  218.  
  219. + The MMX IDCT functions ('-r2') and ('-r3') have been reworked.
  220.   The IEEE1180 test package revealed errors in the AAN.  The reworked
  221.   MMXChen is slightly faster, and the MMX-AAN is less inaccurate.
  222.   Internal re-organization of certain source files (resizer, mpv_read)
  223.   All motion-compensation pel-cases use aligned reads.
  224.   Due to the new MMX32 IDCT ('-r1'), the older INT32 IDCT has been
  225.   moved to '-r4' (it's obsolete, so don't use it(
  226.  
  227. + v0.16B32 MMX acceleration for vertical downsizing ('-3Y <y>')
  228.   Only the shrink420y() and shrink420xy() functions are MMX-optimized,
  229.   but so far I have not seen any 422 or 444 MPEG-2 bitstreams.  The
  230.   MPEG-2 bitstream parser reads 32KB per call, and the VOB demuxer
  231.   reads 64KB per call.  (This is 2X the buffering of previous versions.)
  232.  
  233. + v0.16B31 better MMX optimization to the motion-compensation routines
  234.   most of the macroblock cases now read QWORD aligned addresses.  The
  235.   auto-IVTC mode(s) have greater intelligence.
  236.  
  237. + v0.16B3
  238.   The '-*' mpeg-statistics are more accurate.  The temporal-reference
  239.   and GOP timecode should now be frame-accurate.
  240.   Altered user-interface routines to prevent MPEG2AVI from reading
  241.   "phantom keypresses."
  242.   The '-@ <lba>' option can now seek to *any block* within a stream.
  243.   (It is no longer limited to the file#1 of the streamlist.)
  244.   MPEG2AVI now searches the beginning of VOB files for a valid
  245.    system-header (this is equivalent to '-@ 0')
  246.  
  247. + v0.16B24, the file-I/O routines now use _read(), _open(), & _close(),
  248.   (instead of fopen, fread, fclose.)  The BBDMUX's bitstream package
  249.   has been further tweaked to waste less time reading from the input
  250.   file.
  251.  
  252. + Starting v0.16B23, the LBA-seek command '-@ <lba>' enters the
  253.   bitstream at the user-specified LBA.  If a system-header is not found,
  254.   MPEG2AVI scans forward in the VOB bitstream, until a header is
  255.   decoded.  The '-@' no longer requires the "user's prior knowledge" of
  256.   these elusive system-headers.
  257.  
  258.   The fastest MMX IDCT ('-r3') disables AVI-output.  This was my
  259.   personal decision; I want MPEG2AVI to provide high-quality output,
  260.   and the AAN-IDCT function failed to deliver.  If you really must have
  261.   light-speed VOB->AVI conversions, try something like XingDVD 2.0x and
  262.   Panasonic MPEG Encoder.
  263.  
  264.   The crop command ('-1 <x> <y>') requires horizontal increment of 8,
  265.    vertical increment of 2.
  266.  
  267.   Some cosmetic changes to AVi progress reporting.
  268.  
  269. + Starting v0.16B22,
  270.  
  271.         **** MPEG2AVI NOW REQUIRES AN MMX-CPU ****
  272.  
  273.   '-q1' (fast-filter) is now the default filter-mode.  Most fast-filters
  274.   have been MMX-optimized, while *none* of the HiQ filters are MMX.  The
  275.   HiQ mode is still available ('-q0'), but without MMX-optimizations
  276.   obviously.  The front-end BBDMUX demuxer has been sped-up.
  277.   The meaning of the option '-r' has changed.  ('-r<n>' has replaced it)
  278.    '-r<n>' picks an IDCT-function.  The IDCT-function greatly influences
  279.    MPEG2AVI's SPEED and QUALITY.
  280.    The precision-IDCT ('-r0') uses 64-bit FPU calculations (overkill)
  281.    The default IDCT ('-r1') uses 32-bit integer calculations.
  282.    The faster  IDCT ('-r2') is a 16-bit MMX version of the above.
  283.    The fastest IDCT ('-r3') uses 16-bit MMX calculations (low quality)
  284.  
  285.    '-r2' is probably the best compromise between speed and image quality.
  286.    Depending on the CPU model, '-r3' may or may not be faster.
  287.  
  288.   The MPEG2decoder's internal motion-compensation routines are all MMX.
  289.   The format-converters (YUV420 -> YUV422, YUV420 -> YUV444 ) are also
  290.   MMX optimized.  The RGB24 output mode (-o6, -o7) is still integer :(
  291.  
  292. + Starting v0.16B2, the demuxer has been upgraded to BBDMUX v1.2.  It is
  293.   now encapsulated in a C++ object
  294.   Due to the new VOB LBA-seek ('-@ <lba>') option, the behavior of the
  295.   frame-limit feature ('-# <start> <end>') depends on -@.  The LBA-seek
  296.   opens the bitstream at the specified <lba>.  The first frame seen by
  297.   the MPEG-decoder, is the first-frame at the <lba>.  Hence, frame '0'
  298.   is the first-frame decoded *AFTER* the <lba>
  299.  
  300. + Starting v0.16B1, the AVI-writer is a C++ object.  C++ code executes
  301.   slower than plain C-code, so you may experience a very slight
  302.   performance decrease.
  303. + Starting v0.16B1, the AVI-writer always operates in auto-split mode.
  304.   The default size-threshold is 2047MB.  If an AVI-file exceeds this
  305.   length, MPEG2AVI automatically closes the current AVI-file and
  306.   opens a new one.  (MPEG2AVI picks an arbitrary filename for the new
  307.   AVI.)  The '-$ <nnn>' option can be used to change the default
  308.   size-threshold.
  309. + Starting v0.15B51, the MPEG-frame counter has been relocated to the
  310.   MPEG-decoder ( Get_Hdr() in getpic.c ), this may cause some problems
  311.   with bad bitstreams (i.e. an MPEG Picture with 3-interlaced fields
  312.   will only register as one frame.)
  313. + Starting v0.15B5, MPEG2AVI's output-processor has been internally
  314.   restructured.  The order of operations is as follows :
  315.  
  316.    Order: 1)             2)                3)                   4)
  317.   |MPEG-decoder| -> | Resizer | -> | Half-resolution | -> | Crop & CSC |
  318.       MPEG2V12      (-3X, -3Y)           ( -2)             (-1 xxx yyy)
  319.  
  320.   Note, these modifications affect the usage of -3X and -3Y (downscaling.)
  321.   The target-size for -3X or -3Y is always with respect to the MPEG-video
  322.   resolution.  (In prior versions of MPEG2AVI, -3X and -3Y depended on
  323.   half-resolution mode '-2'.)
  324.  
  325.   The -1 and -2 commands function as before.
  326.  
  327.   (The resize-operation is now performed *first*.  MPEG2AVI handles the
  328.   MPEG-frames in their native format.  Color-space & pixel-format
  329.   conversion are now performed last, if necessary.)
  330.  
  331. + Starting v0.15B4, the AVI-filewriter opens the codec-dialog with
  332.   ICCompressorChoose() instead of AVISaveOptions().  This is needed to
  333.   set the codec's input-format to YV12.  This programming change
  334.   shouldn't affect the older ('-o7') RGB24 AVI mode.
  335. + Starting v0.15, half-res output ('-2') defaults to a low-pass (HiQ)
  336.   filter.  This filter is slower than the pixel-averaging downsampler.
  337. + The older pixel-averager is now known as "fast filter."
  338.   The fast-filter can be activated via ('-q1')
  339. + AVI-writer now reports "MPEG Frame # : ".  It used to report the output
  340.   frame#, causing confusion with the IVTC (since the IVTC deletes
  341.   frames.)
  342.  
  343. + Starting v0.14, the AVI-writer uses a 32-bit integer IDCT, which is
  344.   up to 3X faster than the FP-IDCT.  The FP-IDCT can still be used
  345.   via the command-line option "-r".
  346.  
  347. + Starting v0.13, AVI-writing can be safely aborted.  Type 'Q' to abort
  348.   the encoder.  The AVI file will be properly closed (and readable.)
  349.   Unfortunately, aborted encoding jobs cannot be "resumed."
  350.  
  351. ---------------------------------------
  352. 7) New Command-line usage examples (v0.15)
  353. ---------------------------------------
  354.   The abbreviation "pproc" means "post-processor"
  355.  
  356. 1) MPEG2AVI.EXE -b titanic.vob -f0 -2 -1 352 240 -o9 tit_mjpg.avi -r2
  357.         -f0 -> AVI-writer : set 23.976fps, decoder : use frame-mode
  358.         -2 ->  pproc half-resolution output mode
  359.         -1 ->  crop the image (360x240) to 352x240
  360.         -o9 -> AVI-writer (YUY2 mode)
  361.         -r2 -> 16-bit MMX IDCT (fast, reasonable accuracy)
  362.  
  363. 2) MPEG2AVI.EXE -b gotmail16_9.vob -f0 -3Y 416 -q1 -o8 gotmail4_3.avi
  364.  
  365.         -o8 -> AVI-writer (YV12 mode)
  366.         -q1 -> pproc : set "fast filter"
  367.         -3Y -> pproc : downscale HEIGHT -> 416 pixels
  368.               (video aspect-ratio is resized from 720x480 -> 720x416)
  369.               (AVI-file : 720x480)
  370.  
  371. 3) MPEG2AVI.EXE -b gotmail16_9.vob -f0 -3X 424 -q1 -2 -1 320 240 ...
  372.  
  373.         -3X -> pproc : downscale X-resolution to 424 (output is 424x480)
  374.  
  375.         -1 -> pproc : set crop window (viewport) to <320x240>
  376.         -o7 -> AVI-writer (RGB24 mode)
  377.  
  378.         pproc performs operations in this order :
  379.           **1) downscaling ('-3X' or '-3Y ')
  380.           **2) resolution-halving ('-2')
  381.             3) output window cropping('-1')
  382.  
  383.          ** (starting with v0.15B5, downscaling is performed first!)
  384.  
  385. 4) MPEG2AVI.EXE -b gotmail6_9.vob -# 100 500 -f0 ... (see next line)
  386.      -3X 424 -q1 -2 -1 320 240
  387.         -# 100 500 -> starting writing AVI @ MPEG-frame #100,
  388.                       terminate AVI @ MPEG-frame #500
  389.                       (AVI-file starts and ends with fr #100 and #500,
  390.                        for a total of 401 frames written.)
  391.  
  392. ------------------------------
  393. 8) Command-line usage examples
  394. ------------------------------
  395.      Please note that the user's manual (mpeg2avi.txt) thoroughly documents
  396.      each command-line parameter.  But if you're too lazy to read it, here
  397.      are the rest of the features...
  398.  
  399.         < display to screen, no inverse-telecine, half-resolution output >
  400.          MPEG2AVI.EXE -b <input filename> -2 -f -o6
  401.  
  402.             eg. MPEG2AVI.EXE -b clip04.vob -f -o6
  403.  
  404.         <inverse-telecine, display to screen, crop to 704x480 >
  405.          MPEG2AVI.EXE -b <input filename> -f -s<n> -1 704 480 -o6
  406.                  where <n> = 0,1,2,3,4
  407.  
  408.             eg. MPEG2AVI.EXE -b bighit.vob -s3 -f -o6
  409.  
  410.         <write to AVI, no inverse-telecine, downsample & crop to 352x240 >
  411.          MPEG2AVI.EXE -b <input name> -f -2 -1 352 240 -o7 <output name>
  412.  
  413.             eg. MPEG2AVI.EXE -b clip04.vob -f o7 output.avi
  414.  
  415.         <inverse-telecine, write to AVI >
  416.          MPEG2AVI.EXE -b <input filename> -f -s<n> -o7 <output filename>
  417.                  where <n> = 0,1,2,3,4
  418.  
  419.             eg. MPEG2AVI.EXE -b DolbyTrain.vob -s4 -f -o7 output.avi
  420.  
  421.  
  422.      The AVI frame-rate can be *optionally* specified from the
  423.        command-line :
  424.           -f0, -f1, -f2, -f3, etc.
  425.       The frame-rate setting is stored in the AVI header.  (The user-
  426.       Selected frame-rate does *not* change the #frames stored.)
  427.  
  428.       Please read "mpeg2avi.txt" for more information, including
  429.       an explanation about INVERSE-TELECINE.
  430.  
  431. -----------------------------
  432. Revision History
  433. -----------------------------
  434. 11/10 0.16B35 fixed resizer "green-bar" bug introduced by B34
  435.               added "polarity" control to IVTC modes ('-s0' ... '-s9')
  436.               moved cDemuxer to read-ahead thread.
  437.               changed auto-ivtc logic to always use 'resume2' mode
  438. 11/04 0.16B34 fixed default IDCT bug, now the default is MMX32 ('-r1')
  439.               Converted old filehandling calls to Win32 native calls.
  440.               Added *experimental* multi-threaded read-ahead system
  441.               to buffer the input bitstream.
  442. 10/31 0.16B33 internal re-organization of Chen MMX IDCT, video resizer,
  443.               and the input-buffering.  The older INT32 IDCT ('-r1') has
  444.               been upgraded to MMX32 IDCT (IEEE-1180 compliant.)  The
  445.               MMX32 IDCT ('-r1') is now faster.  AAN IDCT support has
  446.               been dropped, since it required some additional functions
  447.               inside MPEG2AVI.  The other IDCTs don't require this
  448.               overhead.  All motion-compensation routines now utilize
  449.               aligned data reads, though performance effect is minimal.
  450.  
  451. 10/26 0.16B32 MMX optimization to vertical resizer, '-*' fixed to upper
  452.               left, regardless of any cropping ('-1 <x> <y>')
  453.  
  454. 10/22 0.16B31 changed operation of auto-IVTC (-s0d,-s1d,-s2d,-s3d,-s4d)
  455.               In prior releases of MPEG2AVI, this mode would start the
  456.               IVTC in the "on" state, then shut-down the IVTC after
  457.               detecting a "repeat_first_field" flag.  Starting with
  458.               0.16B31, MPEG2AVI continuously checks for evidence of
  459.               non 3:2 pulldown content.   The IVTC reactivates if two
  460.               consecutive MPEG frames do not use "repeat_first_field."
  461.  
  462. 10/15 0.16B3  '-@ <lba>' can seek to any position within a streamlist
  463.               User-interface routines hopefully no longer read phantom
  464.               keystrokes.  VOB-streams are now opened in seek-mode,
  465.               meaning the first block need not contain a system_header.
  466.  
  467. 10/11 0.16B24 fixed positioning error of cropping in RGB24 (GDI & AVI)
  468.               (affects -o6 & -o7, when used with '-1 <x> <y>')
  469. 10/10 0.16B24 streamed VOB input (multiple VOB-files)
  470.               A large VOB-file (>4GB) which is split into to 2 or more
  471.               VOBs,  can be entered into a "streamlist" file, and read by
  472.               MPEG2AVI.  The streamlist can only contain VOB files, and
  473.               the VOB files must come from the SAME SOURCE (i.e. you
  474.               cannot encode different bitstreams in one MPEG2AVI session.)
  475. 10/09 0.16B23 fixed color-bleed in YUY2, RGB24 modes.  The problem was due
  476.               to a bug introduced in the MMX code
  477. 10/08 0.16B23 color-space converter (YUV->RGB24) rewritten in MMX.  As a
  478.               result, output modes '-o6' and '-o7' are somewhat faster.
  479.               AVI auto-split threshold lowered from 2047MB to 2000MB
  480.               changed '-@ <lba>' to auto-seek SYSTEM HEADER, so user can
  481.               enter any <lba> address, and the demuxer will start at that
  482.               addr,  scan for a valid header, then begin decoding video.
  483. 10/06 0.16B22 Intel MMX optimizations (best performance on Intel-MMX CPU)
  484.               changed option, '-r<n>' selects one of the IDCT-functions.
  485.               This lets user trade speed for image-quality.
  486.               The cropper ('-1 <x> <y>') is now restricted to +/- 8pixs.
  487.               (...enforces DWORD alignment in MMX-routines.)
  488.               The default-filter mode is now '-q1' (fast-filter).
  489. 09/28 0.16B21 fixed stupid VOB-demuxer bug, where certain EOF
  490.               conditions would exit the program before the AVI-writer had
  491.               a chance to close session.
  492. 09/27 0.16B2  added '-*' == print useless MPEG-data in upper-right of
  493.                 output
  494.               added '-@ <lba>' == open VOB bitstream at block address
  495.                 <lba>  [1 block = 2048 bytes]
  496.               added '-b <filename> [0xID]', optional stream ID [0xID],
  497.                 BBDMUX will demultiplex the specified streamID
  498.                    (default==0xE0)
  499.               BBDMUX is now a C++ object
  500. 09/22 0.16B1  added '-! <nnn>'  ==  skip 1 frame every <nnn> decoded
  501.                 frames
  502.               added '-$ <nnn>'  ==  set AVI auto-split size to <nnn>
  503.                 megabytes.  AVI-writer is now in C++ (may be slightly
  504.                 slower)
  505. 09/16 0.15B51 more work to the YUV-AVI modes, hopefully fixed this time
  506.                 around.
  507.               added '-# <start> <end>', restricted decoding frame-range
  508. 09/12 0.15B5  added 'YUY2 AVI' mode ('-o9'), YV12/YUY2 workaround for
  509.               Microsoft MPEG-4 codec.  The workaround fixes the KeyFrame
  510.               rate issue, but introduces some inaccuracy to the output
  511.               bitrate.  Output-processor restructured (the resize
  512.               operations '-3X', '-3Y' are now performed first, before
  513.               half-mode '-2') other internal changes ( scaling-functions
  514.               process the video-frame in its native color-format,
  515.               420 422 or 444)
  516.               fixed bug introduced by 0.15B4 ( RGB24 "Full Frame" mode )
  517. 09/08 0.15B41 corrected really stupid bitrate-bug with 'YV12 AVI' (-o8)
  518. 09/07 v0.15B4 added 'YV12 AVI' mode ('-o8')
  519.               half-resolution ('-2') now supports all MPEG2 CHROMA formats
  520. 08/15 v0.15B3 added X & Y downscaling ('-3X','-3Y')  When combined with
  521.               cropping ('-1'), the user has full adjustment of aspect-
  522.                 ratio.
  523.               performance tweaks to postfiltering/scaling operations.
  524.               added "fast-filter" to full-resolution (YUV420 ->RGB24),
  525.               changed default half-res filter to 'HiQ' (slower)
  526.               added keyboard commands (PAUSE,IVTC,FILTER,RESIZE)
  527.                  to GDI '-o6'
  528.               IVTC can be set to "auto-disable", which is triggered by
  529.               the MPEG "repeat_first_field."  Autodisable is enabled by
  530.               adding 'D' to the -s command (-s0D, -s1D, -s2D, -s3D, -s4D)
  531.               This feature is useful for VOB-trailers which start off as
  532.               3:2-pulldown (every field is encoded), but transition to
  533.               progressive ("repeat_first_field".)
  534.  
  535.               User can now enter his own AVI fps (frames per second.)
  536.               The fps is stored in two DWORDS : dwRate/dwScale.
  537.  
  538.  
  539. 08/11 v0.14   fixed IVTC "color-bleed", half-resolution and cropped
  540.                 output.
  541.               Performance tweaks to IVTC-processor & AVI/GDI routines
  542.               AVI output now uses 32-bit integer IDCT by default!
  543.               (much faster than before, -r to use the FPU-IDCT )
  544.  
  545. 08/09 v0.13   VOB input, abort AVI-output by typing 'Q'
  546.  
  547. 08/08 v0.12   elapsed time for AVI encoding
  548.               user-specified frame-rate
  549.  
  550. 08/07 v0.11   AVI output
  551.  
  552. 08/06 v0.10   display to GDI (DIB)
  553.