Skip to content

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.

v1.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

v1.11.1

  • libvvenc:
    • fix performance regression for ARM
      • using SSE41 code to generate NEON with SIMDe rather than AVX2

v1.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

v1.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)

v1.9.1

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

v1.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

v1.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
  • 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

v1.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

v1.6

  • 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

v1.5

  • 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

v1.4.0

  • 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

v1.3.1

  • 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

v1.3.0

  • 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)

v1.2.0

  • 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

v1.1.0

  • 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

v1.0.0

  • 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

v0.3.1.0

  • 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

v0.3.0.0

  • 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)

v0.2.1.0

  • White paper: VVenC v0.2.1.0
  • Harmonization of QPA and 2-pass rate control
  • Memory savings
  • Minor bugfixes

v0.2.0.0

  • 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

v0.1.0.1

  • Fix for SIMD setting using the simple-app

v0.1.0.0

Clone this wiki locally