
			This is PX3s updated version of mpeg2avi+. 

                             http://go.to/px3

                                   


Ver. 0.1.6d April 05 03: 

  new features:

    - percent display in main window title

    - new bitcalc mode "-Z" can be used to calculate the filesize for the generated avi
      syntax for the new parameter: -Z <encode> <skip>
	where "encode" is the number of frames to encode and "skip" is the number of frames to skip
      after encoding the "encode" frames.
      valid -Z examples:
      - m2apx3g ... -Z 50 100
      - m2apx3g ... -Z 100 1000
      example one will encode 50 frames and than the next hundred frames are skipped, then 50 frames are encoded again, the next 100 frames .....
      example two will encode 100 frames and than the next thousand frames are skipped, then 100 frames are encoded again, the next 1000 frames .....

    - new cropping mode "-4" can be used to crop non-centered films
	syntax: -4 <Offset-Top> <Offset-Left>
	example: 
	- m2apx3g ... -1 640 480 -4 32 16
	this would crop the film downto 640x480 starting at 32x16 pixel from the upper left corner.
      
    - compiled with visual c++ .net



Ver. 0.1.6c February 21 03: 

  Okay.. here's the next try.. 

  new features:

    - corrected the version bug in the window title

    - updateinterval - see below - is now set to 5 frames as a default value, if no param is set

    and as allready announced for 0.1.6b:

      - merged ikerrg version

      - changed two smaller codefragments (some missing emms =.-o)

      - custom filename support. means the "-o" switch can now be called with a directory as argument or with a filename
        valid -o examples:
        - m2apx3g ... -o8 c:\tmp
        - m2apx3g ... -o8 c:\tmp\
        - m2apx3g ... -o8 c:\tmp\output.avi

      - new parameter "-u" for updateinterval. updating the dialogbox each frame, could decrease speed. you can now define the dialog-
        updateinterval by using the -u switch. default updateinterval is 1.
        example:
          - m2apx3g ... -u 5
            will update the dialog each 5 decodet frames.. 


Ver. 0.1.6b February ?? 03: 

  I'm not quite sure what happened, but 0.1.6b is/was a chaos release.. =.-(
 
  it looks like i matched a combintion of cvs problems, wrong merged executables and wrong readme's
  this m2apx3g could be announced as the "px3 lost control" release =.-(

  0.1.6.c should solve the probs.. 



Ver. 0.1.6a February 05 03: 

  This release is a small initial release only. Main intention was to get the various sources merged an to raise speed a litte bit =.-)

  - Merged OGOs changes with my last internal (never published) release

  - Changed some minor routines for speed improvements

  - this release includes no source, cause the source-version won't be valid much longer (as written in my forum)


<----------------------------------------------- OGOs changes ----------------------------------------------------------->

0.1.5c: released 16/09/2001 (by OGO)
	* fixed the bug that made mpeg2avi wait forever without quitting at the end of the 1 pass in a DIVX4 2 pass session
	* fixed a crash that occured occasionnaly when hitting "cancel encoding"
	* crude but working error reporting
	* better avi file size estimation indicator
	* code cleaning ... Removed all non GUI stuff and a lot of old unused code


0.1.5b: released 15/09/2001  (by OGO)
	* fixed a very annoying bug in the codec selection where no codec was listed at all (DIVX codec disparition bug)
	* fixed memory allocation bugs in avi file routines that for sure make the thing crash sometimes
	* added avi file size estimation in dialog. Useful when you use fixed quality encoding in DIVX4 and want to have an estimation of the file size
	* added achieved bitrate indicator in dialog (DIVX4 bitrate ie 1kpbs = 1000 bits)
	* changed units from KB to MB in dialog
	* code cleaning ...

<----------------------------------------------- end of OGOs changes ----------------------------------------------------------->

Ver. 0.1.5a June 17 01: 

  - Fixed that damned w2k bug. 

  - Enhanced the remainingtime. Frame range start and end are now considered.

  - added new commandline parameter "-p"  to set the thread priority via commandline.
    synthax: -p <encthreadprio> <readhtreadprio>
             where valid values for <encthreadprio> and <readhtreadprio> are:
		  0 = Idle
		  1 = Lowest
		  2 = Below normal
		  3 = Normal
		  4 = Above normal
		  5 = High
		  6 = Highest
   
     Example: "-p 4 3" would set the encoding thread priority to "Above normal" and
              the read thread priority to "Normal"



Ver. 0.1.5 March 22 01: 

  - Removed mpeg2avipx3.exe 

  - For those who needed the -r5 option a new executable is included in the \INTEL directory
    -r5 only works in this executable.

  - Added Thread priority for the read-thread. 

  - Added a dialog for preview. features:
    - resize
    - crop
    - change filter
    - change ivtc
    - display of the current ratio
    - save settings to "m2a.bat"
      - the saved batchfile needs to be edited, because the output is set to "c:\temp"
        and audioencoding is disabled.

  If this version runs stable, the next step will be including vdub filters.



Ver. 0.1.4 March 21 01: 
 
  This one is a gui bugfix release.

  - fixed a display bug. (tx to cd2 for teaching me english =.-)

  - enhanced the thread-priority control. read-thread will no be raised/lowered too.

  - window will close after encoding

  - help display if no ore wrong params are given

  AND:

  i received a lot of mails asking me why i decided to make m2a gui-like.

  The answer: moving the output to a windows dialog box, speeds up m2a. that's it.


  Still not tested:

  - could someone please test -r5 ? i got no intel cpu for testing.   


  Final note:

  - i got mails telling me that batch encoding is not possible using m2apx3g.exe.
    -> use "start /wait m2apx3g.exe ...."
    that'll work.

  - mpeg2avipx3.exe will be terminated with the next version. 
    means: future versions will only include the gui version.



Ver. 0.1.3b March 18 01: 
 
  - placed the wrong mpeg2avipx3.exe in the zip-file

  - m2apx3g.exe needs the same parameters als mpeg2avipx3.exe



Ver. 0.1.3 March 18 01: 

  - added a new exe-file "m2apx3g.exe". use it for encoding, not for preview. the new exe 
    is the first step to a gui version of m2a. 
    current features:
       - win32 gui
       - pause/resume/cancel encoding
       - threadpriority

    this gui is faster than the dos-box =.-)

    i need to implement cropping and preview in the next steps.


  - fixed the "gpf error" after encoding

  - fixed the "-r5" bug

  - Did a last bufix on the #RT =.-)

  - New Audiostreamsupport: LPCM (beta only state, not public)

  
  - still not added the external filter functions.



Ver. 0.1.2 March 03 01: 

  This a small "panic-release" =.-)

  CyberDemonII reported major bugs with range and avi-splitting.

  This version fixes these bugs.

  S O R R Y.

  Special thanks to CyberDemonII for this fast bug report.

  In addition new movie naming conventions are used:

   - the first file will now be movie_1.avi

   - if you use dual output the second file will be movie_2.avi

   - if you use splitting, names are movie_1_x.avi and movie_2_x.avi for the 
     splittet files



Ver. 0.1.1 March 03 01:

  - added Larinis Dual Output code
     to create 2 avis with different bitrates use the new -7 switch

  - minor change to mpv_read
      - uses now seekLBA for @ 

  - minor changes to vobreader.cpp
      - changed fileroutines to std-windows functions
      - added new function seekLBA

  - minor changes to different codes, for more speed ... =.-)

  - new "force" modus for autoresizer.
    last version did a "nearby" downsize based on div 8
    the "forcemode" avoids x div 16 and y div 16
    to force the div simply add an F to the -5 parameter.
      EXAMPLES:

          Your film is 4:3 with a ratio of 1.36:1
               - mpeg2avi -o5 -5 3F

          Your film is 16:9 with a ratio of 2.35:1
               - mpeg2avi -o5 -5 7F


  - increased the splitfilesize. max accepted value is now 4096



Ver. 0.1.0 February 17 01:

  - Executable is compiled with VC 6.0

  - Autoresizer for preview mode implemented.

    The autoresizer is based on two new parameters.
    - First is a new displaytype: -o5 
      -o5 tells mpeg2avi to start in preview mode and to resize the picture
          based on the infos stored in mpeg-stream. m2a detects the ratio
          e.g. 16:9 or 4:3 and resizes the picture by scaling the Y-size.
          16:9 films will allways produce an ~1.77:1 output
           4:3 films will allways produce an ~1.33:1 output

    - If you know the ratio of the film (have a look at the cover) you can
      optional pass the ratio to mpeg2avi: use -5 to set the ratio.

      Synthax for is: -5 X 

      Where valid values for X are:
          4:3 films 
            - 2  = 1.25:1 
            - 3  = 1.33:1 (* default for 4:3 movies if -5 is not given)
            - 4  = 1.36:1 

         16:9 films
            - 5  = 1.66:1 (Europe) 
            - 6  = 1.77:1 (GB) (* default for 4:3 movies if -5 is not given)
            - 7  = 1:85:1 (US) 
            - 8  = 2.35:1 (CinemaScope)

      EXAMPLES:

          Your film is 4:3 with a ratio of 1.36:1
               - mpeg2avi -o5 -5 3

          Your film is 16:9 with a ratio of 2.35:1
               - mpeg2avi -o5 -5 7

     ALL GENERATED SIZE-VALUES ARE NEAREST VALUES TO THE RATIO. THIS IS BASED ON THE
     DIV 8 PROBLEM. But this is the best solution at the moment.


  - Enhanced the cropmodus. Croprectangle can now be used in every resolution.

  - Added display of aspect ratio coded in mpeg2 stream 

  - Fixed the "AVI frame rate" Display

  - Fixed the #RT bug, which was based on SmartRipper files

  - smaller changes on different sourcecodes for faster execution

  - Added a new Directory ORIG_README which contains the original documentation
    of mpeg2avi 16B35 as published by royce liaor



Ver. 0.0.9 February 01 01:

  Ok. Hope to get more time, but this could be the last version for a few weeks. If i'll
  find a little bit time, i'll keep on coding. 

  So here's what's new in this release:

  - Added Miha Peternels IDCT. And they're now working. So 2 new IDCTS are avail:
      Use option -r6 for FAST IDCT (IEEE ASSP-32 compliant) by Miha Peterel 
              or -r7 for 64-bit FPU IDCT (IEEE-1180 reference compliant) by Miha Peterel

        ***** Special thanks to Miha Peternel for his great IDCTs. *****


  - found the #RT bug.. remaining time is reactivated

  - Added a pure VC compiled EXE File. If you can't start mpeg2avipx3 use the executable
    in the VC directory.



Ver. 0.0.8 Janury 30 01:

  I found again a little bit time and updated mpeg2avi a little bit.

  - Changes made in preview modus (-o6)
       - removed the border and caption from the preview window
       - added additional features for cropping =.-)
         you can now create a cropping rectangle in the preview window.
         simply use the cursor keys together with the ctrl key.
         a white rectangle is created, which you can use to determine the
         cropping parameters.
         THIS ONLY WORKS IN FULL RESOLUTION. YOU SHOULD CALL MPEG2AVI
         WITHOUT "-1" AS PARAMETER.
         You need to activate the mpeg2avi dos-box do active the keys.
       - This feature will only be avail with a resolution higher than
         710*500. Maybe avail in the next version as parameter.

       !!!Tip: The best way for cropping is to call m2a without "-1", "3Y" and "3X" 


  - Added two new IDCT: AP-922float iDCT 
    Use option -r4 for 3D-Now capable CPU (K6/Athlon)
            or -r5 for SSE capable CPU (Pentium-III, Celeron-II)

  - Added Miha Peternels IDCT in a first step. But it doesn't work correct
    at the moment. so please don't use -r9 at the moment.. if i'll find time
    i'll fix this.. 

  - If no IDCT is given, -r2 (IDCT CHEN) is now set as default.

  - Removed this damned RT display.. dunno but somewhere theres a double-overflow..
    Must search for this.. but: no time..



Ver. 0.0.7 Janury 27 01:

  As i wrote in my last mail on doom9 and q-berts forum i am really busy at the moment.
  Today i found a little bit time, to code some smaller routines.

  So here's a really small fix:

  - Did a fallback to 16b33 idct_mmx. So you should now be able to use -r1 w.o. bugs. 

  - Some optimisations for the Intel Compiler



Ver. 0.0.6 BETA 1 December 17 00:

  Only a new Executable.

  I'm experiencing with some speed routines. This versions is only a beta version with smaller
  speed changes.

  - Fixed the RT, now it's really "remaining time" =:-)

  - Removed the Audio decoding in preview mode.

  In this Version the sourcecodes are missing. I'll publish the sources with the next official
  release.



Ver. 0.0.5 October 09 00:

  Again a small update. did some bugfixes and speed improvements:

  - fixed a bug from the last version. in some cases you got scrambled blocks on
    parts of the picture. this is fixed now. 

  - changed functions in the vresizer to direct pointer usage. so no time is wasted
    on function call for local stack allocation and var-assignments (shrink4xx).

  - moved some errorcheckings to a central routine in store.avi. errorchecking is now
    now done once. improves the speed because of less errorchecking in often called 
    functions.

  - made some modifications in the aviwriter.. should bring a little bit more
    speed.

  - to get more speed out of the aviwriter, i needed to remove the automatic split
    of avi-files. so if you would like to split the avi after xxx KB you must (!!)
    specify. avi files will no longer be automaticly splittet after 2GB. use the -$ 
    switch to specify the filesize.

  - removed the display of mpeg frame and aviwrite. added a new structure in which the
    runstate is written. display is now done in mpeg2dec.c 

  - increased the number of files in the ".lst" to max 16 files (mpv_read.h).

  - added display of #RT (remaining time) to encoding

  - added display of #ET (elapsed time) to encoding

  - added new member vars to the vobreader.cpp. total filesize and current filepos over
    all vobs are now avail (needed this for #RT function).

  - added a readbuffer to Vobreader.cpp. The readbuffer is set to duplicate size of the 
    MPV_BSBUFSIZE. Since MPV_BSBUFSIZE ist actually set to 65536 bytes the readbuffer
    is initalized to 131072 bytes.

  - don't look in the source on mpeg2avipx3.c =:-) i'm just playing around with some 
    stuff there..



Ver. 0.0.4 September 19 00:

  small update again.. =:-)

  - mpeg audio streams will be encoded now.. not only the first one, all !
       Limitations: max 9 mpeg2 audio streams will be encoded
                    range is from 0xc0 to 0xca 

    	 so the "-a" can now called like
       	-a
       	-a0x80            <- for ac3 audio streams
       	-a0xc0            <- for mpeg2 audio streams .. range 0xc0 upto 0xca
    	 audiostream id must be given in hex notation



Ver. 0.0.3 September 18 00:

  This one is again a simple fix, but i'm a little bit busy at the moment.. 

  - enhanced the "-a" switch.. you could now specifiy which audio stream should be encoded
    if you use the "-a" without any further parameters no audio will be encoded
    so the "-a" can now called like
       -a
       -a0x80
    audiostream id must be given in hex notation

  - removed the decss.. sorry.. but that's not legal stuff.. 
    feel free to reimplement. but it won't be implemented by me in any further releases

  - first step to replace the existing idctmmx32.. but it's not working correct at the moment
    this will be implemented in one of the next versions

  - made minor changes to some routines 

  - added one new function in getpic.cpp: 
    	- static void Clear_Blocks(comp,count)
    see then commented out codefragments at skipped_macroblock of how this new function is 
    used



Ver. 0.0.2 September 11th 00:

  - splitted the source to generic-encoding library and encoder
    sources in \mpeg2avilib can now be used as a encoding library
    sources in \mpeg2avipx3 shows how to implement the engine



Ver. 0.0.1 September 9th 00:

  - fixed the asm-routines
  - added "-a" switch for video-decoding only
  - added fps-display



Todo:

  - An active todo list can be found in my forum on http://go.to/px3


Bye

Rolf
PX3


Special thanks to:

- Miha Peternel for his great IDCTs. 
- Larini for his Dualoutput code 
- Tjalling Hattink for his filter sources




Parameters will be accepted as shown above:


MPEG2AVI 0.16B35(MMX) [original code (C) 1996, MPEG Software Simulation Group]
Usage:  mpeg2avi  {options}
Options: -b <file>  input bitstream-file <or> 'streamlist.lst' (see readme) 
         -b <file> 0xID [optional] ('ID' = desired stream ID, default=0xE0)
         -f         store/display interlaced video in frame format
                     (if MPEG-2 input & output-mode -o7, -f is REQUIRED)
         -o<n> directory output ( 6:WinGDI 7:AVI(RGB24) 8:AVI(YV12) 9:AVI(YUY2) )
         -q<n>      postfilter quality, -q1 = fast(default), -q0 = HiQ
         -r<n>      Select IDCT function (default='-r1' <16-bit Chen>)
         -@ <lba>   Start DEMUXER at logical block address (VOB input only!)
         -# <a> <b> declare decoding range [#a .. #b] (inclusive)
         -*         print data timestamp (video watermark)
      <options below only affect GDI and AVI output modes (-o6 ... -o9)>
         -s<n>      Use Inverse-Telecine algorithm with frame offset (0..9)
                    (-s0, -s1, -s2, -s3, ..., default is OFF)
         -1 X Y     crop output to <X> * <Y> (crop window is centered)
         -2         downsample output to half-resolution (if both -1 and -2,
                     decoder 1st downsamples frame, then crops it)
         -3X n, -3Y n  adjust aspect-ratio <X> or <Y> direction to n-pixels
         -$ <nnn>   autosplit AVI file after <nnn> megabytes (1024KB chunks)
         -! <nnn>   skip 1 decoded-frame per <nnn> decoded-frames (AVI-only)
         -a         decode video only no audio
         -a0xID     decode video and only audio stream with ID ('ID' = desired stream ID)

Examples:  mpeg2avi.exe -b clip04.vob -2 -1 352 240 -3X 320 -3Y 200 -f -o6
           mpeg2avi.exe -b stuff.vob 0xE1 -2 -f0 -s3 -r -o7 output.avi
