/////////////////////////////////////////
tag 1.1.0

* libvvenc:
  - mostly about faster/fast speedups, minor improvements to other presets
  - redefined the presets
  - improved RC rate accuracy
  - added tool: BCW
  - added parameters: m_FIMMode, m_bIntegerET, (m_vvencMCTF.)MCTFSpeed, m_alfSpeed, m_IntraEstDecBit, m_BCW, m_motionEstimationSearchMethodSCC
  - removed parameters: m_useEarlySkipDetection
  - SCC coding: using alternative ME strategy, disabling LMCS
  - memory reduction (storing coeffs as 16bit, single storage for displacement/affine motion models, move objects rather than copy during search, garbage collection)
  - removed dynamic memory from partitioner
  - SIMD search for last coeff in DQ=0 RDOQ=2
  - combined regular and affine merge search into a single function
  - optimized motion search
  - RC cleanup
  - various cleanups
  
* vvencapp:

* vvencFFapp:
  - added options: IntegerET, FastInferMerge, MCTFSpeed, ALFSpeed, IntraEstDecBit, BCW, FastSearchSCC
  - removed options: ESD

* bugfixes:
  - fixed the TU-split z-partitioning
  - fixed the ECU option
  - fixed picture/sequence-level deblocking parameter management
  - fixed SwitchDQP option when used with multi-threading
  - fixed TemporalSubsampling (used in JVET AI test conditions)
  - fixed ALF covariance accumulation domain to double when required (LMCS+ALF+Hdr=pq)
  - fixed IDR coding with GOPSize==IntraPeriod
  - fixed short sequence coding (<3 frames) with MCTF

/////////////////////////////////////////
tag 1.0.0

* libvvenc:
  - add pkgconfig
  - rewriting the vvenc interface in c
    - restructuring vvenc.h and vvencCfg.h to pure C syntax
    - removing namespace vvenc and replacing all struct and enumx to typedefs with prefix 'vvenc'
    - removing file vvencCfgExpert.h and integrating all expert options into single struct vvenc_config
    - vvencCfg replacing existing lists/vector by fixed size arrays, std::strings are fixed size char arrays now
  - added IBC
    - added parameters m_IBCMode (0 - off, 1 - always on, 2 - on with SCC auto detection) and m_IBCFastMethod (1 - slowest with biggest gain to 6 - fastest with lowest gain)
  - improvements to rate control based on the XPSNR model
  - supports for generation of main10stillpicture profile bitstreams
    
* vvencapp:
  - adding parameter --version to show current version
  - changed parameter: -i/--input accepts "-" to indicate reading input from stdin
   
* vvencFFapp:
  - adding parameter --version/-v to show current version
  - vvenc::YUVWriterIf is replaced by callback function vvencRecYUVBufferCallback
  - changed parameter: -i/--InputFile accepts "-" to indicate reading input from stdin
  - added parameters IBC and IBCFastMethod as described in the libvvenc

* bugfixes
  - fixes #51, #47, #46, #37, #33 and many more
  - fixed AVX2 CCALF for non-multiple of 8 picture width
  - fixed PQ content encoding with LMCS
  - fixed C++17 compatibility
  - fixed level/tier auto-settings
  - fixed FastForwardToPOC and DebugBitstram options

/////////////////////////////////////////
tag 0.3.1.0

* libvvenc:
 - only supporting picture-level rate control, removed vvencCfgExpert::m_RCRateControlMode,
   vvencCfgExpert::m_RCKeepHierarchicalBit and vvencCfgExpert::m_RCUseLCUSeparateModel parameters.
 - added vvencCfgExpert::m_log2MinCodingBlockSize parameter to limit minimal coding block size (default: 2)
 - reduced and defragmented the used memory.
 - added new speed-ups and adapted fast and faster presets.
   
* vvencFFapp:
 - removed parameters --KeepHierarchicalBit, --RCLCUSeparateModel
   and --RateControl (defaults to 2 if target rate is set, 0 otherwise).
 - renamed parameter --InitialQP to --RCInitialQP.
 - added parameter --Log2MinCodingBlockSize (default: 2) to limit the minimal coding block size

* bugfixes
 - fixes #29
 - corrected motion vector clipping during DMVR process (might produce enc/dec mismatches).
 - fixed LMCS/ISP interaction (weighted SAD for blocks of width '1').

/////////////////////////////////////////
tag 0.3.0.0

* new:
 - support for HDR metadata (--hdr off, pq|hdr10, pq_2020|hdr10_2020, hlg, hlg_2020)
   - if using HDR, encoder decisions depend on the used mode and the enabled metadata. by default VUI and SEI metadata are enabled 
   - PQ: set vui parameter (transfer characteristics 16(smpte2084))
   - HLG: set vui parameter (transfer characteristics 1|14(bt709|bt2020-10)) + SEI AlternativeTransferCharacteristics 18
 - support for MasteringDisplayColourVolume and MaxContentLightLevel (SMPTE ST 2086 - HDR10/PQ)
   - MasteringDisplayColourVolume can be set by vector of 10 values:
     x,y,x,y,x,y,x,y,max,min  where: "G(x,y)B(x,y)R(x,y)WP(x,y)L(max,min)
     x,y coordinates for GBR and WP in increment of 1/50000
     max,min luminance in units of 1/10000 cd/m2 
     0 <= x,y <= 50000, 0 <= max,min <= 10000, 
     
     Example for a P3D65 1000-nits monitor, where 
     G(x=0.265, y=0.690), B(x=0.150, y=0.060), R(x=0.680, y=0.320), 
     WP(x=0.3127, y=0.3290), L(max=1000, min=0.0001):
     13250,34500,7500,3000,34000,16000,15635,16450,10000000,1
   - MaxContentLightLevel can be set by vector of 2 values:
     cll,fall  where cll=max. content light level,fall=max. frame average light level,
     range: 1 <= cll,fall <= 65535
    
* changes:
 - align usage of vvenc interface for vvencapp and vvencFFapp (both apps are now using the lib in the same manner)
 - vvencapp is now using the command line parser of vvencFFapp, 
   but the command line params haven´t changed to prev. version for legacy support
 - help dialog re-designed, params are now sorted into categories
 
 - perceptually motivated QP adaptation (qpa) changed to on/off (mode 0-5 before) and uses XPSNR depending on HDR mode
   vvencapp: use --qpa  or --qpa 0|1 to enable/disable (enabled by default
   vvencFFapp:  use -qpa|--PerceptQPA   or -qpa|--PerceptQPA 0|1 to enable/disable (enabled by default
 - Level is set to auto per default. In this mode it will be automatically detected by given resolution


* bugfixes:
 - #18: setting of max number CABAC-coded coefficients for the floating point scalar RDOQ
 

* libvvenc:
 - changed preset configuration to reflect current Pareto-Optimal trade-offs. The new presets are much better harmonized between different
   resolutions and content types.
 - auto config initialization. The configuration to init the vvenc library now only needs required 
   parameter (width, height, framerate), everything else is set to default config
   some parameter are set to -1 per default. Params set to -1 will be set to default, auto config params:
   profile, level, threads, aud, vui, hrd, PerceptQPATempFiltIPic, RateControl, KeepHierarchicalBit, WppBitEqual, FEN
 - medium preset is now used as default (this has quite a big impact on default params in the vvencFFapp)
 - decreased memory usage
 - improved multi-threading (now can utilize up to 10 threads for HD and up to 24 for UHD, efficiency depends on preset and other parameters)
 - added the possibility to generate bitstreams for minimal drift in open-GOP adaptive switching.
 - various optimizations and speed-ups.

* vvencapp:
 - new parameter     -aud, --accessunitdelimiter [auto] Emit Access Unit Delimiter NALUs  (auto(-1),off(0),on(1); 
                             default: auto - only if needed by dependent options)
                     -vui, --vuiparameterspresent [auto] Emit VUI information (auto(-1),off(0),on(1); 
                             default: auto - only if needed by dependent options)
                     -hrd, --hrdParameterspresent [auto] Emit VUI HRD information (auto(-1),off(0),on(1); 
                             default: auto - only if needed by dependent options)
                     --hdr [off] set HDR mode (+SEI messages) + BT.709 or BT.2020 color space. 
                             use: off, pq|hdr10, pq_2020|hdr10_2020, hlg, hlg_2020

 - changed parameter --qpa [on] Enable perceptually motivated QP adaptation, XPSNR based (0:off, 1:on)
                             as legacy support the previous modes 1-5 are now mapped to on/1

* vvencFFapp:
 - new parameter     --MaxParallelFrames [-1] Maximum number of frames to be processed in parallel
                                     (-1: auto depends on number of threads, 0:off, >=2: enable parallel frames)
                     --hdr [off] set HDR mode (+SEI messages) + BT.709 or BT.2020 color space. 
                             use: off, pq|hdr10, pq_2020|hdr10_2020, hlg, hlg_2020
                     --MasteringDisplayColourVolume [[]] 
                                     SMPTE ST 2086 mastering display colour volume info SEI (HDR), vec(uint) size 10,
                                     x,y,x,y,x,y,x,y,max,min where: "G(x,y)B(x,y)R(x,y)WP(x,y)L(max,min)"range: 0 <=
                                     GBR,WP <= 50000, 0 <= L <= uint; GBR xy coordinates in increment of 1/50000,
                                     min/max luminance in units of 1/10000 cd/m2
                     --MaxContentLightLevel [[]]  Specify content light level info SEI as "cll,fall" (HDR) max. content light level,
                                     max. frame average light level, range: 1 <= cll,fall <= 65535'
                     --PreferredTransferCharacteristics [auto] 
                                     Specify preferred transfer characteristics SEI and overwrite transfer entry in VUI
                                     (0-18): reserved, bt709, unknown, empty, bt470m, bt470bg, smpte170m, smpte240m,
                                     linear, log100, log316, iec61966-2-4, bt1361e, iec61966-2-1, bt2020-10, bt2020-12,
                                     smpte2084, smpte428, arib-std-b67
                     --segment [off] when encoding multiple separate segments, specify segment position to enable segment concatenation 
                                     (first, mid, last) [off]
                                     first: first segment           
                                     mid  : all segments between first and last segment
                                     last : last segment
                     --FastIntraTools [0]         SpeedUPIntraTools:LFNST,ISP,MTS. (0:off, 1:speed1, 2:speed2)

 - changed parameter --qpa [off] Enable perceptually motivated QP adaptation, XPSNR based (0:off, 1:on)
                     -aud, --AccessUnitDelimiter [auto] Enable Access Unit Delimiter NALUs, 
                                     (default: auto - enable only if needed by dependent options)
                     -vui, --VuiParametersPresent [auto] Enable generation of vui_parameters(),
                                     (default: auto - enable only if needed by dependent options)
                     -hrd, --HrdParametersPresent [auto] Enable generation of hrd_parameters(), 
                                     (default: auto - enable only if needed by dependent options)
                     --Profile [auto] name to use for encoding. Use [multilayer_]main_10[_444][_still_picture],
                                     auto, or none
                     --Level [auto] limit to be used, eg 5.1, or none
                     --WppBitEqual [-1] Ensure bit equality with WPP case (0:off (sequencial mode), 1:copy from wpp line
                                     above, 2:line wise reset)
                     --RateControl [-1]  enable rate control (0:off 1:CTU-level RC; 2:picture-level RC; 3:GOP-level RC)
                     --KeepHierarchicalBit [-1]   Rate control: (0:equal bit allocation, 1:fixed ratio bit allocation, 
                                     2:adaptive ratio bit allocation
                     --PerceptQPATempFiltIPic [-1] Temporal high-pass filter in QPA activity calculation for key pictures 
                                     (0:off, 1:on, 2:on incl. temporal pumping reduction, -1:auto)
                     --SliceChromaQPOffsetPeriodicity [-1] Used in conjunction with Slice Cb/Cr QpOffsetIntraOrPeriodic. 
                                     Use 0 (default) to disable periodic nature.
                     --ColourPrimaries [unknown]  Specify color primaries (0-13): reserved, bt709, unknown, empty, bt470m, bt470bg,
                                     smpte170m, smpte240m, film, bt2020, smpte428, smpte431, smpte432
                     --TransferCharacteristics [unknown] 
                                     Specify opto-electroni transfer characteristics (0-18): reserved, bt709, unknown,
                                     empty, bt470m, bt470bg, smpte170m, smpte240m, linear, log100, log316, iec61966-2-4,
                                     bt1361e, iec61966-2-1, bt2020-10, bt2020-12, smpte2084, smpte428, arib-std-b67
                     --MatrixCoefficients [unknown] 
                                     Specify color matrix setting to derive luma/chroma from RGB primaries (0-14): gbr,
                                     bt709, unknown, empty, fcc, bt470bg, smpte170m, smpte240m, ycgco, bt2020nc,
                                     bt2020c, smpte2085, chroma-derived-nc, chroma-derived-c, ictcp
                     --RPR [1] can be now set to "2", in which case the encoder will impose constraints on the RASL frames
                                     allowing for minimal drift open-GOP adaptive switching (with or withour resolution change).
                     
/////////////////////////////////////////
tag 0.2.1.0

* bugfixes:
 - ISP fix: erroneous placed sanity check

* libvvenc:
 - decrease memory consumption
 - harmonize 2-pass rate control and perceptual QPA
 - improve rate control

/////////////////////////////////////////
tag 0.2.0.0

* new license
 - switched to modified 3-clause BSD

* bugfixes:
 - access unit delimiter (AUD) generation
 - DPH-SEI syntax

* new features:
 - ISP
 - TS (with automatic screen-content detection)
 - BDPCM
 - 2-pass rate control
 - 1-pass rate control with GOP32

* libvvenc:
 - added "slower" preset
 - redefined the presets according to current pareto-set
 - removed PredictionUnit type
 - various memory reductions (Rom.cpp, scaling list memory)
 - verious optimizations (SIMD for MCTF, forward transformation, single column IF; memory accesses for DMVR)
 - changed MCTF algorithm to do intermediate rounding between hor/ver filtering

* vvencapp:
 - new parameter      --refreshsec,-rs to define the intra refresh rate in seconds depending on the given frame rate.
                       Internally, the refresh rate in seconds is translated into the frames where the refresh is set.
                      --internal-bitdepth to define the internal bit-depth used in bitstream (default: 10).
                      --passes to control number of passes for rate-control
                      --segment to control chunkwise encoding configuration
 - changed parameter  --intraperiod,-ip is 0 per default because --refreshsec is used for that purpose instead.
                       In case of a value greater than 0, intraperiod overwrites refreshsec.
                       Abbreviation -q is now supported in addition to --qp.
                      --gopsize default changed to 32
 - fullhelp changed    All internal encoding parameters are now shown as strings when --fullhelp is called.
 
* build system:
 - using GnuInstallDirs
 - added basic tests
 - versioning using CMake
 - added support for address sanitizer

/////////////////////////////////////////
tag 0.1.0.1

* libvvenc:
 - VVEnc::init() correctly initializes SIMD for transformation (TrafoX86) and sample operations (BufferX86).
 
* vvencapp:
 - Improved speed because of the bugfix to libvvenc.

/////////////////////////////////////////
tag 0.1.0.0

* initial version

/////////////////////////////////////////


