
JSVM_6_7 -> JSVM_6_8
====================

Date	    : Sep. 11, 2006
Author	    : Kai XIE (Thomson)

changes:


fixes: 
- Bug fixes for error concealment
- Bug fixes (very minor) related to the usage of FGS and FGS motion refinement (check consistency)



JSVM_6_6 -> JSVM_6_7
====================

Date	    : Sep. 05, 2006
Author	    : Reichel, Julien (GE Security)
Contribution: JVT-T083

changes:
- Modified Nal Header (3 bytes)
- Modified Slice header
- Removed the notion of KeyPicture, and replaced it by UseBasePrediction and StoreBaseRepresentation
- Added additional controls for the inter-layer deblocking filter.

fixes: 
- Partial fixes for the trace files
- Some test configurations had to be slightly modified


JSVM_6_5 -> JSVM_6_6
====================

Date	    : Aug. 28, 2006
Author	    : Shenqiu, Liuhui, Guoyi (USTC)
Contribution: JVT-T073

changes(changes can be found by seaching the comments in brackets):
- add nesting SEI message including scene information SEI message (JVT-T073)

fixes:
- LARDO bug fixes (//Bug_Fix JVT-R057 0806)
- Suffix NAL unit bug fixes, and BaseLayerMode 0. A lot of test configurations updated. (//bug-fix suffix)
- Use of temporal_level from suffix NAL units in bitstream extraction (bugfix)


JSVM_6_4 -> JSVM_6_5
====================

Date	    : Aug. 11, 2006
Author	    : N. Cammas (Orange-FT)
Contribution: JVT-T054

changes:
- enable SNR enhancement coded using EI, EP or EB slices
- add -keepf option to BitStreamExtractorStatic

fixes: 
- FragCABAC, FragVLC test configuration


JSVM_6_3 -> JSVM_6_4
====================

Date        : Aug. 4, 2006
Author     : T. M. Bae (ICU)
Contribution: JVT-T058

changes:
- Inter-layer motion prediction using FGS refined motion

fixes:
- remove forced multi-loop decoding flag in MCTFDecoder::xDecodeBaseRepresentation() (M. Wien, suggested by V. Bottreau)
- updated Validation tests to use correct upsampling method (V. Bottreau)
- updated Software Manual regarding dyadic downsampling with ESS and configuration (V. Bottreau, M. Wien)


JSVM_6_2 -> JSVM_6_3
====================

De-interleaving of 8x8 coefficients in FGS

Date        : July 28, 2006
Author      : J. Ridge (Nokia)
Contribution: JVT-T089

changes:
- De-interleave 8x8 coefficients to be processed as 4 4x4's
- Consolidation of significance pass routines in CABAC/CAVLC

+ DownConvert.inl fix provided by Shijun Sun (M. Wien)


JSVM_6_1 -> JSVM_6_2
====================

Modification for grouping of refinement coefficients

Date        : July 26, 2006
Author      : M. Shima (TI)
Contribution: JVT-T067

changes:
- Addition of refinement coefficients prescanning on encoder side
- Removal of possible random memory access on decoder side
- Minor modifications for "FragVLC" test

+ ARFGS fixes provided by Steffen Kamp (integrated by H.Schwarz)
+ removal of some Linux warnings (H. Schwarz)


JSVM_5_12_1 -> JSVM_6_1
=======================

Independent Parsing + Removal of AGS

Date        : July 24, 2006
Author      : H. Schwarz
Contribution: JVT-T079

- independent parsing as only possibility
- removal of AGS
- removal of multi-loop decoding mode



JSVM_5_12 -> JSVM_5_12_1
========================

Bug fixes

Date        : July 17, 2006
Author      : J. Vieron (on behalf of S. Kamp, Y.Bao and H. Schwarz)

- FGS (CBP 8x8) bug fixes 
- ARFGS bug fixes
- QP setting fix ("-mqp" command line parameter)  



JSVM_5_11 -> JSVM_5_12
======================

Extended Spatial Scalability (new implementation)

Date         : July 10, 2006   
Author       : J. Vieron
Contribution : JD6

Changes:

- File MbData.cpp was rewritten to support the new way of achieving ESS (i.e. inter-layer motion prediction)
- Minor changes in downconvert*.* files


JSVM_5_10 -> JSVM_5_11
======================

ROI Extraction & FMO in Progressive Refinement Slice

Date         : July 04, 2006
Author       : Tae Meon Bae 
Contribution : JVT-Q077, JVT-P113

Changes:

- FMO in FGS for  encoder/decoder
- Bitstream extraction with roi_id
- Bitstream extraction with FMO
 
Note:
- Added the parameter "-r" to Bitstream extraction to extract ROI in the bitstream.
  
- FMO is working with FGS layer. the "macroblock to slice group map" is same for FGS and base quality layer.
  Decoder can handle a drop of a slice group when FMO enabled bitstream is decoded.
  Bitstream extractor is modified to handle FMO enabled bitstream. But bitstream guarantees correct bitrate control when the numbers of slice group of each layer is the same.

===================================
IROI signaling in Scalable Info SEI 

Date: July 01, 2006
Author: M.H. Lee
Contribution: JVT-S054

Changes:

- Support IROI coding in Progressive Refinement Slice

Note: The changes above can be found by searching "JVT-S054 (2)".




JSVM_5_9 -> JSVM_5_10
=====================

Multi Layer Quality Layers

Date         : June 24, 2006.
Author       : Manu Mathew <manu.mathew@samsung.com>
Contribution : JVT-S043

Changes:

- Added the parameter "-mlql" to Quality Level Assigner. If this parameter is used, 
  the quality level assigner will estimate quality layer Ids that are optimal for the top layer.
  This may improve the top layer(dependency_id) PSNR when the extractor truncates the bitstream using the option "-ql".

Note: If Quality level assigner uses the option -mlql, bitstream extraction using "-ql" may 
  result in the removal/truncation of some of the lower layer's(dependency_id's) FGS layers 
  even before all the FGS layers of a higher layer(dependency_id) are completely removed.

- Added the parameter "-qlord" to Bitstream Extractor. This parameter can be used to 
  simulate normal(ordered) quality layer extraction even if multi layer quality layer assignment was done.
  With this option, a lower layer's(dependency_id's) FGS packets are removed only aftre all the upper layer's
  FGS packets have been removed.

- The main changes can be found by searching for JVT-S043.


JSVM_5_8 -> JSVM_5_9
====================

Position calculation for SVC upsampling & Frame-based selected inter-layer pred

Date          : June 20, 2006
Authors       : Ji-Zheng Xu   Khai Zhang
Contributions : JVT-S067 and JVT-S051 

Changes:

- Implementing the SIP dynamic programming algorithm (JVT-S051) as an new project: SIPAnalyser.
- Added "EncSIPFile" in encoder.cfg. The encoder can encode consulting to the SIP decision results file.
- The encoder can output bits information used by SIPAnalyser.
- The extractor can discard packets selectively by setting the additional option "-sip".
- Implementing JVT-S067

Note: The changes above can be found by searching "JVT-S051".

-Bug fixes. (Can be found by searching "BUG FIX Kai Zhang")



JSVM_5_7 -> JSVM_5_8
====================

IROI signaling in Scalable Info SEI 

Date: June 1, 2006
Author: M.H. Lee
Contribution: JVT-S054

Changes:

- Read IROI parameters in cfg files
- writing and reading  of IROI slice division info in Scalable Info SEI
- Coding of multiple slices according to IROI slice division info

Note: The changes above can be found by searching "JVT-S054".



JSVM_5_6_1 -> JSVM_5_7
======================

Improved Management of Scalability Information using Control Operations 

Date: May 28, 2006
Authors: Hao Zhang, Alex Eleftheriadis (Layered Media, Inc.)
Contribution: JVT-S080

Changes:

- Added "scalability_info_layers_not_present" and "scalability_info_dependency_change" SEI messages.
- Enabled transmission of these two messages when layers are extracted in the bitstream extrator. 
  The default behavior, however, of transmitting a modified scalability_info SEI message has been 
  retained, rather than transmitting the original scalability_info followed by a scalability_info_layers_not_present
  message. This alternative behavior can be enabled by setting the compile-time flag UPDATE_SEI_MESSAGE
  to 0 in Extractor.h. 

Note: The changes above can be found by searching "JVT-S080 LMI". 


JSVM_5_6 -> JSVM_5_6_1
======================

Cleaning: Bug fixing and warnings removal

Date: May 23, 2006
Author: J. Vieron (on behalf of S. Kamp and H. Kirchoffer)

Changes:

- Unused/Uninitialized variables methods
- Shadowing variables 
- Bug fixes for the handling of the AR-FGS parameters 
- Bug fix in Extractor.cpp regarding the assignment of uiShrinkSize  


JSVM_5_5 -> JSVM_5_6
====================

High-level syntax change & scalability info SEI plus

Date: May 22, 2006
Authors: Shujie Liu, Qiu Shen, Hui Liu (USTC)
Contributions: JVT-S035/S036/S038/S040

Changes: 

- Added "MMCOBaseEnable" and "SuffixUnitEnable" in encoder.cfg
- Syntax changes in nal_unit_header_svc_extension header and slice header
- Added detection of suffix nal unit in the decoder
- Added MMCO & sliding window operation for base representations
- Some syntax changes of scalability info SEI message

Note: The changes above can be found by searching "JVT-RS036 lsj". 
 
- Minor Bug fixes (QLAssigner + Encoder Trace)


JSVM_5_4 -> JSVM_5_5
====================

Simplification of Up-sampling process of IntraBL Mode

Date: May 15, 2006
Authors: C. Zhang (Zhejiang Univ.)
Contribution: JVT-S055

Changes:

Use 2-tap bilinear up-sampling filters for chroma.


JSVM_5_3 -> JSVM_5_4
====================

Cleaning: mainly Memory leaks fixing + warnings removal

Date: May 13, 2006
Authors: J. Vieron (Thomson), S. Kamp (RWTH), B. Maschelein (IMEC)

Changes:

- Several Memory leaks fixing 
- Uninitialized variables
- Shadowing variables 
- Removal of unused variables, methods


JSVM_5_2 -> JSVM_5_3
====================

FGS improvements for VLC

Date: May 09, 2006
Authors: Yan Ye (Qualcomm)
Contribution: JVT-S066/S058/S031

Changes:

- modified coding order (Justin Ridge, Nokia)
- improvements to FGS for VLC (S066)
- VLC selector for 4x4 transform blocks (S058)
- Modified VLC for refinement pass (S031)
- FGS Scan Vector fixes (N. Cammas- France-Telecom)


JSVM_5_1 -> JSVM_5_2
====================

Unification of FGS

Date: April 27, 2006
Authors: Justin Ridge (Nokia), Nathalie Cammas (France Telecom R&D)
Contribution: JVT-S077

Changes:

- Convert "regular" FGS to subband approach
- Remove specific routines for AR-FGS ordering (now a single method)
- Add "vector mode" coefficient ordering in FGS
- Tidy-up: removed unused variables and parameters from FGS
- Added some checks to the FGS decoder to avoid "empty" cycles and unnecessary initMb calls



Bug fixes & software manual improvements

Date: April 28, 2006
Author: Heiko Schwarz (in behalf of Martin Winken & Jerome Vieron)

Changes:

- bug-fix for real single-loop decoding at the decoder side (Martin Winken)
- bug-fix for validation scripts (Jerome Vieron)
- update of software manual regarding validation scripts (Jerome Vieron)
- update of software manual regrading error concealment (Chen Ying)
- re-implementing the packet trace option for the bit-stream extractor (Heiko Schwarz)
- update of software manula regrading the packet trace option (Heiko Schwarz)
- added parameter MeQPLP for controlling ME/MD of key pictures - no effect by default (Heiko Schwarz)



JSVM_5_0 -> JSVM_5_1
====================

Skip mode for SVC slice data
Independent parsing (as option in software)
MCTF pre-processing
Remove MCTF and open-loop coding from encoder
Software manual

Date: April 24, 2006
Author: Heiko Schwarz (Fraunhofer HHI)
Contribution: JVT-S068, JVT-S069, JVT-S070, JVT group decision

Changes:

- added skip mode for SVC NAL units
- added independent parsing as software option
  - it is disables by default
  - can be enabled by the layer configuration parameter "IndependentParsing"
    or by the command line parameters "-ipars" and "-aip"
- removed MCTF and open-loop coding from encoder
- added a MCTF pre-processing tool
- added following command line parameters to the encoder:
  "-org", "-rec", "-ec", "-vlc", "-cabac"
- removed following parameters from layer configuration file
  "UseIntra", "AdaptiveQP", "UpdateStep"
- slightly redefined parameter "ClosedLoop"
  -> value 0 now also specifies closed-loop coding



JSVM_5_0 == JSVM_4_12
=====================

no changes



JSVM_4_11 -> JSVM_4_12
======================

Redundant Pictures

Date: April 14, 2006
Authors: Jie Jia, HaeKwang Kim, HaeChul Choi, JaeGon Kim ( Sejong Univ. / ETRI )
Contribution: JVT-Q054

Changes:

1) Add "UseRedundantSlc" in layer config file.
2) With UseRedundantSlc = 1 in layer config file (enable coding redundant picture), one redundant picture will be encoded for each primary
 coded picture without FGS picture.
3) In the decoding process, detection of the redundant coded picture has been added. When the primary coded picture has been decoded
 correctly, the redundant one will not be decoded, or else, the redundant one will be decoded.
( The current redundant picture tool does not support multiple slices per picture for the time being. )

Note: The changes can be found by searching JVT-Q054 tag. 

4) Bug fixes related to LA-RDO (can be found by searching "Bug _Fix JVT-R057" in GopEncoder.h and CreaterH264AVCEncoder.cpp).


JSVM_4_10 ->JSVM_4_11 
===================== 

SVC frame loss concealment

Date: April 12, 2006
Authors: Y. Chen, K. Xie, J. Boyce , J. Vieron (Thomson)
Contribution: JVT-Q046
  
Changes: 

1. Add argument [-ec n] in the decoder command line, enabling Error Concealment algorithm selection. The following values 
are supported for n: 1: BLSKIP;  2: RU; 3: Frame copy; 4: Temporal Direct; 5: Frame Level Frame Copy. 
Only support AVC Compliant base layer (i.e. BaseLayerMode = 1 in encoder.cfg) 
 
2. Temporal Direct Error Concealment mode  
   1) Some methods in MbDataAccesss  
   2) initMbTDEnhance() in MbDataCtrl 
   3) getDistScaleFactorVirtual() in sliceheader 
 
3. MMCO and RPLR 
   1) setDefaultMmcoBuffer() in sliceheaderbase to generate MMCO commands for a missing slice 
   2) readSliceHeaderVirtual() will use the above function and will also generate necessary RPLR 
   commands for a missing slice.  
 
4. Detect missing packets 
   Currently we use the hierarchical B picture GOP Structure to do the packet loss detection 
   and to generate some information for a virtual packet which was lost.  
   Most of the work is done in checkSliceGap(). And other related process is in H264AVCDecoder 
   and NALUnitParser. 
   Do not support slice fragment currently   

5. Virtual Packet decoding 
  1) getTrueSlice() will be frequently used to separate processes between a correctly received 
     packet and a virtual packet. 
  2) getPrdRefListsFromBase() will get the base layer reference list sizes and RPLR commands for
     enhancement layer.  
  3) one of the error concealment methods will be invoked in xDecodeBaseRepresentation() for 
     spatial scalable packet decoding 
  4) xProcessSliceVirtual() corresponding to xProcessSlice() will give a virtual slice decoding
     for a lost packet. 
  5) A FGS packet will be handled as lost if its lower quality level packet is lost 
  6) readSliceHeaderVirtual() will give almost all the slice header level syntax elements for a 
     lost packet.  
  7) readVirtual() in SliceReader will process a parser for all virtual MBs in a lost packet.  
  8) readVirtual() in MbParser will handle the MB level error concealment process (A virtual parser
     to set the modes etc)for TD, FC and BLSKIP methods. 
  9) processVirtual() give base layer error concealment process for TD and FC (A virtual decoding 
     process to get the reconstructed picture for a lost packet) 
 10) New function to support decoding bit-stream group. One bit-stream can be wrapped several 
     times with an END_OF_STREAM NAL among them for the error resiliency tests. nCount in H264AVCDecoderLibTest.cpp 
     should be adjusted. 

Note: All the modifications above can be found by searching TMM_EC tag.


6. Bug fix in Extractor.cpp (provided by S. Kamp [kamp@ient.rwth-aachen.de]) to enable a correct truncation of
    the FGS packets.

7. Bug fix in MbData.cpp (provided by J. Vieron [jerome.vieron@thomson.net]) on the ESS part.

8. Add definition of _JSVM_VERSION_ (i.e. preprocessor command: #define _JSVM_VERSION "4.11") in CommonDefs.h. 
   This define shall specify the current version of the JSVM software. The files BitstreamExtractor.cpp, H264AVCEncoderLibTest.cpp 
   and H264AVCDecoderLibTest.cpp are modified accordingly.




JSVM_4_9 -> JSVM_4_10
=====================

Loss-aware rate-distortion optimization integration
Improvement to the implementation of non-required picture SEI message

Date: April 08, 2006 
Authors: Yi Guo, Qiu Shen
Contributions: JVT-R057 and JVT-Q066

Changes:

1. LA-RDO (you can find these changes by search "JVT-R057 LA-RDO")
   1) Add the channel propagation distortion to the RD-cost in the mode decision functions.
   2) Add the calculation of the distortion map in the following functions: encodeIntra(),encodeInterP() 
      and estimatePrediction().  
   
2. NonRequired (you can find these changes by search "JVT-Q066 (06-04-08)")
   1) Change the uiLayer of NonRequired SEI in Extractor::xAnalyse().
   2) Change the condition of set bkeep in Extractor::xExtractLayerLevel().
   3) Change the initial value of NonRequired SEI in SEI::NonRequiredSei::NonRequiredSei().
   4) Set and Write NonRequired SEI in MCTFEncoder::xEncodeLowPassPictures() and MCTFEncoder::xEncodeHighPassPictures().
   5) Set the flag of Writting NonRequired SEI in H264AVCEncoder::xProcessGOP().
   6) Add the m_pcNonRequiredSei to class H264AVCENCODERLIB_API AccessUnit.
   7) Add "NonRequiredEnable" in encoder.cfg.
   8) Add "IDRPeriod" which should be integral times of GOP size in layer0(1,2..).cfg.

3. Bug-fix (You can find the changes by search "BUG_FIX Shenqiu (06-04-08)")

JSVM_4_8 -> JSVM_4_9
====================

Decoder-side improvement for FGS with motion refinement 

Date: March 28, 2006
Author: M. Winken (HHI)

Changes:

1) only single-motion compensation at decoder side
2) bug fix for open-loop coding



JSVM_4_7 -> JSVM_4_8
====================

Cleaning of DownConvert 

Date: March 27, 2006
Authors: P. Dagois and J. Vieron (Thomson)

Changes:

1) main.cpp (DownConvert): Cleaning of DownConvert Tool to make it easier to use.
2) DownConvert.h: Cleaning of unused functions + re-organization.
3) Removal of "DownConvertTmm.inl" file
4) Addition of a new file "DownConvertTools.inl"
    This file contains all the functions that are only used in the DownConvertStatic Tool .
5) DownConvertStatic.vcproj: "DownConvertTmm.inl" is replaced by "DownConvertTools.inl"
6) DownConvert.inl contains now only the functions specific to the JSVM software (upsampling methods) 
    as well as the common functions between the DownConvertStatic Tool and the JSVM software.
7) main.cpp (PSNR): Removal of "spatial resampling" (i.e. call to downconvert methods) in PSNR tool.
8) PSNRStatic.vcproj: Removal of "DownConvert.h"
9) Validation scripts (New Version 0.0.4): Modified in order to use new tools. Re-indent with spaces.



JSVM_4_6 -> JSVM_4_7
====================

EIDR, 
Non-required picture SEI message (Bug fix), 
Bitstream extractor bug fix

Date: March 26, 2006
Authors: Qiu Shen, Hui Liu, Ye-Kui Wang, Houqiang Li
Contributions: JVT-R053 and JVT-Q066 

Changes:

1. EIDR (you can find these changes by search "EIDR JVT-Q065")
1)	Delete the part of POC reset of IDR in PocCalculator::calculatePoc() / setPoc()
2)	Set m_bUnusedForRef in IntFrame::copyAll() / copy()
3)	Move xClearOutputAll() for IDR from DecodedPicBuffer::xStorePicture() to DecodedPicBuffer::initCurrDPBUnit()
4)	Make a decision of whether add the picture to reference list in MCTFEncoder::xEncodeLowPassSignal()
5)	Init m_bUnusedForRef of m_papcFrame in MCTFEncoder::xInitGOP()
6)	Change the process of get reference list and reference picture number in 	Encoder::xGetPredictionLists() /  		xGetBQPredictionLists() / xGetCLRecPredictionLists	() / xGetFrameNumList()
7)	Change the mode decision process according to the size of reference list and BLSkip mode enable flag in 			MbEncoder::encodeInterP() / estimatePrediction()
8)	Decide whether BLSkip mode can be used in EncoderCodingParameter::xReadFromFile()

2. NonRequired (you can find these changes by search "NonRequired JVT-Q066")
1)	Add a parameter of m_uiNonRequiredPic in H264AVCDecoder::initPacket() / CreaterH264AVCDecoder::initPacket() 

3. Bitstream Extractor(you can find these changes by searching "// BUG_FIX liuhui")
1) Modify scalability SEI message information
2) Add the minimum layer bitrate information in display
3) Fix some potential bugs



JSVM_4_5 -> JSVM_4_6
====================

Adaptive motion refinement for FGS
FGS processing in transform domain

Date: March 22, 2006
Author: Martin Winken, Heiko Schwarz (HHI)
Contribution: JVT-R022

Changes:

1) Added motion estimation to RQFGSSubbandEncoder, using new function
   RQFGSEncoder::xMotionEstimation()
2) Mode decision for FGS is done in new function MbEncoder::encodeFGS(),
   which evaluates R-D costs for the inter macroblock modes as well as
   for simply requantizing the residual using the same prediction signal
   (new function MbEncoder::xEstimateFGSSkip())
3) Baselayer residual for inter-layer prediction is now stored in
   IntFrame* FGSCoder::m_pcBaseLayerSbb and added in RQFGSEncoder::reconstruct(),
   so the calls to MCTFEncoder::xAddBaseLayerResidual() in MCTFEncoder::xEncodeFGSLayer()
   have been removed.
4) FGS motion data are encoded in RQFGSEncoder::xEncodingFGS()/xEncodingSubbandFGS()
   using new functions RQFGSEncoder::xEncodeMotionData(), MbCoder::encodeMotion()
5) Decoding of FGS motion data is done in RQFGSDecoder::xDecodingFGS()/xDecodingSubbandFGS()
   using new functions RQFGSDecoder::xDecodeMotionData(), MbParser::readMotion()
6) At the decoder motion-compensated prediction using FGS motion data is done in
   MCTFDecoder/H264AVCDecoder::xReconstructLastFGS()
7) Inter-layer motion prediction uses Base Quality motion data which is stored in
   MbData::{m_eMbModeBase,m_aBlkModeBase,m_apcMbMotionDataBase}

8) FGS processing in transform domain (JVT decision)



JSVM_4_4 -> JSVM_4_5
====================

Simplified VLC update integration

date: march 19, 2006
author: Masato Shima (TI)
contribution: JVT-R021

changes:

1) Addition of VLC updating function at the end of macroblock iteration
  * FGSSubbandDecoder.cpp: placing function calls of "m_pcSymbolReader->RQupdateVlcTable()"
  * UvlcReader.cpp       : adding definition of "UvlcReader::RQupdateVlcTable()"
  * FGSSubbandEncoder.cpp: placing function calls of "m_pcSymbolWriter->RQupdateVlcTable()"
  * UvlcWriter.cpp       : adding definition of "UvlcWriter::RQupdateVlcTable()"

  * Minor changes (function declaration or so) in the following files
    - CabacReader.h
    - MbSymbolReadIf.h
    - UvlcReader.h
    - CabacWriter.h
    - MbSymbolWriteIf.h
    - UvlcWriter.h

2) Removal of old VLC updating function
  * UvlcReader.cpp: removal of "UcBitGrpReader::xUpdate()"
  * UvlcWriter.cpp: removal of "UcBitGrpWriter::xUpdate()"

3) Minor modification to build with VC6.0
  * MbEncoder.cpp
  * FGSSubbandDecoder.cpp



JSVM_4_3 -> JSVM_4_4
====================

Weighted prediction (encoder algorithm)

Change log:
Date: March 17, 2006
Author: Purvin Pandit (Thomson)
Contribution: JVT-P064

Changes:

1) Added weighted prediction algorithm for encoder (scale and offset)
2) Weights for the Enhancement layer are always inherited if the corresponding base layer picture exists otherwise they are calculated
3) Only scales are used in wp. Offsets are never used although code has been provided.



JSVM_4_2 -> JSVM_4_3
====================

Smoothed reference prediction

date: march 11, 2006
author: Woo-Jin Han (Samsung Electronics)
contribution: JVT-R091

changes:

1) According to JVT-R091, an additional prediction using smoothing function is added for single-loop decoding case. Smoothing function is applied to the sum of MC prediction and base-layer residual signal.

2) New mode is signalled by additional syntax item only when the base_mode_flag and residual_prediction_flag are set.

3) In motion estimation process, new functions to compute R-D cost of smoothed reference prediction are added for both 4x4 and 8x8 transform cases.

4) New short-term test "SmoothedRef" is added.

major S/W changes:

 [ CommonLib changes ]

 IntYuvPicBuffer: 3 new smoothing functions -> smoothMbInside(), smoothMbLeft() and smoothMbTop()
 MbDataStruct: new MB variable -> m_bSmoothedRefFlag

 [ Encoder-side changes ]

 GOPEncoder: 
     xFixMCPrediction() (called in xCompositionStage)
       -> fix normal MC prediction with considerations of smoothed reference
     xFixOrgResidual() (called in xEncodeHighPassPictures)
       -> fix original residual with considerations of smoothed reference (necessary for FGS)
 MbCoder: code segment to call smoothedRefFlag() when base_mode_flag && residual_prediction_flag = 1
 MbEncoder:
     new process for smoothed residual prediction (in encodeResidual)
     new process for computing R-D cost of smoothed residual prediction (in estimatePrediction)
     (xEstimateMbSR, xSetRdCostInterMbSR, xSetRdCost8x8InterMbSR, and xCheckInterMbMode8x8SR)
 CabacWriter & UvlcWriter: smoothedRefFlag() -> write smoothed_ref_flag syntax item

 [ Decoder-side changes ]

 CabacReader & UvlcReader: smoothedRefFlag() -> read smoothed_ref_flag syntax item
 MbDecoder: code segment in xDecodeMbInter() to generate smoothed reference prediction
 MbParser: code segment to call smoothedRefFlag() when base_mode_flag && residual_prediction_flag = 1

JSVM_4_1 -> JSVM_4_2
====================

2-loop AR-FGS integration

date: march 6, 2006
author: Xianglin Wang (Nokia)
contribution: JVT-R077

changes:

1) Modified AR-FGS buffer usage at decoder. Now it uses pictures from DPB for AR-FGS reference. So it can handle  reference picture reordering, etc. Meanwhile, I also cleaned up some necessary buffers. 

2) According to JVT-R077, added decoder-oriented two loop FGS coding structure and a FGS entropy coder with a new coding order. 

3) A couple of bug fixes from Shijun after his integration. 

4) Bug fix recommendation from Heiko regarding an assertation failure in function xMarkShortTermUnused()



JSVM_4_0 -> JSVM_4_1
====================

ESS TOOLS INTEGRATION

date: february 18, 2006
authors: J.Vieron (Thomson) and S.Sun (Sharp)
contributions: JVT-Q038, JVT-Q015, JVT-R018, JVT-R006

changes:
 
 downconvert.inl:
 ----------------
 Cleaning of the initialisation. (very minor)

 downconvert.h, downconvertTmm.inl:
 ---------------------------------
 Cleaning. 
 -Removal of methods xInitFilterTmmResidual(), xDestroyFilterTmmResidual(),xGenericUpsample(),xUpsamplingFrame(),xUpsamplingBlock(), 
   xComputeLastSamplePosition(), xUpsamplingDataResidual ().
 -Removal of members m_pitmpDes4,m_pitmpDes8,m_pitmpDes16; 
                                   
 -Implementation of the upsampling 16 taps filter (adopted as normative cf. JVT-Q038)
 -Dyadic becomes a special case of ESS. For luma in the dyadic case, the previous method filters at phase 0 position while the ESS mode interpolates 
 at phase 1/2 [JVT-R018]
 -Implementation of ESS downsampling filters (seven new sets of filters) based on the sine-windowed sinc function. (This is a 12 tap filters)[JVT-R006]

 MbData.h , MbData.cpp:
 ----------------------
 Extension of the ESS mechanisms to support scaling ratios greater than 2 (cf. [JVT-Q015]) 
 (->Introduction of a new method "xInitInfoBaseDim")
 Various bug fixes.  
 
 main.cpp (DownConvert):
 ----------------------
 Replacement of "malloc" by "new".
  
 main.cpp (PSNR):
 ---------------
 Replacement of "malloc" by "new".
 
 EncoderCodingParameter.h:
 -------------------------
 Add of 4 new options in encoder config file:
 "ESSChromaPhaseX","ESSChromaPhaseY", "ESSBaseChromaPhaseX","ESSBaseChromaPhaseY"
 Changes in inititialisation of ResizeParameters.
  
 GOPDecoder.h,  GOPDecoder.cpp:
 -----------------------------
  Removal of method "fillPredictionLists_ESS". It has been replaced by a new piece of code in GOPDecoder.cpp (in method "xInitBaseLayer").
  The goal of "fillPredictionLists_ESS" and, now, of the new code, is to associate reference list index and POC on the entire GOP. It is mandatory 
  to support the Picture Level ESS.
 
 GOPEncoder.cpp:
 ----------------
 Changes related to chroma phase shift
 
 MbDecoder, MotionEstimation.cpp, MotionEstimationQuarterPer.cpp:
 ----------------------------------------------------
 Bug fixes to allow a real 1/4 pel refinement in case of ESS motion upsampling. 
  
 ResizeParameters.h,ResizeParameters.cpp:
 ----------------------------------------
 "m_acCurrentGop" replaces "m_pcCurrentGop".
 Initialisation of parameters related to chroma phases (m_iChromaPhaseX, m_iBaseChromaPhaseX...) [JVT-Q038,JVT-R018]
 
 SequenceParameterSet.cpp:
 ------------------------
 Dyadic case becomes a special ESS case ([JVT-R018]).
 Initialisation of parameter "m_uiBaseChromaPhaseXPlus1"(to support a correct chroma phase shift). [JVT-R018]
 
 
 SliceHeaderBase.cpp:
 --------------------
 Initialisation of parameter "m_uiBaseChromaPhaseXPlus1"(to support a correct chroma phase shift). [JVT-R018]

