ISO/IEC MPEG-1 Video encoder   version 1.5g
Contents

1.1 Introduction
1.2 Changes and history
1.3 Remaining tasks
1.4 Usage
1.5 Acknowledgements
1.6 Nomencluature
1.7 List of files


1.1  Introduction

Version 1.5g of the ISO/IEC MPEG-1 Video Encoder has been printed as
document CD 11172-5 in April 1994.  This program has been succesfully
ported and tested on the IBM PC and various Unix workstations using
the GNU GCC compiler.


1.2 Changes 

1.4f to 1.4g:
- added .YUV, .TGA, and .PPM file formats

since 1.4

 - added big/little endian I/O to writebit.c (Stefan)
 - corrected temporal reference (Kinya)
 - corrected half-pel interpolation in B construction (Hirofumi, Kinya) 
 - added .TGA, .PPM, .YUV file formats (Chad)
 - clarified a lot of code with better organization and nomenclature (Chad)
 - fixed bug in motion.c that confused current_MB with current_picture 
   (Kinya, Hirofumi)
 - fixed bug in Write_MB() which did not reset forward MV to zero (Kinya,
   Hirofumi)


since 1.3
- user programmamble picture dimensions

 
1.2 Remaining task items
(as of April 14, 1994 version 1.5a) are:

 1.  Proper filtering (co-siting of chroma samples) in the 
     4:2:0 to 4:2:2 upsampling and downsampling process
    [this is currently implemented with greater accuracy in the MPEG-2 codec]

 2.  Temporal reference needs to be corrected.  This is generated
     in Write_GOP_Header() module.  
 
3.  VBV delay needs extra numerical precision.   It drifts 4 counts
     each picture from the correct value.
    [verified by Hiroshi Watanabe to be correct.  Need consensus.]

 4.  Implement drop frame in encoder.ini and t_Parameter
     [this is part of the Write_GOP_Header overhaul]

 5.  Implement tracefile


1.3 Usage.

 Variables and coding style are temporary.

 Legal picture rates are:

        No.     Picture rate (Hz)
        ----    -----------------
        1       23.976
        2       24
        3       25
        4       29.97
        5       30
        6       50
        7       59.94
        8       60

 Drop frame may be only used in Case No. 5.

1.4 Acknowledgements

Many people contributed to this project:  

Peter Au
Cheung Auyeung
Ron Burns
Diana Choi
Stefan Eckart
Chad Fogg
T. Hanamura
Hirofumi Nisikawa
Kinya Oosa
Arian Koster
Brian Quandt
Hiroshi Watanabe
[I hope I'm not forgetting anybody --Chad]


1.5  Nomenclature
[to be added to the "Definitions and abbreviations" section of 11172-5:


MB      Macroblock.
mquant  quantization_scale for macroblock.
M       Distance between P pictures.  M = 0 means no B frames.
N       Distance between I pictures.
value   VLC codeword value.  [Maybe a better word would be "code"]


1.6  List of files

encoder.pro
        File containing all module prototypes for all .c files.  This file
        is then called in the header (#include) of each .c file.

encoder.ini
        Initialization script file for encoder.  Sets frame rate,
        picture formats, picture dimensions, file names, etc.  
        (Formerly known as "paramFile").

reconstr.c
        macroblock reconstruction and prediction modules for
        intra, forward or backward, and interpolated (bi-directional).

decision.c
        Files related to macroblock decision making: intra/non-intra
        decision [ IntraCheck() ], motion compensated/no motion compensated
        [ CalSE() ], interpolated [ ICalSE() ], 

ratectrl.c
        Rate control functions.

dct.c
        Forward and Inverse quantization and DCT modules.

quantize.c
        Forward and Inverse quantization routines.

motion.c
        Block matching algorithm modules

writepic.c
        Reconstruction picture to file modules

readpic.c 
        Source input picture modules

initial.c
        Initialization routines

encoder.c
        Main() module

convert.c
        Picture format conversion modules involving any filtering,  
        interpolation, decimation or sample rate conversion.

