/////////////////////////////////////////
tag 1.13.1

* libvvenc:
  - fix errors during library loading on old x86 CPUs associated with invalid instructions
  - necessitate SSE 4.1 support for x86(_64) architectures
  - fix rate control bug when using slice type adaptation improving accuracy
  - fix unaligned load/stores on ARM
  - allow usage of external nlohmann_json (set VVENC_ENABLE_THIRDPARTY_JSON=SYSTEM in CMake)
  - added optional unstable api extension allowing passing user data with input frames (off per default, preserving API and ABI compatibility)

/////////////////////////////////////////
tag 1.13.0

* libvvenc:
  - many ARM SIMD optimizations for both NEON and SVE
  - added parameters
    - m_GOPQPA: enableed GOP adaptive QP cascade (default: on if QPA off)
    - m_numParallelGOPs: allows to encode multiple GOPs at once, improving multi-threading for large number of threads (default: off)
    - m_fga (experimental): enables film grain analysis and embeds FGS SEI in the encoded bitstreams (default: off)
  - changed parameters:
    - m_DecodingRefreshType: added a DASH optimized mode VVENC_DRT_IDR_NO_RADL - starts each intra period with an IDR frame
                             without leading picture, allowing simple splitting into segments at each IDR.
  - preset adjustments:
    - 5% speedup for medium
    - 2% speedup for slow and slower
  - memory reduction for medium/fast/faster
  - bugfixes
  - cleanups

* vvencFFapp:
  - added parameters:
    - GOPQPA: enabled GOP adaptive QP cascade (default: on if QPA off)
    - NumParallelGOPs: allows to encode multiple GOPs at once (default: off)
    - FGA: enables the experimental film grain analysis (default: off)
  - changed parameters:
    - DecodingRefreshType: now also accepts values "6" and "idr_no_radl" enabling the new DASH optimized IDR only structure.

* vvencapp:
  - changed parameters:
    - refreshtype: now also accepts values "6" and "idr_no_radl" enabling the new DASH optimized IDR only structure.

/////////////////////////////////////////
tag 1.12.1

* libvvenc:
  - changed parameters (vvenc_config::) for proper VUI signalization:
    - m_aspectRatioIdc=1 per default (sar 1x1)
    - m_chromaLocInfoPresent=-1 and m_chromaSampleLocType=-1 per default (auto behavior depending on HDR/SDR mode)
      m_chromaSampleLocType is auto set, depending on m_horCollocatedChromaFlag and m_verCollocatedChromaFlag
      m_chromaLocInfoPresent=1 and m_chromaSampleLocType=2 for VVENC_HDR_PQ, VVENC_HDR_PQ_BT2020,
      VVENC_HDR_HLG, VVENC_HDR_HLG_BT2020, VVENC_SDR_BT2020
      else m_chromaLocInfoPresent=0 and m_chromaSampleLocType=0
    - m_aspectRatioInfoPresent flag is auto on, if m_aspectRatioIdc>0 or non-default Sar is given
    - m_overscanInfoPresent flag is auto on, when m_overscanAppropriateFlag is enabled
    - m_chromaSampleLocTypeTopField and m_chromaSampleLocTypeBottomField unused now (will be removed in next major release)
  - VUI defaults changed:
    - progressiveSourceFlag=1
    - nonPackedFlag=1
    - nonProjectedFlag=1

* vvencFFapp:
  - added parameters:
    - Sar: specify Sample aspect ratio - ratio of width to height (WidthxHeight)
  - removed unused parameter: ChromaSampleLocTypeTopField, ChromaSampleLocTypeBottomField
  - changed parameter section:
    - cleanup section "VUI and SEI options" into separate sections:
      "HDR/SDR and Color Options", "SEI and auxiliary options", "VUI options"
    - "ChromaLocInfoPresent" is now auto behavior "Signals whether chroma_sample_loc_type is present (-1: auto, 0: off, 1: on)")

/////////////////////////////////////////
tag 1.12.0

* libvvenc:
  - added parameters:
    - vvenc_config::m_mtProfile: defines how aggressively to boost multi-threading (0...3, where 0 is
      current multi-threading, and 3 contains all WPP, IFP and tile usage, use -1 for auto behavior
      depending on resolution and the number of threads used)
  - changed parameters (vvenc_config::):
    - m_numTileCols and m_numTileRows from uint32_t to int32_t (-1 for auto behavior, see m_mtProfile)
    - m_ifp and m_entropyCodingSynchEnabled from bool to int8_t (-1 for auto behavior, see m_mtProfile)
  - enabled capped constant quality factor (CQF) mode
    - constant quality mode (vvenc_config::m_QP set and ::m_usePerceptQPA enabled) with rate capping
      enabled with an absolute limit (::m_RCMaxBitrate)
  - minor (~5%) speedups to faster preset
  - improvements to low-delay encoding configuration
  - other minor optimizations, cleanups and bugfixes

* vvencFFapp:
  - added parameters:
    - MTProfile: set the multi-threading profile (0: current default - 3: use all MT optimizers, use
      -1/auto to automatically set depending on resolution and number of threads used)
  - changed parameters:
    - WaveFrontSynchro, IFP, Tiles: default value set to -1, with the behavior defined by MTProfile
      parameter, resolution and number of used threads

* vvencapp:
  - added parameters:
    - mtprofile: set the multi-threading profile (0: current default - 3: use all MT optimizers, use
                 -1/auto to automatically set depending on resolution and number of threads used)
    - internal-bitdepth: sets internal encoding bitdepth, i.e. the output bitstream bitdepth
    - refreshtype: specifies the refresh-type used at random access points
    - decodedpicturehash: enable/disable decoded picture hash (DPH) SEI generation
  - changed parameters:
    - ifp, tiles: default value set to -1, with the behavior defined by mtprofile parameter, resolution
                  and number of used threads
    - format: now accepts yuv400 and yuv400_10 as parameter for monochrome input

/////////////////////////////////////////
tag 1.11.1

* libvvenc:
  - fix performance regression for ARM
    - using SSE41 code to generate NEON with SIMDe rather than AVX2
  
/////////////////////////////////////////
tag 1.11.0

* libvvenc:
  - added library parameters:
    - vvenc_config::m_forceScc to force a specific SCC detection decision for all frames
      (0: do not use, 1/2/3: no SCC/weak SCC/strong SCC)
    - vvenc_config::m_ifp to enable inter-frame parallelism
    - vvenc_config::m_minIntraDist to define minimal distance between intra frames (in presentation order)
  - changed parameters:
    - vvenc_config::m_RCMaxBitrate can now be specified as factor of target bitrate, use the macro
      VVENC_SET_MAXRATE_FACTOR to set the value (absolute of negative values will be interpreted as
      a 4-bit fixed-point factor)
    - vvenc_config::m_numThreads will now per default be set to 12 for 5K and higher resolutions
  - renamed library parameters:
    - vvenc_config::m_fppLinesSynchro to vvenc_config::m_ifpLines
  - added an affine speedup based on Pejman et al., ICIP 2023.
  - added vectorized DQ implementation
  - finalized inter-frame parallelization (previously FPP) improving performance during
    execution with high number of threads (harmonized with rate control)
  - improved SCC detection by reducing false positives
  - overall speedups:
    - 6% for fast/slow/slower
    - 12% for medium, 25%+ for multi-threaded execution with long intra periods

* vvencFFapp:
  - added parameters:
    - IFP: enables the usage of inter-frame parallelism
    - IFPLines: defines the synchronization offset in CTU lines
    - ForceSCC: forces a specific SCC detection decision
    - MinIntraDistance: defines a minimal distance between intra pictures in presentation order
  - changed parameters:
    - FppLinesSynchro: now deprecated, please use IFP and IFPLines
    - NumThreads: if set to default (-1), will now cause the encoder to use 12 threads for 5K and higher resolutions
    - MaxRate: if specified with suffix "x", e.g. "2x", the value will be interpreted as multiple of target bitrate

* vvencapp:
  - added parameters:
    - ifp: when set, will enable inter-frame parallelism with a default synchronization offset of two CTU lines
  - changed parameters:
    - threads, t: if set to default (-1), will now cause the encoder to use 12 threads for 5K and higher resolutions
    - maxrate, m: if specified with suffix "x", e.g. "2x", the value will be interpreted as multiple of target bitrate

/////////////////////////////////////////
tag 1.10.0

* libvvenc:
  - added library parameters:
    - vvenc_config::m_poc0idr to force POC0 to be an IDR (otherwise per default it will now be a RASL picture)
  - changed default GOP structure of the first GOP to align with other GOPs, ensuring all intra-periods
    and DASH segments have equal length
  - enable spatial subsampling for 1st pass in 2-pass RC per default for faster preset
  - adaptively extend the number of neighboring frames in MCTF pre-filtering
  - allow ALF derivation from partial data for FPPLinesSynchro
  - improved rate matching accuracy at high target rates on easy-to-encode content, especially for HDR
  - disable compilation for SSE42 and AVX as no specific code is used,
    only keep explicit support for SSE41 and AVX2
  - around 0.5% BDR gain for all presets
  - minor changes and cleanups to rate control, DMVR, MCTF, QPA and others

* vvencFFapp:
  - added parameter: POC0IDR to control if POC0 is an IDR (=1, default if PicReordering is 1)
                     or RASL (=0, default if PicReordering is 0)

/////////////////////////////////////////
tag 1.9.1

* libvvenc:
  - added library parameters:
    - vvenc_config::m_maxPicWidth, vvenc_config::m_maxPicHeight to signal maximal possible picture size when
      encoding for resolution change (e.g. using CRA_CRE decoder refresh)
  - added medium_lowDecEnergy as a built-in preset (in C-API: VVENC_MEDIUM_LOWDECNRG)
  - refactoring and improvements of affine search and interpolation filtering
  - fixed 8-bit encoding from 10-bit input and proper handling of 8-bit video in BIM
  - added proper setting of conformance window
  - refactoring and improvements to rate control (RC)
    - fixed potential integer overflow
    - finalized spatial subsampling implementation for 2-pass RC

* vvencFFapp:
  - added parameter: MaxPicSize/MaxPicWidth/MaxPicHeight to control the signaled maximal picture size during
                     resolution change

/////////////////////////////////////////
tag 1.9.0

* libvvenc:
  - removed library parameters: vvenc_config::m_wcgChromaQpControl, vvenc_config::m_ccalfQpThreshold,
                                vvenc_config::m_switchPOC, vvenc_config::m_switchDQP,
                                vvenc_config::m_fastForwardToPOC, vvenc_config::m_stopAfterFFtoPOC,
                                vvenc_config::m_bs2ModPOCAndType, vvenc_config::m_forceDecodeBitstream1,
                                vvenc_config::m_decodeBitstreams
  - removed deprecated struct: vvencWCGChromaQPControl
  - added library parameters:
    - vvenc_config::m_fppLinesSynchro (controls CTU line offset for dependent frame parallelism)
    - vvenc_config::m_RCMaxBitrate (controls the maximum instantaneous rate for rate control encoding)
  - changed library parameters:
    - vvenc_config::m_FirstPassMode (added spatial and temporal subsampling to first pass)
  - vvenc_config::m_decodedPictureHashSEIType (when >= 10, the hash is calculated and logged,
                                               but no SEI message is generated)
  - vvenc_config::m_IntraPeriodSec (will now round the intra period to a multiple of 8 frames,
                                    instead of GOP size)
  - added rate capping during rate control (must be at least 1.5x of target rate)
  - extensive improvements and cleanups to rate control, especially single pass
  - improved efficiency by 1-2%
  - speedup of first pass, especially for preset faster (around 15% overall runtime)
  - unified MCTF activation for low- and high-rate encoding
  - various speedups, fixes, and cleanups
  
* vvencapp:
  - added parameter: stats (when enabled, prints a statistical summary of encoding every second of input)
                     maxrate (enables to specify maximum rate for RC, must be at least 1.5x of target rate)

* vvencFFapp:
  - added parameter: MaxBitrate (enables to specify maximum rate for RC, must be at least 1.5x of target rate)
                     stats (when enabled, prints a statistical summary of encoding every second of input)
  - removed parameters: WCGPPSEnable, WCGPPSCbQpScale, WCGPPSCrQpScale, WCGPPSChromaQpScale,
                        WCGPPSChromaQpOffset, DebugBitstream, DecodeBitstream1, DecodeBitstream2,
                        DebugPOC, SwitchPOC, SwitchDQP, FastForwardToPOC, StopAfterFFtoPOC,
                        DecodeBitstream2ModPOCAndType, ForceDecodeBitstream1, CCALFQpTh, decode

/////////////////////////////////////////
tag 1.8.0

* libvvenc:
  - removed library parameters:
    - vvenc_config::m_temporalSubsampleRatio, vvenc_config::m_MaxCodingDepth, vvenc_config::m_RCForceIntraQP,
      vvenc_config::m_log2DiffMaxMinCodingBlockSize
  - added library parameters:
    - vvenc_config::m_FirstPassMode
  - changed library parameters:
    - vvenc_config::m_useSelectiveRDOQ is now an int_8, with 2 enabling selective RDOQ only for SCC
  - deprecated config: vvencWCGChromaQPControl
  - QPA: added saliency detection
  - BIM: propagation of the parameters to higher temporal layers
  - retuned the presets:
    - 15% speedup for faster, 10% speedup for fast, medium and slow, 5% for slower
  - speedup of the first pass for faster preset
  - various speedups and bugfixes

* vvencapp:
  
* vvencFFapp:
  - removed from default installation! Use VVENC_INSTALL_FULLFEATURE_APP CMake variable to override.
  - removed parameters: TemporalSubsampleRatio, RCForceIntraQP, MaxMTTHierarchyDepth, MaxMTTHierarchyDepthI,
                        MaxMTTHierarchyDepthISliceL, MaxMTTHierarchyDepthISliceC
  - deprecated parameters: WCGPPSEnable, WCGPPSCbQpScale, WCGPPSCrQpScale,
                           WCGPPSChromaQpScale, WCGPPSChromaQpOffset
  - added parameters: FirstPassMode

/////////////////////////////////////////
tag 1.7.0

* libvvenc:
  - removed (unused) library parameters:
    - vvencGOPEntry: m_CbTcOffsetDiv2, m_CbBetaOffsetDiv2, m_CrTcOffsetDiv2, m_CrBetaOffsetDiv2
                     m_refPic, m_isEncoded, m_ltrp_in_slice_header_flag
    - vvencReshapeCW: rspBaseQP
  - added library parameters:
    - extended vvencHDRMode to also include SDR color spaces
    - vvenc_config: m_numRefPics, m_numRefPicsSCC, m_blockImportanceMapping, m_saoScc
    - vvenc_config: changed m_sliceTypeAdapt from bool to char
  - changed library parameters:
    - m_TicksPerSecond new default 27000000 (old: 90000) to support all NTSC frame rates
  - added support for ARM through SIMDe
  - allowing adaptive intra period (content adaptive placement of random access points)
  - ported block importance mapping from VTM
    - around 1% gain for faster
    - around 2% BD-rate gain for other presets
  - added noise based QP clipping to RC
  - improved SCC detector to ignore black borders
  - added possibility of logo overlay
  - major refactoring to separate a pre-processing step
  - many bugfixes
  - speedups: 20% for faster, 5% for other presets

* vvencapp:
  - added parameter "sdr" to set the SDR color space (mutually exclusive with "hdr" parameter)
  - added parameter "logofile" specifying a JSON logo descriptor (use without value for help)
  
* vvencFFapp:
  - added parameters "Sdr" and "logofile" analogue to simple app
  - added parameters "NumRefPics" and "NumRefPicsSCC" allowing per-TL setting of number of reference pictures
  - added parameter "BIM"
  - changed parameters "SAO" and "STA" from flag to integer
    - SAO=2 will only apply SAO to screen content
    - STA=2 will start a new intra period when a content-dependent intra frame is inserted

/////////////////////////////////////////
tag 1.6.1

* libvvenc:
  - bugfix for rate control at low rates
  - bugfix to multi-threaded encoding with tiles
  - made apputils an internal header only lib, fixing linking problems
  - speedup non-linear ALF (-4% runtime for slower)
  - added auto-logic for correct tickspersec setting
  - optimized non-RD-optimized quantization

/////////////////////////////////////////
tag 1.6.0

* libvvenc:
  - removed library parameters:
    - vvenc_config::m_bRestrictMESampling
  - added library parameters:
    - vvencMCTF::MCTFUnitSize, vvenc_config::m_alfUnitSize, vvenc_config::m_meReduceTap
  - changed semantics of the parameters:
    - vvenc_config::m_maxMTTDepth: if >=10, each decimal digit corresponds to the value set for frames in a specific temporal layer
    - vvenc_config::m_maxMTTDepthIChroma: if negative, set equal to vvenc_config::m_maxMTTDepthI
    - vvenc_config::m_motionEstimationSearchMethod: deprecated value 2
    - vvenc_config::m_motionEstimationSearchMethodSCC: deprecated value 1
  - speedups
    - 15%+ for faster, fast, medium and slower
    -  6%  for slow
  - improvements to rate control stability, especially for single pass and high rates
  - various improvements, cleanups and fixes

* vvencapp:
  - remove deprecated gopsize parameter

* vvencFFapp:
  - removed command line parameters:
    - RestrictMESampling
  - added command line parameters:
    - ReduceFilterME, ALFUnitSize, MCTFUnitSize

/////////////////////////////////////////
tag 1.5.0

* libvvenc:
  - removed library paramters:
    - vvenc_config::m_RPLList0, vvenc_config::m_RPLList1, vvenc_config::m_maxDecPicBuffering, vvenc_config::m_maxNumReorderPics,
      vvenc_config::m_maxNumReorderPics, vvenc_config::m_numRPLList0, vvenc_config::m_numRPLList1, vvenc_config::m_bUseConstrainedIntraPred,
      vvenc_config::m_deblockingFilterMetric, vvenc_config::m_videoSignalTypePresent
  - added library parameters:
    - vvenc_config::m_deblockLastTLayers, vvenc_config::m_picReordering, vvenc_config::m_fastHad
  - allowing arbitrary intra periods (not required to be multiples of the GOP size)
  - improvements to rate control stability, mostly regarding to noisy input and scene changes
  - many speedups and improvements
    - 10% speedup, 1.3% BD-rate gain for faster
    - 12% speedup, 1.3% BD-rate gain for fast
    - 11% speedup for medium
    - 8% speedup for slow
    - 6% speedup for slower
  - added a low-decoding-energy configuration roughly matching the medium preset
  - fixed portability
  - multi-threading improvements
  - memory reduction
  
* vvencapp:
  
* vvencFFapp:
  - removed command line parameters:
    - DeblockingFilterMetric, ConstrainedIntraPred
  - added command line parameters
    - PicReordering: enable/disable picture reordering during encoding (default 1, picture reordering enabled)
    - FastHAD: enable/disable the usage of a fast subsampled HAD calculation for large blocks
    - DeblockLastLayers: indicates to only use deblocking filter for the N highest temporal layers (default 0, deblock all temporal layers)

/////////////////////////////////////////
tag 1.4.0

* all:
  - changed license to the standard Clear BSD license (without adaptations)
  - explicitly stating the authors (AUTHORS.md) as copyright holders

* libvvenc:
  - removed library parameters:
    - vvencMCTF::MCTFNumLeadFrames, vvencMCTF::MCTFNumTrailFrames
    - vvenc_config::m_RCLookAhead (now always behaving as if equal to 1)
  - added library parameters:
    - vvenc_config::m_leadFrames, vvenc_config::m_trailFrames, vvenc_config::m_LookAhead, vvenc_config::m_sliceTypeAdapt
  - add function to extract SPS, PPS and other headers during encoding
    int vvenc_get_headers(vvencEncoder *, vvencAccessUnit *);
  - removed legacy 1-pass rate control (now always using the look-ahead based 1pRC)
  - added a slice adaptation mode inserting intra-frames instead of TL-0 B-frames when scene-cut is detected within the preceding GOP
  - fix encoder initialization with other bitstream when using rate control
  - fixed CU tracing
  - ported improvements to motion compensated filtering from JVET
  - fixed LMCS processing for 8-bit internal bitdepth coding
  - various fixes and improvements
  
* vvencapp:
  - changed semantics of the bitrate parameters to understand suffixes (Mbps, M, kbps, k, bps),
    associated with multipliers (1e6, 1e6, 1e3, 1e3, 1), respectively
  - added y4m parameter to force input interpretation as Y4M (also inferred when file file extension is .y4m)

* vvencFFapp:
  - added command line parameters:
    - STA: enable/disable TL-0 B-to-I slice type adaptation after scene cuts (default: on)
  - renamed parameters:
    - MCTFNumLeadFrames -> LeadFrames (now also relevant in chunk based encoding for STA)
    - MCTFNumTrailFrames -> TrailFrames
  - changed semantics of the TargetBitrate parameter to understand suffixes (Mbps, M, kbps, k, bps),
    associated with multipliers (1e6, 1e6, 1e3, 1e3, 1), respectively
  - added y4m parameter to force input interpretation as Y4M (also inferred when file file extension is .y4m)

/////////////////////////////////////////
tag 1.3.1

* libvvenc:
  - fixed QPA encoding with tiles
  - allowing encoding of videos compatible with subpic-merging functionality of VVC
  - API extended, but ABI compatible
    - added paramter: m_treatAsSubPic, m_explicitAPSid
  - temporarily forbidding rate control combined with DebugBitstream
  
* vvencapp:
  - fixed output of `vvencapp --version`
  - aligned output with full-featured app
  
* vvencFFapp:
  - aligned output with vvencapp
  - added command line parameters
    - TreatAsSubPic
    - ExplicitAPSid
  
  
/////////////////////////////////////////
tag 1.3.0

* libvvenc:
  - introducing params setting using a string api (vvencCfg.h): 
    int vvenc_set_param     (vvenc_config *cfg, const char *name, const char *value);
    int vvenc_set_param_list(vvenc_config *c, int argc, char* argv[]);
  - logger interface changed to support multiple encoder instances. use: vvenc_set_msg_callback(vvenc_config *, void* , vvencLoggingCallback)
  - deprecated: vvenc_set_logging_callback(void * ctx, vvencLoggingCallback)  (please use: vvenc_set_msg_callback)
  - added CRA with constrained RASL encoding refresh type (cra_cre)
  - presets redefined for codec improvements
  - add look ahead analysis for single pass rate control
  - HRD timing information are always written into bitstream per default (signal fps)
  - perceptual QPA improvements for lower bitrates
  - added tile support including tile parallelism
  - mingw support added
  - various cleanups, bugfixes and reducing memory usage

* vvencapp:
  - added command line parameters:
    - tiles: set number of tile columns and tile rows
    - framescale: defines the denominator of the framerate to enable fractional rate sepcification (before framerate 59 automatically used 60000/1001)
    - fps: framerate/framescale in a single parameter as integer or fraction (e.g. 60, 60/1 or 60000/1001)
    - additional: set parameters using the string api by using a space separated list of key=value parameters (e.g. "bitrate=1000000 passes=2")
    - rt/refreshtype now supports cra_cre (previously set using --RPR=2 in full-featured app)

* vvencFFapp:
  - added command line parameters:
    - Tiles: set number of tile columns and tile rows
    - FrameScale: defines the denominator of the framerate to enable fractional rate sepcification (before framerate 59 automatically used 60000/1001)
    - fps: framerate/framescale in a single parameter as integer or fraction (e.g. 60, 60/1, 60000/1001)
    - additional: set parameter using the string api by using a space separated list of key=value parameters (e.g. "bitrate=1000000 passes=2")
    - LookAhead: enable pre-analysis in single pass rate control
    - DecodingRefreshType/dr now supports value '5' (cra_cre), previously set using --RPR=2)
  - removed command line parameters:
    - InputQueueSize
  - removed unused/legacy command line parameters (legacy VTM parameter):
    - EnablePictureHeaderInSliceHeader
    - CropOffsetLeft, CropOffsetTop, CropOffsetRight, CropOffsetBottom
    - CalculateHdrMetrics
    - SignalledIdFlag
    - SignalledSliceIdLengthMinus1
    - RectSlicesBoundaryArray
    - SignalledSliceId
    - isSDR

/////////////////////////////////////////
tag 1.2.0

* libvvenc:
  - added parameters: m_qtbttSpeedUpMode, m_numIntraModesFullRD, m_reduceIntraChromaModesFullRD, m_RCPass
  - renamed parameters: m_bUseEarlyCU to m_useEarlyCU, m_dqThresholdVal to m_quantThresholdVal
  - added IDR2 refresh type, which aligns the layout of the first intra period with others (using IDR_W_RADL rather than IDR_N_LP picture)
  - added nlohmann_json as a third party lib (can be disabled with CMake variable VVENC_ENABLE_THIRDPARTY_JSON)
  - redefined the presets
  - improvements to single picture rate control
  - added additional partitioning speedups
  - improved linear ALF implementation (memory access patterns and SIMD)
  - improved DMVR implementation
  - improved error handling
  - various cleanups and bugfixes

* vvencapp:
  - added command line parameters:
    - rcstatsfile: defines the location of the to-be-written/to-be-read rate control statistics file
    - pass: if != -1, defines which encoding pass is to be performed in case of 2-pass RC (requires rcstatsfile)
  - added support for yuv420_10_packed (packed 10-bit YUV) raw bitstream layout


* vvencFFapp:
  - added command line parameters:
    - RCStatsFile, Pass (analogue to vvencapp)
    - NumIntraModesFullRD, ReduceIntraChromaModesFullRD
  - renamed command line parameters: DQThrVal to QuantThrVal
  - added support for yuv420_10_packed (packed 10-bit YUV) raw bitstream layout (PYUV=1)

/////////////////////////////////////////
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

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


