JVET-AQ0003 JVET AHG report: Test model software development (AHG3) [F. Bossen, X. Li, K. Sühring (co-chairs), E. François, Y. He, K. Sharman, V. Seregin, A. Tourapis (vice-chairs)]
The software model versions prior to the start of the meeting were:
- VTM 24.0 (April 2026)
- VTM-22.2-TuC4.0 (Feb. 2025)
- HM-18.0 (Apr. 2023)
- HM-16.21+SCM-8.8 (Mar. 2020)
- SHM 12.4 (Jan. 2018)
- HTM 16.3 (Jul. 2018)
- JM 19.1 (Apr. 2023)
- JSVM 9.19.15
- JMVC 8.5
- 3DV ATM 15.0 (no version history)
- HDRTools 0.26 (August 2025)
Software for MFC and MFCD is only available as published by ITU-T and ISO/IEC. It is planned to create repositories with the latest versions available in ITU-T H.264.2 (02/2016). All development history is lost.
- Software development
Development was continued on the GitLab server, which allows participants to register accounts and use a distributed development workflow based on git.
The server is located at:
https://vcgit.hhi.fraunhofer.de
The registration and development workflow are documented at:
https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/wikis/VVC-Software-Development-Workflow
Although the development process is described in the context of the VTM software, it can be applied to all other software projects hosted on the GitLab server as well.
Server availability
Short before the 42nd JVET meeting denial of service was observed on the Fraunhofer HHI web servers, which required blocking large IP spaces. This may also affect legitimate access.
Shortly after lifting the block, the usage pattern reappeared. Some improvements were made by limiting the access per IP address, but this was not permanent. It is observed that the server is being crawled from thousands of IP addresses, where each is just used for 60 to 80 accesses.
Sources were found in IP ranges that belonged to Chinese telecommunication providers.
Since short before the 43rd JVET meeting, additional traffic with the same pattern appeared from IP spaces associated with US based telecommunications providers.
The number of connection attempts to the server are so high, that legitimate access is extremely slow or may fail.
Looking at the access patters, it looks like web crawling, which used to be done by a limited number of search engines. While these were usually trying not to crash the servers that are being indexed, these new players seem to not care about their impact.
The example graph below shows CPU usage caused by excessive connections to the server around July 6 2026.
Possible solutions
There are different options, which we may consider implementing to improve access to the GitLab repositories:
- improve proxy access for better throughput and possible pattern analysis
- reduce the crawling surface by:
- making all repositories "internal", except these that we need to share (e.g. for personal forks of VTM, ECM, etc)
- making all repositories "internal" and set up a new server for public access, which only gets update once daily
- Move the GitLab server to a professional hosting service / CDN (requires sponsorship)
- VTM related activities
The VTM software can be found at
https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/
The software development continued using the GitLab server. VTM version 24.0 was tagged on April 8, 2026. No new version was tagged after the 42nd JVET meeting.
The following merge requests were merged on top of VTM 24.0. A new version will be tagged as necessary:
- WG03 N01464: Implementation of carriage and application of attenuation maps (green_metadata_type==2)
- Fix step length in paddingSimd
- Film grain analysis: fix coding style and cutoff estimation, update default parameters
- JVET-AP0070: AHG10: Additional random-access configuration with reduced delay
- Remove post filter hint SEI message
- Update download location of Docker images for CI pipeline
- Fix deblocking corner case involving palette and dual-tree
- fix memory growth due to unused DecLib::m_nalUnitInfo
The following merge requests were submitted and are pending:
- Fix transcoding functionality (DebugBitstream), including switching (SwitchPOC) by adapting LMCS and ALF APS handling
Additionally a branch cfp-2026 was created based on VTM 24.0 for preparation of software for generating anchors for the upcoming CfP. The following merge requests were merged into that branch:
- JVET-AP2026: Add configurations files for CfP
- Add LastValidFrame to all per-sequence cfg files
- add packed yuv conversion application
- Update howto for 2026 CfP
- Add qp/qpif settings
CTC Performance
There is currently no performance change expected on after VTM 24.0.
Issues in VTM affecting conformance
The following issues in VTM master branch may affect conformance:
- Missing HLS features (see sections below)
Status of implementation of proposals of previous JVET meetings
The following list contains all adoptions of the Q and R meetings that were not marked as merged (or submitted) or specification only change in the software coordinator tracking sheet:
- JVET-Q0112
- JVET-Q0154: Disallow mixing of GDR and IRAP (Disallow mixing of GDR with any non-GDR).
- JVET-Q0164
- JVET-Q0402
- JVET-R0178: Require that when no_aps_constraint_flag is equal to 1, sps_lmcs_enabled_flag and sps_scaling_list_enabled_flag shall be equal to 0
- JVET-R0221
- JVET-R0046: Change the description of the bitstream extraction process per the value of max_tid_il_ref_pics_plus1[ ][ ] (aspect 1.2 per JVET-R0046-v4).
- JVET-R0065: Specify that GDR AUs shall be complete – i.e., all of the layers in the CVS shall have a picture in the AU (as with IRAP AUs).
- JVET-R0191: Update the range value for num_ols_hrd_params_minus1.
- JVET-R0222 aspect 1: Infer vps_max_sublayers_minus1 to be equal to 6 when sps_video_parameter_set_id is equal to 0 (i.e. VPS is not present). The exact editorial expression is at the discretion of the editor.
- JVET-S0196 (JVET-S0144 item 17)
- JVET-S0227 (JVET-S0144 item 22)
- JVET-S0077 (JVET-S0139 item 5)
- JVET-S0174 aspect 2 (JVET-S0139 item 18.b)
- JVET-S0156 aspect 3 (JVET-S0139 item 21)
- JVET-S0139 item 26 (no source listed, text only?)
- JVET-S0188 aspect 1 (JVET-S0139 item 28)
- JVET-S0139 item 40 (item does not exist)
- JVET-S0042 (JVET-S0142 item 1.b)
- JVET-S0174 aspect 1 (JVET S0143 item 19)
- JVET-S0096 aspect 3 (JVET-S0140 item 10)
- JVET-S0096 aspect 4 (JVET-S0140 item 13)
- JVET-S0159 aspect 3 (JVET-S0140 item 16)
- JVET-S0171 (JVET-S0256)
- JVET-S0118 (JVET-S0141 item 7)
- JVET-S0102 (JVET-S0141 item 9.a)
- JVET-S0157 item 2 (JVET-S0141 item 13)
- JVET-S0157 item 4 (JVET-S0141 item 14)
- JVET-S0175 aspect 3 (JVET-S0141 item 16)
- JVET-S0175 aspect 1, 2 (JVET-S0141 item 17)
- JVET-S0175 aspects 4 and 5 (JVET-S0141 item 18)
- JVET-S0175 aspect 6 (JVET-S0141 item 19)
- JVET-S0198/ JVET-S0223 (JVET-S0141 item 24)
- JVET-S0173 aspect 2 (JVET-S0141 item 40.b)
- JVET-S0173 item 1 (JVET-S0141 item 51)
- JVET-S0173 item 3 (JVET-S0141 item 52)
- JVET-S0173 item 5 (JVET-S0141 item 53)
- JVET-S0173 item 6 (JVET-S0141 item 54)
- JVET-S0173 item 4 (JVET-S0141 item 56)
- JVET-S0176 item 4 (JVET-S0141 item 60)
- JVET-S0154 aspect 5 (JVET-S0141 item 68)
- JVET-S0154 aspect 6 (JVET-S0141 item 69)
- JVET-S0154 aspect 8 (JVET-S0141 item 71)
- JVET-S0095 aspect 5 (JVET-S0145 item 5)
- JVET-S0095 aspect 6 (JVET-S0145 item 6)
- JVET-S0100 aspect 1, depends on JVET-R0193 (JVET-S0147 item 2)
- FINB ballot comments
- Make high tier support up to 960.
SEI TuC software
Per the decision during the 32nd JVET meeting, an SEI TuC repository was created based on VTM-22.2. It was later updated to VTM-24.0. The repository is located at:
https://vcgit.hhi.fraunhofer.de/jvet-tuc/VVCSoftware_VTM
VTM-22.2-TuC5.0 was tagged on May 22nd . Changes since VTM-22.2-TuC4.0 include
- Fix build on macos arm
- JVET-AK0153: Photosensitive content SEI messages
- Remove Packed Regions SEI (moved to VTM)
- JVET-AJ0245: Multi-layer support for Constituent Rectangles SEI
- JVET-AG0328: FGR SEI message
- JVET-AK0142: Display Rectangles SEI
- Update build system for new build clients
- Update version to VTM 22.2-TuC5.0
VTM-24.0-TuC-5.0 was tagged on May 26th. Changes related to VTM-22.2-TuC5.0 include:
- Cleanup of conflicting code with VTM 24.0
- Merge VTM 24.0
The following merge requests were merged on top of VTM-24.0-TuC-5.0:
- JVET-AM0083: Auxiliary Sampling Alignment Information SEI
- JVET-AO0097 & JVET-AO0157 & JVET-AO0281: Update EOI SEI extension
- JVET-AK0155 & JVET-AL221: Implementation of luma adaptation in the EOI SEI message
- JVET-AP0073: Shutter Interval Information extension for rolling shutter
- JVET-AM0086: Photosensitive content additional information
The following merge requests were submitted and are pending:
- update FGR SEI from AP2032-v3
- Alignement of CMI SEI implementation with AP2032.
- Alignement of DOI SEI implementation with AP2032.
- Alignement of DR SEI implementation with AP2032.
- Alignement of QM SEI implementation with AP2032.
- JVET-AL0139: CR SEI update
- JVET-AJ0139: BRI SEI partition info
- Implementation of the danmu information SEI message specified in JVET-AP2032
- JVET-AL0064: PO SEI message extension for root process NNPFs complexity
- JVET-AP0084: Gain Map SEI
- JVET-AO0160: MI Extension for Multispectrum
- JVET-AP0076: Floating point in SEI
- JVET-AI0340: Implementation of AI-restrictions usage SEI message
Reasons for MR being pending are:
- no reply on questions
- no rebase after other merges
- missing review
- unavailability of the GitLab server (see above)
- HM related activities
There was no new HM version tagged during this meeting cycle.
The following MRs were merged:
- JVET-AE0101: implement phase indication SEI message
- Update auto-build from VTM build definition
- Update copyright headers to include 2025
- JVET-AK0107: Modality Information SEI
- JVET-AK0194: Digitally Signed Content SEI messages
- Fix building on ARM
- Enable build on macOS/arm
- Modify semantics of IntraPeriod to enable autosetting based on frame rate
- Fix yuv output when bitdepth is changed between sequence
- Add missing initialization in TComPPS and TComScalingList (fix asan/msan errors)
- Avoid reading SEI content when payloadSize = 0
- Modified CMake for ARM variations
- Update build pipeline from VTM
- JVET-AK2006:Add support for SPTI SEI message
- Remove output picture marked as non reference from the DPB
- Fix build after merging !82
- JVET-AL0059: Packed regions information SEI
- JVET-AL0061: Import encoder optimization information SEI Message from VTM
- JVET-AN0237: Film Grain Analysis
- JVET-AL0148: implementation of GFV and GFVE SEI messages
- JVET-AL0339: Spatial resolution for film grain characteristics SEI message.
- Add 2026 to copyright date range
- Fix erroneously skipped pictures when decoding
- Fix condition to reset PicOrderCntMsb (could happen on CRA)
- Mark all pictures as to not be output when encountering a CRA with noRaslOutputFlag = 1
- Fix bumping process (add conditions on PicLatencyCnt, fixes for EOS before CRA cases)
- JVET-AL0062: AI usage restrictions SEI message
- Add support for NNPF SEI messages
- Merge DSC SEI code from VTM up to VSEIv4 syntax
The following MRs are pending for the main branch.
- Aligning VTM and HM code - film grain analysis
A new version of HM is pending to be tagged . CTC need to be run to verify coding performance.
A new branch was created for 4:4:4/Multiview profile support:
https://vcgit.hhi.fraunhofer.de/jvet/HM/-/tree/dev-multiview444?ref_type=heads
The following MRs were merged into the dev-multiview444 branch:
- JVET-AN0292-0293: Multiview HEVC encoding and decoding including 4:4:4 profiles
- Remove restriction of MR target branch for CI
- MV-HEVC 4:4:4 multi-profile support and decoder compatibility fixes
- JVET-AO0227: Multivew 444 fixes
The following MRs are pending:
- HRD Initial CPB removal delay handling
- MV-HEVC range-extension profiles, SHVC support, and arm64 portability
The HM SCC (SCM) branch (HM-16.21+SCM-8.8) has not been updated for the recent HM versions. Updating SCM to, for example, HM-18.0+SCM-8.8 should be considered. It may though be helpful to move SCC related functionality into separate source files. Volunteer work towards merging the branches would be appreciated.
As reported in the previous reports, further information on lambda optimisation in HM would be appreciated, including comparison of allocation of bits within the GOP structures between HM and VTM.
Otherwise the HEVC bug tracker lists:
- 44 tickets for “HM”, (most of which were created before 2019; 1 created in last year),
- 1 ticket for “HM RExt” (created in 2020),
- 9 tickets for “HM SCC” (most of which were created before 2018),
- 1 ticket for “RExt Text” (created in 2015),
- 1 ticket for “SCC Text” (created in 2016),
- 8 tickets for text (6 created before 2021; 2 created in the last year),
- 2 tickets for encoder description (created in 2020 and 2014)
Help to address these tickets would be appreciated.
- 360Lib related activities
There had not been any further developments to 360Lib during this meeting cycle.
- SCM related activities
There had not been any further developments to SCC’s SCM during this meeting cycle.
- SHM related activities
An update to HM 18.0 and some smaller changes were merged. A new tag is planned.
- HTM related activities
There had not been any releases of HTM of MV-HEVC and 3D-HEVC.
One merge request is was merged:
- JVET-AE0295: MV Main 10 profile support (waiting for proponent response)
The next release will also include the following changes:
- JVET-Z0209: Early termination during calculating RDcost of depth
- HDRTools related activities
Considerable changes were recently made to the HDRTools package, all in the 0.27-dev branch. These include:
- Add FilmGrainTool for film grain analysis and synthesis supporting two grain models selectable via GrainModel parameter:
- AFGS1 (AOMedia Film Grain Synthesis 1): autoregressive model with per-pixel scaling LUTs, LFSR-based random grain, and overlap processing
- FGC (MPEG/ITU Film Grain Characteristics, SEI type 19): frequency-filtering model with DCT-based grain databases, intensity-interval component models (sigma, h_cutoff, v_cutoff), and block-based blending
- Synthesis-only mode auto-detects grain model from JSON metadata
- Add FilmGrainParams, FilmGrainAnalyzer, FilmGrainSynthesizer classes in common/ for extensible film grain processing
- Add FrameFilterBilateral edge-preserving bilateral filter
- Add ECFIConvert tool for Enhanced Colour Format conversion (4:4:4 <-> 4:2:0 + chroma enhancement files) with RGB 3-channel support and separate/vertical/horizontal packing modes
- Add PictureSegmentation tool for mask-based picture segmentation with 4 modes (mask background, retain specific, extract per-object, mask specific segments) supporting 4:4:4, 4:2:0, and monochrome inputs
- Add Json parser for metadata file support
- Add Frame::copyComponent for cross-component copy with bit-depth conversion
- Add Frame::stackComponent/unstackComponent for vertical and horizontal channel packing/unpacking
- Add Frame::maskWithSegmentMap for segment-based masking
- Add Frame::buildSegmentMap and SegmentMapConfig for PSI segment map construction from mask frames (NULL/IMPLICIT/FULL/SPARSE types)
- Fix compiler warnings (strncat, unused variables, indentation)
- Add InputAVI class for reading AVI files, enabling AVI-to-any-format conversion in HDRConvert. Parses RIFF/AVI headers and builds a frame index for direct seeking. Supports BI_RGB, I420, UYVY, YUY2, YVYU, v210, v410, r210, r10k, R12B, and R12L compressors.
- Add AVI 2.0 (OpenDML) reading support in InputAVI. Parses super index (indx) and standard index (ix##) chunks, LIST odml with dmlh for real total frame count, and RIFF AVIX continuation chunks for files >2GB.
- Fix missing m_avi initialization in IOFunctions AVI extension block
- Add AlphaComposite tool for alpha channel compositing per H.265/H.274
- Alpha Channel Information SEI, with per-frame JSON metadata support, standard/pre-multiplied/unspecified blending modes, and configurable alpha post-processing (increment, clip, threshold/range clamp)
- Add dithering support for bit-depth reduction (DitherMode parameter):
- RPDF, TPDF, and ordered Bayer 8x8 modes with reproducible xorshift32 PRNG seeding. Legacy EnableDither=1 maps to DitherMode=1.
- Fix Y4M header to always emit C tag for >8-bit and add X tag extensions for transfer function, color primaries, and sample range metadata
- Fix Y4M header parameter handling: add warnings for unsupported parameters and fix output defaults
- Fix frame index computation for fractional frame rates
- Fix HDRConvertTIFF chroma upsampling for subsampled input
- Fix ScaleOnly bit-depth conversion producing all-zero samples
- Fix v210 48-pixel horizontal line alignment per Apple TN2162
- Fix chroma location handling: CL_FOUR/CL_FIVE vPhase corrections in
- Conv444to420Generic, Conv422to420Generic, and FrameScaleHalf; add chromaLocationHPhase/VPhase utilities to TypeDefs.H; add ChromaLocation parameter support in Conv420to422Generic
- Fix FrameScaleLanczosInt m_factorX/Y typos in chroma offsets, extract setChromaOffsets() helper, fix chroma filter usage and stale variable
- Fix FrameScaleHalf shift operator bugs (3 instances of * -> >>)
- Fix FrameScale integer offset inconsistency (add m_offsetX/Y to origX/Y)
- Consolidate FrameScale imgpel/uint16 duplicate pairs into C++ templates
- Add HDRConvScalerYUV FrameStoreIndex enum replacing magic number indices
- Add PrintDebugParams CLI parameter (replacing compile-time define)
- Add Google Test framework (unit + integration tests, 201 tests total) with BUILD_TESTING CMake option; bump C++ standard to C++14
- Add User Manual (doc/UserManual.md) consolidating all tool documentation
Given the number of changes, the AHG is considering whether a new version should be released soon.
- JM, JSVM, JMVM related activities
There had not been any further developments to JSVM or JMVM during this meeting cycle.
There was no new JM version tagged during this meeting cycle, although merge requests were submitted for SEI messages in VSEI.
The following MRs were merged:
- Update build servers aligned with HM
- JVET-AK0107: Modality Information SEI
- Update CI & CMake configuration to include current build setups
The following MRs are pending [with status indicated]:
- JVET-AK2006: NNPFC and NNPFA SEI message (in review)
- JVET-AL0062: AI usage restrictions SEI message (in review)
- JVET-AK2006: SPTI SEI Message (in review)
- JVET-AL0061: Encoder Optimization Information SEI Message (in review)
- JVET-AE0101: implement phase indication SEI message (in review)
- JVET-AL0148: Add support for Generative Face Video (GFV) and Generative Face Video Enhancement (GFVE) SEI messages(in review)
For the previous release of JM only basic testing was performed to confirm that the code still works, but performance testing is pending. Performance changes are unlikely but may occur due to bug fixes. A possible encoder/decoder mismatch was reported privately, but needs more investigation.
- Bug tracking
The creation of accounts to the Trac based bug trackers was closed due to excessive spam account registrations. It is planned to move to GitLab integrated bug trackers and keep the old ones only read only.
GitLab based tracking was tested for TuC and VSEI specification texts, which seems to work well.
The bug tracker for VTM and specification text is located at:
https://jvet.hhi.fraunhofer.de/trac/vvc
The bug tracker uses the same accounts as the HM software bug tracker. Users may need to log in again due to the different sub-domain.
https://hevc.hhi.fraunhofer.de/trac/hevc
New account creation was disabled due to a large amount of spam registration. Extensive maintenance of the Trac bug tracker would be required to keep it secure. It should be considered to move bug tracking to GitLab, although no automatic conversion of existing bugs is available.
Bug tracking for HDRTools is located at:
https://gitlab.com/standards/HDRTools/-/issues
Please file all issues related to the VVC reference software and HDRTools into the appropriate bug tracker. Try to provide all the details, which are necessary to reproduce the issue. Patches for solving issues and improving the software are always appreciated.
- CTC alignment and merging
There are currently 8 JVET CTC documents: