+-----------------------------------------------------------------+
|                                                                 |
|              Premiere Video Server Plugin v.93                  |
|              ---------------------------------                  |
|                                                                 |
|  Homepage: www.videotools.net                                   |
|  Contact : edwinvaneggelen@softhome.net                         |
|                                                                 |
+-----------------------------------------------------------------+

New:
-Audio support for the Wrapper server mode.
-external audio encoder input for the multiplexor (Useful for CCE)
-Added AC3 multiplexor support.
-Bug fix: problems with settings are solved in Premiere.
-Automatic default settings detection for each application.
 (Now random access is automatically enabled in Premiere as default)
-If the Timeout function is selected, the time out is enabled after that 2
 frames are read. This prevents the problem that the plugin times out
 when the user is setting the properties in TMPGEnc.
-post processing support for VCD.
-Help link in settings menu.
-Added check for audio encoder. Now you will get a warning
 if you are not exporting 44100Hz audio when the audio encoder is enabled.
-GUI fixes (e.g. location of window)
-Audio only fix for MPEG mediator

Introduction:
-------------
The video server plugin enables you to convert Premiere or FlasK
to a frame server. This is very useful if you want to code your edited
video from Premiere or FlasK with an external (MPEG)-encoder
e.g. TMPGEnc or Cinemacraft encoder. This is done by creating a "fake"
AVI-file. The created "fake" AVI can be loaded into the encoder as
a normal AVI. This resolves the problem of making a time and
space consuming intermediate AVI. If you load the "fake" AVI-file
into an encoder, the aviwrap.dll codec makes a connection with the plugin.
When an encoder wants to read audio or video, this request is passed
to the Premiere/FlasK plugin. Then the plugin fetches the audio/video
and sends this to the encoder. We call this inter-process-communication.

Recommended server mode for encoders:

   Encoder                           Server mode
----------------------------------+--------------------------
-Microsoft Media Encoder v8       | Wrapper, RAW Audio
-Cinemacraft SP v2.62             | Wrapper
-Cinemacraft SP v2.50             | Wrapper
-TMPGEnc (several versions)       | Wrapper
-VirtualDub v1.4d                 | Wrapper
-NERO encoder plugin v1.2         | Wrapper *
-LSX encoder v3.5                 | Wrapper, RAW Audio or AVISynth
-Ulead DVD Movie Factory (editor) | Wrapper

* If you run into problems please use RAW Audio, I have performed
  many succesful encodings with the NERO MPEG plugin, but
  occasionally NERO gives an error at the end of the encoding.

Installing the Plugin:
----------------------
Please DELETE all old plugins and old versions of bbMPEG from the plugin
directory. (the old v0.90 version is called Cm-avisynth.prm). Otherwise strange
things will happen! I recommend that you read the section "Filenames" before
starting the installation process.

The installation of the plugin can be done by copying the plugin into the
correct dir for the application (see below). When the Premiere/FlasK/Xmpeg/DVDx
is started, it detects the plugin automatically. As the plugin is the server,
you also need to install a client. The installation procedure for the client
(Wrapper codecs) can be found in the readme.txt present in \aviwrpr directory.

Premiere:
copy the Cm-videoserver.prm file into the plugin dir of premiere

Xmpeg:
Rename the cm-videoserver.flask to .Xmpeg and copy it into the working
dir of Xmpeg

Flask:
copy the cm-videoserver.flask in the program directory of FlasK

DVDx:
copy the Cm-videoserver.prm file into the working dir of DVDx

Postprocessing:
If you want to use additional post processing, install the representing files
in the same directory as the plugin :
-audioencoding (wav2mp.exe)
-multiplexing/cutting (bbmpeg.dll, *.ini)
-pulldown (pulldown.exe)

Filenames:
Several programs use different extensions. Premiere and DVDx use the .prm
extension while FlasK uses the .flask extension. And to make things worse Xmpeg
uses the Xmpeg extension. So the files Cm-avisynth.prm, Cm-avisynth.cm.prm,
Cm-avisynth.cm.flask, Cm-avisynth.flask and Cm-avisynth.Xmpeg are all the same.
I put 2 files in my package which are the same, one with the .flask extension
and one with the .prm extension. This makes it possible to copy the files right
into the directory without renaming them first.

And to make the extension problem even worse, AVI2MPG uses the .dll extension.
So you can find bbMPEG with the extensions .flask, .dll , .prm and .Xmpeg.

Please make sure that you DELETE all old files before installing a new
version...

So use the .prm extension for both the Video Server plugin and bbMPEG in
Adobe Premiere/DVDx. And when using FlasK/Xmpeg please use the .flask extension
for both the Video Server Plugin and bbMPEG.

Do I need AVISynth ?
--------------------
NO, The Premiere Video Server plugin is a standalone program. It does not need
AVISynth to export the data (So you do not need to install it). The plugin is
able to export the data to AVISynth but I only recommend that you use AVISynth
if you want to process the video in the export chain with a script language.
AVISynth is something like Adobe Premiere but without a graphical user
interface, it uses a script language as user input.

Please note that not all encoders are able to read AVISynth-files. The following
encoders are NOT able to read AVISynth-files: CCE SP v2.62, Windows Media
Encoder v8. Although I was able to encode AVISynth-files in TMPGEnc on all my
tested systems, I am getting reports that some people are not able to code the
AVISynth-files in TMPGEnc on some machines.

Why did I develop the AVI-Wrapper mode ?
----------------------------------------
Many new encoders are not able to read the AVISynth-files. This is because of
a fundamental problem with this method of reading of the AVI-files.
This is the reason why I have developed a new server mode that is able
to connect with any encoder. (It works with all tested encoders 'till now).

What is this YUY/YV12/RGB stuff ?
---------------------------------
As you probably know, colors are built with three basic colors, namely Red (R),
Green (G), Blue (B). Normally on a PC, a pixel is built with those three colors.
So for every pixel an intensity for R, G and B is stored. As a result you need
at least 24 bits per pixel (8 bits per color component). White is built with
R=255, G=255 and B=255 and black with R=0 G=0 B=0. This seems to work fine, but
your eye is less sensitive to colors than to intensity. So what you actually
need is a higher detail for intensity than for color (giving the best perceptual
quality for an amount of data).

Since the introduction of color TV they have used this perceptual property of
the eye. What they did is transform the RGB to the YUV domain. In the YUV domain
the Y is the intensity and UV the color components. The trick is that you can
store Y for every pixel and UV for every 2 (YUY) or 4 (YV12) pixels.

  RGB24/RGB32            (4:4:4)          (4:2:2) <-> YUY2   (4:2:0) <-> YV12
-------------------------------------------------------------------------------
 RGB RGB RGB RGB      YUV YUV YUV YUV       YUV Y  YUV Y       YUV Y  YUV Y
 RGB RGB RGB RGB      YUV YUV YUV YUV       YUV Y  YUV Y       Y   Y  Y   Y
 RGB RGB RGB RGB      YUV YUV YUV YUV       YUV Y  YUV Y       YUV Y  YUV Y
 RGB RGB RGB RGB      YUV YUV YUV YUV       YUV Y  YUV Y       Y   Y  Y   Y


Why is editing in YUV better than in RGB ?
------------------------------------------
First I assume that you use a digitised/compressed source (e.g. DV, MPEG...).
This source is stored in YUV format (MPEG=(4:2:0)=YV12). If you use ordinary
software on a PC, the format is converted into the RGB domain. This takes some
time (9 multiplications and 3 additions per pixel) and due to some
implementation issues it degrades the quality. Then you can cut, edit and do
processing on this RGB format. When you are done with that, you probably want to
encode it. Then this RGB is transformed into YUV again and the stream is coded.
So to give you an example when you are using FlasK: Decode the MPEG-file to YUV
(4:2:0) format. Calculate the missing UV components because it is transformed to
YUV (4:4:4). Then it is transformed to RGB. After that, the scaling and
de-interlacing will be performed. This format is then fed to an encoder.
And inside this encoder the RGB is transformed to RGB -> (4:4:4) -> (4:2:0).

Therefore I have extended the Premiere interface so that it is also able to
export YUV (4:4:4), YUV (4:2:2), RGB24 and RGB32. So if you are using the latest
version of FlasK (Xis versions) the processing chain is in the YUV format and is
able to export it with my plugin in this YUV format. This is the main reason why
it is so much faster. It does not do all of these transformations, which are
completely unnecessary.

Unfortunately not all encoders can take YUV as input. To date, I have found that
CCE SP, Windows Media encoder vx.x and many codecs (e.g. DV/DIVX/MPEG4/HUFFYUV)
can work with YUV input. If you have a license for encoders that do not support
YUV processing, I would suggest you to e-mail the authors for support and ask if
they would implement it. It is very simple to implement this feature (it only
has to skip some processing). I have already e-mailed the author of TMPGEnc (did
not get any response) about it, but I can imagine that it is hard for him to
implement it, because all this processing is done in RGB. But if you want to
have a faster TMPGEnc, you can send him an e-mail to find whether he is willing
to implement YUV input or not.

           RGB24    RGB32  YV12   YUY
Ligos        x        x
TMPGEnc      x        x
CCE SP       x        x            x
bbMPEG       x        x
DIVX         x        x      x     x
HUFFYUV      x        x      x     x


About the dual pass.
--------------------
Dual/multipass encoding enables you to encode video with high quality.
Because you can specify the exact bit rate that the encoder must
use, you can use your disc space (CD-R) completely. Personally, I
always use dual/triple pass encoding to completely fill an 80 min disc.
With this method I am able to fit 1 hour of high quality progressive
video on single 80 min CD-R discs (SVCD).

Split function with TMPGEnc:
----------------------------
With this function you are able to split your video
stream while encoding (so there is no post processing). So you
can create 2 VCD streams in one go. (No need for splitting
of the encoding anymore, just drag the files into e.g. NERO).

Please read the splitguide on my site (www.videotools.net)

How to use the benchmark for FlasK ?
------------------------------------
Options->Select Output Format->Video Server
Options->Output Format Options->General(tab)Enable benchmark
Options->Global project->General->Compile time ~100sec
         (A longer compile time is more accurate. You need a minimum of
          500frames for reliable results).
Run->Startconversion
Now a file c:\benchmark_results.txt is written. Please fill in the
requested data for comparison. You can send me the results if you like.

Guides:
-------
There are many good guides on how to use this plugin. You can find a guide
and some good links on my site (www.videotools.net). The site www.rmvos.nl
has the latest info about this plugin most of the time.
So maybe you should start looking there first.

Tested operating systems:
-------------------------
I have personally tested it on Windows 98, NT and Windows 2000.
So this should be no problem.

Tested programs:
-------------------------
Premiere v5.x         (RGB only)
Premiere v6.x         (RGB only)
FlasK v0.x            (RGB only)
multipass FlasK v0.6  (RGB only)
multipass Xis x.x     (RGB,YUY,YV12)
DVDx v1.6             (RGB only)


Links:
-------------------------------------------------------
Window Media Encoder v8 (free download)
http://www.microsoft.com/windows/windowsmedia/download/

Cinemacraft Encoder SP v2.62 (trial version)
www.doom9.net

TMPGEnc (free download)
www.tmpgenc.com

VirtualDub (free download)
www.virtualdub.org

BUGS:
-----
If you find a bug, please send me an e-mail so that I am able to fix it.

Known problems:
---------------
-DVDx 1.6 will crash at 99%. This happens if you try to export more frames
 than there actually are in the DVD-movie. So I recommend that you lower the
 number of frames, so that the final video will be 30sec shorter than the
 DVD. (You only skip the "credits"). To date I have not able to
 create a workaround for this. Hopefully the author of DVDx will fix this soon.

-If the proxy server of virtual dubb is enabled. The AVIroutines from windows
 will not work correctly as discribed in the readme of virtualdubb. As a result
 the plugin is not able to create the AVIfile correctly. Please run the proxyoff.reg
 file from the virtualdubb package.

-VirtualDub does not recognise the bits per sample of the audio correctly. 
 Turn on "Full processing mode" in the audio menu. 
 	Audio conversion->Precision->16bit.
 It is possible to enable a bug workaround for this, but as CCE SP 2.62
 crashes with this workaround it is not enabled by default. Please read the
 documentation on my site.

-TMPGEnc is not able to read AVS-scripts correctly
 Disable the DirectShow filters in TMPGEnc when using AVISynth. You can find out
 on my site how to do this.

-Encoder/player will not read the AVISynth-scriptfile ? I noticed that many
 "new" programs do NOT use the Windows functions to read the AVI-files. If they
 do NOT use those standard Windows functions the AVISynth- files will  not work.
 Known programs that do NOT use those routines are CCE SP v2.62, Windows Media
 Encoder vx.x Furthermore, I heard that there are problems with Windows Media
 Player 7.

-You can NOT serve to the Media Player v6.4 in Windows 98 while using the AVI-
 Wrapper mode. If you do open the created AVI in the Media Player using W98, it
 will result in a crash of your system. This is not a bug of the AVI-Wrapper but
 more than a shortcoming of the Media Player using W98. The problem is as
 follows: when the codec is getting the message to decode a frame, the Media
 Player sets the operating system in such a mode that no other application gets
 any CPU time. Because the codec gives a request to the server to decode a frame
 and waits 'till this is ready, it looks like your system hangs. The Media
 Player disables all other applications (and the server) and this frame will
 never be decoded and the Media Player waits forever..............

 To date, I have noticed that ONLY the Media Player does this while running
 under W98. So all tested encoders work fine while running W98.

Hope this helps....

Greetings,
   Edwin van Eggelen
   www.videotools.net
   edwinvaneggelen@softhome.net
