Intra Coding Prediction Modes (Greg Conklin)
--------------------------------------------

As specified in the January, 2002 Geneva output document, 9 Intra
prediction modes have been implemented as described in VCEG-N54.DOC
as a configuable option.  A compiler define USE_6_INTRA_MODES has
been used in the code so that one could revert the code back to the
old 6 intra modes.  Simply define USE_6_INTRA_MODES and recompile
the code.

VLC Changes (Lois Kerofsky)
---------------------------

To implement the modifed VLC one functions in uvlc.c at the encoder 
was modified.  Also one function in uvlc.c at the decoder was modified.  
I did not go to the effort of changing file and variable names to 
replace UVLC with VLC.  This could be considered.

Functions modified are included within a define _EXP_GOLOMB.  This is 
defined at the top of each uvlc.c file.  The modified functions are:

ldecod\src\uvlc.c GetVLCSymbol
lencod\src\uvlc.c symbol2uvlc

I tested the code with an encode decode pair with _EXP_GOLOMB defined 
and a second pair with them undefined and the reconstructed images at 
the decoder are identical.  Once satisfied it is easy to remove the prior 
code.

I found two issues with the encoder.  The encoder trace file trace_enc 
does not contain correct bitstrings representing the codewords.  The trace 
of the original code gives many all zero codewords. The second issue I 
found is in the use of the function symbol2uvlc.  In some cases, this 
function is called with a syntax element having more info bits than the 
length of the code word.  The original code used only the last bits of info 
in building the codeword.  In the modified code I mask out the last bits 
before building the codeword.  This bug could be traced further.

In my tests with doxygen I needed to disable the dot tool.
HAVE_DOT = NO

(KS) Note: dot is part of the ATT Graphviz tools available at
           http://www.research.att.com/sw/tools/graphviz

Transform and Quantizer (Antti Hallapuro)
-----------------------------------------

In addition to transform changes, I have also extended quantization range 
to [-8,39]. JVT decided that range should be extended, but the amount of 
extension was not quite clear. I decided to follow Sony's proposal since 
that is the only submission on QP range extension that I know. So, list 
of changes includes:

- New transform and quantization
- Extension of QP range to [-8,39]
- Removal of some unused code

I had some trouble with RD-optimized mode decision and extended QP range. 
Mode decision was not designed to work beyond QP range [0,33] so I had to 
put in a hack that prevents performance drop when encoding beyond that range. 
In fucntion vcalled RD_Mode_Decision lambda is now computed as

if (img->qp >= 0 && img->qp < 34)
  rdopt->lambda_mode = 5.0 * exp (0.1 * qp) * (qp + 5.0) / (34.0 - qp);
else
  rdopt->lambda_mode = 0.9*pow(2, qp/3.0);

"rdopt->lambda_mode = 0.9*pow(2, qp/3.0)" seems to works fine for whole QP 
range although I did't test it extensively. I propose using that formula 
exclusively.

There seems to be a bug in jm 1.2 decoder. If I encode mobile_cif at QP 0 
and wihout RD-optimizations and decode resulting bitstream the decoder 
crashes. It increased size of the decoding buffer, but this didn't fix the bug.

