-
Notifications
You must be signed in to change notification settings - Fork 173
Changelog
Christian Lehmann edited this page Jun 20, 2024
·
12 revisions
This sections shows all the changelog which includes records of major changes, new features and bug fixes.
All White papers can also be found for each version.
-
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
- added parameters:
-
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
- added parameters:
-
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
- added parameters:
- libvvenc:
- fix performance regression for ARM
- using SSE41 code to generate NEON with SIMDe rather than AVX2
- fix performance regression for ARM
-
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
- added library parameters:
-
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
- added parameters:
-
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
- added parameters:
-
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
- added library parameters:
-
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)
Bugfix release:
- fixed problems with 8-bit encoding, especially for 10-bit input
- improvements to rate control, especially spatial sub-sampling for first pass
- added medium_lowDecEnergy as a built-in preset
- many other fixes
-
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
- removed library parameters:
-
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)
- added parameter:
-
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
- added parameter:
-
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
- removed library parameters:
-
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
-
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
- removed (unused) library parameters:
-
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
- Speedups: 15% for faster, fast, medium, slower; 6% for slow
- Improvements to rate control stability, especially for single pass and high rates
- Various improvements, cleanups and fixes
- Speedups and improvements:
- faster: 10% speedup, 1.3% BD-rate gain
- fast : 12% speedup, 1.3% BD-rate gain
- medium: 11% speedup
- slow : 8% speedup
- slower: 6% speedup
- Improvements to rate control stability, mostly regarding to noisy input and scene changes
- Allowing arbitrary intra periods (not required to be multiples of the GOP size)
- Added a low-decoding-energy configuration roughly matching the medium preset
- Portability fixyed
- Multi-threading improvements
- Memory reduction
- White paper: please refer to this wiki
- Changed license to unmodified Clear BSD
- Explicitly added the authors as copyright holders
- Removed legacy 1-pass RC, now only allowing lookahead-based 1pRC
- Implemented GOP-based scene-cut detection allowing to insert I-frames instead of TL-0 B-frames
- Added header reading functionality
- Allowed specifying of bitrate using common suffixes (Mbps, M, Kbps, K, and bps)
- Integrated Y4M input support
- Various fixes and improvements
- Fixed TreatAsSubPic
- White paper: VVenC v1.3.1
- Fixed tiles when QPA is enabled
- Fixed version prompt in the simple app, and aligned the prompts of simple and FF apps
- Added encoding for subpicture merging support
- Combined quality improvements and speedup improvements for all presets
- Introduce string API to set encoder configuration parameters
- Perceptual QPA improvements for lower bitrates
- Reduce overall encoder memory consumption
- Change logging interface to support multiple encoder instances
- Enable setting of fractional framerate
- Write HRD timing information per default into the bit-stream
- Add CRA with constrained RASL encoding (cra_cre), previously --RPR=2
- Added tile support and tile parallelism
- Experimental: Add pre-analysis to improve single pass rate control (currently expert app only)
- White paper: VVenC v1.2.0
- Major efficiency improvement for faster, minor speedups for fast and medium
- Implemented two-pass rate control encoding with separate encoder calls (storing the statistics data in a file)
- Added support for packed 10 bit YUV
- Improved single picture rate control
- Added IDR2 refresh type using IDR_W_RADL instead of IDR_N_LP in the first intra period
- Various improvements, cleanups and bugfixes
- White paper: VVenC v1.1.0
- Speedups:
- 20% for faster
- 15% for fast
- 7% for medium
- Added BCW
- Redefined the presets
- Improved SCC and 2-pass RC accuracy
- Various bugfixes and improvements
- White paper: VVenC v1.0.0
- External interface rewritten to C
- New tool added: IBC
- Support for piped raw YUV input
- Improvements to rate control based on the XPSNR model
- Various bugfixes
- White paper: VVenC v0.3.1.0
- Corrected compatibility with C++17
- Rate control cleanup (changes to external interface)
- Added vvencCfgExpert::m_log2MinCodingBlockSize interface variable
- Added Log2MinCodingBlockSize parameter to the expert app to restrict minimal allowed block size
- Fixed interaction between LMCS and ISP
- Fixed motion clipping in DMVR
- Reduced and defragmented memory usage
- Adapted and improved fast and faster presets
- Minor speed-ups to other presets
- White paper: VVenC v0.3.0.0
- Minor bugfixes
- Preset refinement
- Added HDR parameter support
- Memory reduction
- Improved multi-threading
- Added a mode allowing for RPR switching with constrained drift
- Additional improvements and speed-ups
- New parameters: -aud, -vui, -hrd, -hdr (controlling the generation of appropriate
- parameter sets and optimized HDR settings)
- Changed parameter: --qpa (now only 0/1)
- Lib-interface changed (unified between the apps, now supporting all options available to the expert app)
- White paper: VVenC v0.2.1.0
- Harmonization of QPA and 2-pass rate control
- Memory savings
- Minor bugfixes
- White paper: VVenC v0.2.0.0
- Changed the license to modified 3-clause BSD
- Bugfixes to AUD and Decoded Picture Hash SEI generation
- New tools added: Intra Sub-Partitions (ISP), Transform Skip Residual Coding (TSRC),
- Block-level Differential Pulse Code Modulation (BDPCM)
- Added 2-pass rate control
- Added 1-pass rate control support for GOP32
- Using GOP32 as default in all presets
- Added slower preset
- New simple-app parameters: --refreshsec, --internal-bitdepth, --passes, --segment
- Using GNUInstallDirs
- Using Cmake versioning
- Added basic tests (“make test”)
- Added address sanitizer support
- Many small speed-ups and improvements
- Fix for SIMD setting using the simple-app
- White paper: VVenC v0.1.0.0
- Initial release