Changes for Version JM 3.9 to JM 3.8
------------------------------------

Bug Fixes
* fix bitstream NAL encapsulation for slice modes 1,2 and interlace (KS)
* merge interlace buffer changes (KP/KS)
* fix encoder/decoder mismatch for SP-frames (MW)
* remove unnecessary calculations (AT)
* fix SP compiling warning (FW)
* disable 8x8 intra blocks in data partitioning mode (TO)

Cleanups
* remove dead code and variables (KS)
* free all prviously allocated memory (KS)

Note:
* FMO is currently broken

Changes for Version JM 3.8 to JM 3.7
------------------------------------

New features
* Adaptive Block-size Transforms (MW)

Changes for Version JM 3.7 to JM 3.6
------------------------------------

New features
* Loop filter complexity reduction [JVT-C094] (AJ)


Changes for Version JM 3.6 to JM 3.5
------------------------------------

New features
* support for FMO, see JVT-C089-C092 (SW)
  -> FMO requires RTP file format and ConstrainedIntraPrediction = 1

Bug Fixes
* many FMO and out-of-order slices related ones (SW)
* fix old QPs (KS)
* fix chroma coding (AT/KS)
* error concealment fix (YW)

Cleanups
* really remove old start codes (KS)
* remove some unused decoder functions (KS)

Note:
* in Version 3.5 and 3.6 is in the bit stream format the Slice mode broken
* RTP still has the ASCII Parameter Set format

Changes for Version JM 3.4 to JM 3.5
------------------------------------

New Features
* improved SP technique [JVT-c114] (FW)
* add syntax flag for switching (FW)


Bug Fixes
* new QP range bug fixes (chroma & SP coding) (AT/FW)
* SKIP mode support and Runlength Coding for SP frames (AT/FW)
* Modified lambda weight in RDO for SP frames (AT/FW)


Changes for Version JM 3.4 to JM 3.3
------------------------------------

New Features
* stuffing to prevent emulation of start-code [JVT-C064] (SR)
* New start-code for byte-stream format. (SR)
* New method for slice-level QP signaling [JVT-C136] (SR)
* QP range shifted to [0,51] (SR)
  -> use #define _OLDSTYLEQP_ for old range

Bug Fixes
* fix single reference frame problem (AT)
* fix B-Frame coding (AT)
* fix ADAPT_LAST_GROUP (DT)
* fix bit statistics (KS)
* fix search if _FAST_FULL_ME_ disabled (KS)

Cleanups
* remove old slice-level QP signaling (KS)
* remove old start codes (KS)
* large QP handling cleanups (KS)


Changes for Version JM 3.3 to JM 3.2
------------------------------------

New Features
* Consideration of MVs of Direct Mode Macroblocks in B frame MV prediction [JVT-C127] (AT)

Bug Fixes
* fix deblocking filter for B frames [JVT-C127] (AT)


Changes for Version JM 3.2 to JM 3.1
------------------------------------

New Features
* Skip mode motion compensation as defined in JVT-C027 (JL)


Changes for Version JM 3.1 to JM 3.0
------------------------------------

New Features
* Quantization range changed from [-8,39] to [-12,39] [JVT-B039] (AH)
* Simplified rounding for transform and quantization [JVT-C136] (AH)
* Simplified formula for intra 16x16 plane prediction [JVT-C136] (AH)

Bug Fixes
* fix RTP assert (DT)

Cleanups
* remove gcc warnings (KS)

Known Problems
* AFF + 1/8 pel motion compensation broken
* if "LastFrameNumber" is used, "FramesToBeEncoded" must be >= "LastFrameNumber"


Changes for Version JM 3.0 to JM 2.1
------------------------------------

New Features
* Signaling of "Clean" Random Access Points [JVT-B042, JVT-C083] (DT)

Bug Fixes
* error concealment fixes (TO)
* constrained intra prediction (GRC)
* align intra pred to CD text (GRC)
* adaptive frame/field fixes 
  - lambda calculation (LW)
  - average psnr output (LW)
  - fix slice modes 1 and 2 (LW)
  - fix data partitioning (TO)
* add adaptive frame/field parameter consistency checks (KS/LW)
* encoder frame buffer management changes for non-AFF mode (DT)

Cleanups
* remove old 6 mode intra prediction (KS)


Changes for Version JM 2.1 to JM 2.0b
-------------------------------------

New Features
* adaptive frame/field coding (LW)

Bug Fixes
* intra 4x4 prediction block availability (several people)
* DP fixes (TO)


Changes for Version JM 2.0b to JM 2.0
-------------------------------------
Bug Fixes
* fix array bounds overflow in cabac.c (KS/IM)
* fix byte sex issues in IFF (KS)
* add UNIX preparation script (KS)


Changes for Version JM 2.0 to JM 1.9
-------------------------------------
I dropped adaptive frame/field coding, so only bugfixes for this release

Bug Fixes
* decoder delta qp decoding fix (HS)
* correction of wrong calculation of written bits in CABAC mode 
  (correction according to the new coding engine) (DM)
* major cleanup of the routines related to the statistics reported 
  in stat.dat (DM):
  - correction of wrong calculation of used bits for header and mode info
  - addition of new table entries "motion info" and "stuffing bits"
    such that the sum of all entries matches _exactly_ the 
    plotted number of average bits/frame, which in turn is
    now equal to the number of bits reported on the console
* correction of wrong calculation of written bytes for CABAC in RTP mode  (DM)
* correction of total bits/frame printed out to the data.txt file for with B-frames (JL)
* fix mprr size for new intra pred modes (GC)
* fix frame_rate calculation for B-frames (GH)
* fix restriction on reference frames for intra frame period (KS)
* first step RPSL fixes (KS)
* fix RTP assert (WYK)
* tracefile fix (DC)
* fix spelling of config file parameter "NumberReferenceFrames" (MB)

Changes for Version JM 1.9 to JM 1.8
-------------------------------------
New Features
* Loopfilter revised (PL)
* INTRA-Prediction on unfiltered content (PL)

Bug Fixes
* use for each intra pred mode one CABAC context (DM)
* increase version number (KS)
* Interim file format updates (DT)

Cleanups
* GCC compatibility, remove warnings/unused variables (KS)
* Add UNIX Makefiles (KS/HS)


Changes for Version JM 1.8 to JM 1.7
------------------------------------
New Features
* New Intra Prediction Modes [JVT-B080] (GrC)


Changes for Version JM 1.7 to JM 1.4
------------------------------------
New Features
* New Arithmetic Coding Engine [JVT-B036, Moffat/Neal/Witten ACM98]
* Improved CABAC [JVT-B101] (GB)
* Improved MB Pred Modes [JVT-B054] (HS)

Bug Fixes
* Fix MB statistics (HS)
* Compile fix ERPS test (KS)
* Restrict qp_factor for CABAC initialization (DM/KS)
* Uses MAX_QP for IFF qp encoding (KS)
* Fix decoder TR calculation (again) (AT)
* Fix wrong concealment for B-frames and TR wrap around (KS)
* Correct error handling if first slice (or first frame) was lost (TO)
* Introduced macroblock map for concealment of lost or damaged macroblocks (TO)


Changes for Version JM 1.4 to JM 1.0
------------------------------------
New Features
* Interim file format according to Appendix III of WD-1 [JVT-A003] (DT)
* Transform and Quantizer changes [JVT-B008, JVT-B038] (AH)
* VLC update [JVT-B029] (LK)
* Updated Error Rebust Macroblock Mode and Reference Frame Selection [JVT-B102] (DK)

Bug Fixes
* DP & CABAC (TO)


Changes for Version JM 1.0 to TML 9.6
-----------------------------------

New Features
* ERPS works also with bitstream file

Bug Fixes
* Bitstream file works again with new reference frame buffers (KS)
* Leaky bucket memory allocation (KS/SR)
* Fix encoder memory leak (KS)
* Update workspace include path for Release mode (KS)
* Data partitioning fixes (TO)
* Update doxygen config files (KS)
* Data Partitioning / ERPS fixes (KS/TO)

Cleanups
* remove unused code (KS/TO)
* use free_mem?D in encoder (KS)

Changes for Version 9.6 to Version 9.4
--------------------------------------

New Features
* Data Partitioning (SW/TO)
* ERPS / Annex U functionality (KS)

-> see "Changes_detail.txt" for more details on changes

Bug Fixes
* align CABAC MV coding to document (DM)
* fixes for RD Optimization for error prone channels (DK)

Cleanups
* cosmetical .dat file updates (ZX/KS)
* Bitstream file cleanup

Changes for Version 9.4 to Version 9.0
--------------------------------------
New Features
* Block based interpolation at the decoder (AH)
* vbv multiple leaky buffer compliance feature (SR)
* 16x16 intra prediction clipping (GC)

Bug Fixes
* CABAC dquant mapping (GB)
* Interpolation filter fix (AH)
* Chroma mismatch fix (MG)

Cleanups
* move leaky buffer stuff into own files (KS)
* make leaky buffer output look less ugly (KS)
* remove some gcc -Wall warnings (KS)

Changes for Version 9.0 to Version 8.7
--------------------------------------
New Features
* Complexity reduced interpolation filer (AH)
* Interpolation outside the picture (AH)

Bug Fixes
* Fix the trace file bug (KS)
* add line breaks for CABAC trace file output (KS)
* Intra frame period fixes (YL)
* Some more bug fixes for the new added EC mode (TO/TSt/DK)
* correct picture numbers for B-frames (TO)


Changes for Version 8.7 to Version 8.6
--------------------------------------

* Code cleanups (KS)
  - removed old Loop filter Code (#if !defined LOOP_FILTER_MB)
  - removed non UMV code (#if !defined UMV)
* Bug fixing (KS)
  - correct SP frame coding for RTP file format
* Intra frame period (YL/KS)
  - known bug: decoder writes frames in wrong order
* Bug fix  (YW)
  - GOB update

Encoder:

* Removed the Interim File Format (TO)
* Bug fixes for Slice Mode 2 in case of small slices (TO)
* Bug fixes for Loop filter and Slice Mode 2 (TS)
* RTP-File Format added (SW)
  - currently only one partition per slice is allowed
  - Support for multiple (3) partitions per slice will follow
* RD Optimization for error prone channels added (DK)
* Minor cleanups (cosmetical work) (TO)
* Added new parameters to the Configfile (DK)
* Added headerbits to the statistics 

Decoder
* Removed the Interim File Format (TO)
* RTP-File Format added (StW)
  - currently only one partition per slice is allowed
  - Support for multiple (3) partitions per slice will follow
* Changes in find_snr for case of slice losses (TO)
* Some Bug fixes for the new added EC mode (TO)
* Modifications to detect slice/frame losses in RTP File Format (TO)
* Some modifications to enhance the robustness to loss of slices (TO)
* Changes in the Configfile for the new RTP File Mode (SW)
  - note that if the RTP File Format was chosen the Entropy coding mode
    that is given in the Configfile is ignored

Known Bugs
Encoder
* If Slice Mode 2 is chosen a tracefile name must be given
* A new parameter was added to the picture header of the 26L Format 
  to deal with packet losses. As no errors or packet losses appear in
  a bitstream environment this is nonsense and should be removed one time 
  (not really a bug)

Decoder
* The equivalent for item two of the known bugs in the encoder

Changes for Version 8.6 relative to Version 8.5
-----------------------------------------------

Decoder:

* the error concealment algorithms (EC) in VCEG-N62 has been supported (WYK, VV)
  - six files (3 .c files and 3 .h files beginning with "erc_") added
  - important modifications in other files are marked with "_ERROR_CONCEALMENT_"
    or "WYK", and EC can be disabled as stated in "defines.h"
  - modifications to make decoder robust and correct to slice/frame losses
  - all picture types (I, P, B, SP) are supported
* some trivial modifications (WYK)
  - some unused codes and bad brace and code indentations cleaned
  - encoded SP-frames displayed as "SP" instead of "P"

Encoder:

* The picture header as slightly changed (WYK)
  - the last parameter are utilized as RefPicID, the ID of non-B frames
  - a variable "int refPicID" added into the structure ImageParameters
* bug fixed for mismatch in SP-frames when RD-optimization enabled (RK)
* some trivial modifications (WYK)
  - some unused codes and bad brace and code indentations cleaned
  - encoded SP-frames displayed as "SP" instead of "P"


Changes for Version 8.5 relative to Version 8.4
-----------------------------------------------

* reformat software to comply with coding style (KS)

* convert comments to documentation comments (KS)

* Bug fix: bit counter (DM,KS)

* Bug fix: qp=0 not accepted (GS)

* Bug fix: mismatch if different frame qp settings (JL,KS)

* memory management cleanups (KS)
  - fix some memory leaks
  - check returned pointer after _every_ malloc/calloc

* use size checking string functions (KS)
  - replace sprintf and strcpy with snprintf and strncpy

* clean up exit calls (KS)
  - use common error() function for all error exits


Changes for Version 8.4 relative to Version 8.0
-----------------------------------------------

* Datapartitioning according to VCEG-M52 supported (TO)

* Output in InterimFileFormat supported (TO)

* Bugfixes for SliceMode 2 (fixed Bytes/MB) (TO)
  - adaptions for RLC of SkipMBs 

* Changed initialisation values for CABAC contexts (TO)

* PictureHeader and SliceHeader at the beginning of every slice (TO)

* RunLength and constrained intra prediction (RS)

* Implementation of delta-QP (IL)

* loopfilter simplification including a macroblock-based approach (PL)

* Removal of RD Quant (IL)

* Chroma coefficient removal (IL)


Changes for Version 8.0 relative to Version 6.1
-----------------------------------------------

* Fast Integer Pixel Motion Estimation (HS)
  - precalculation of SAD for all 4x4 blocks and all vector positions
  - SAD calculation of nxm blocks is based on 4x4 SAD's
  - search range center is the predictor of 16x16 block for all block sizes

* Extended Search range (HS, SW)
  - search range can be 39x39 at maximum
  - search range reductions for older reference frames or older reference frames
    and smaller blocks can be enabled in the configuration file

* Unrestricted Motion Vectors (HS, SW)
  - Unrestricted motion vectors for P- and B-frames
  - no range checking in Direct mode

* Adaption of P-Interval and Single Quantizer Change (primarily for MPEG-test) (HS)
  - the interval P-P can be adapted at the very end of a sequence to hit the last
    frame which then have to be specified in the configuration file
  - the quantization parameters can be changed once per sequence (config file)

* Rate-Distortion Optimization (HS, TW)
  - a rd-optimized mode can be enabled in the configuration file
  - in rd-opt. mode:
    - slightly modified rate-constrained motion estimation
    - rate-constrained macroblock mode decision
    - rate-constrained mode decision for 4x4 intra modes
  - the rd-opt. mode decision need to code (DCT, Q, Q^-1, IDCT, entopy coding)
    each block/macroblock several times

* Increased Frame Buffer (HS, TW)
  - the frame buffer for long term memory prediction is no longer restricted to
    five reference frames
  - the buffer size in the encoder will be adapted according to the number of reference
    frames given (config file) and the config file parameter "AdditionalReferenceFrame"
  - the buffer size in the decoder has to be specified in the config file
  - the parameter "AdditionalReferenceFrame" specifies a reference frame index which is
    considered during motion estimation
  - E.g:  NumberReferenceFrames=5, AdditionalReferenceFrame=19
    -> 20 reference frames are stored at encoder side
    -> the frames with indizes 0,1,2,3,4, and 19 are searched during motion estimation

* NAL/Slices (TO)
  - support of slices in both symbol modes
  - at the decoder UVLC symbols are decoded by the time they are needed, not for the whole 
    slice at one time (to be in line with the encoder)
  

* Added Motion Compensated Prediction with 1/8-pel MV-resolution: (TWe)
  - New Parameter in CFG-file to switch between 1/4- and 1/8-pel
  - New interplation filter for 1/8-pel MV-resolution added.
    a) reference frames are sampled up and stpred by a factor of 4 (1/4-pel resolution)
    b) 1/8-pel postitions are calculated on the fly by bilinear interolation
    c) all chroma values are interpolated with a bilinear filter
    d) items b) and c) lead to a slightly reduced gain compared to implementation
     in M20, but still a gain up to 1.0 dB is obtained comared to TML591. 
  Thus, further improvements are possible.

* General (all / KS)
  - Some clean-ups of data structures
  - removal of superfluous source and include files in the decoder

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
People:
KS      Karsten S’hring         suehring@hhi.de
AH      Antti Hallapuro         antti.hallapuro@nokia.com
AT      Alexis Michael Tourapis alexismt@ieee.org
AJ      Anthony Joch            anthony@ubvideo.com
DC      Doug Chin               dougchin@sandvideo.com
DK      Dimitris Kontopodis     dkonto@eikon.tum.de
DM      Detlev Marpe            marpe@hhi.de
DT      Dong Tian               tian@cs.tut.fi
GC	Guy Cote                guy@videolocus.com
GrC	Greg Conklin            gregc@real.com
GB      Gabi Bl„ttermann        blaetter@hhi.de
GS      Gary Sullivan		garysull@microsoft.com
FW	Feng Wu			fengwu@microsoft.com
HS      Heiko Schwarz           hschwarz@hhi.de
IL      Inge Lille-Langoy       Inge.Lille-Langoy@telenor.com
JL      Jani Lainema            Jani.Lainema@nokia.com
IM      Iole Moccagatta         imoccaga@lsil.com
KP      Krit Panusopone         KPanusopone@gi.com
LK      Louis Kerofsky          lkerofsky@sharplabs.com
LW      Limin Wang              liwang@gi.com
MB      Marcus Barkowsky        Marcus.Barkowsky@nt.e-technik.uni-erlangen.de
MG      Michael Gallant         mgallant@videolocus.com
MW      Mathias Wien            wien@ient.rwth-aachen.de
PL      Peter List              Peter.List@t-systems.de
RK	Ragip Kurceren 		ragip.kurceren@nokia.com
RS      Rickard Sj÷berg         Rickard.Sjoberg@era.ericsson.se
SR      Shankar Regunathan      shanre@microsoft.com
SW      Stephan Wenger          stewe@cs.tu-berlin.de
TO      Tobias Oelbaum          drehvial@gmx.net
TSt	Thomas Stockhammer	stockhammer@lnt.ei.tum.de
TW      Thomas Wiegand          wiegand@hhi.de
TWe     Thomas Wedi             wedi@tnt.uni-hannover.de
VV	Viktor Varsa		viktor.varsa@nokia.com
WYK	Ye-Kui Wang		wangy@cs.tut.fi
YL      Yann Lemaguet		yann.lemaguet@philips.com
YW      Ye-Kui Wang             wyk@ieee.org
ZX      Z. Xue                  jon_xz@yahoo.com
