Skip to main content

ECM

ECM (Enhanced Compression Model) is not a finished codec but a research test model by JVET (the ISO/IEC MPEG + ITU-T VCEG joint team behind VVC): a fork of the VTM reference encoder stacked with experimental coding tools that go beyond what the VVC standard allows. Its purpose is to answer one question, how much more compression can still be squeezed out of the traditional block-based video coding architecture?, with computational cost as a secondary concern.

The results of that exploration are significant: ECM-20.0 reports roughly 28% average luma bitrate reduction versus VTM on natural content in random-access coding, and around 43% on screen content (per JVET reporting; individual videos vary). On an informal like-for-like test (same tiny clip, same QP), ECM-20.0 encoded ~24% smaller than VTM 24.0 at slightly higher PSNR, while taking roughly 10× longer to do it.

With ECM 20.0 (2026), JVET considers the exploration phase complete & has issued a joint Call for Proposals for video coding beyond VVC (July 2026, responses to be evaluated in January 2027 & a first standard version targeted for October 2029), from which a future standard (informally "H.267") will be selected. ECM is therefore best understood as the bridge between VVC and that next standard, not as a deliverable codec itself.

What's actually in it​

ECM keeps VVC's overall architecture (block-based hybrid coding, CTU partitioning, in-loop filtering) & layers dozens of exploratory tools on top. The headline themes:

  • Smarter prediction without signaling: decoder-side intra mode derivation (DIMD/TIMD), template matching prediction (IntraTMP), & cross-component prediction improvements (CCCM variants) let the decoder derive what VVC would have to spend bits signaling.
  • Heavier inter prediction: local illumination compensation, template-matching-based merge candidate reordering, multi-pass DMVR/BDOF refinement, geometric partitioning (GPM) extensions, & sub-pel intra block copy for screen content.
  • Bigger & more flexible transforms: CTU/transform sizes up to 256×256, 8-state dependent quantization (VVC: 4), non-separable primary transforms (NSPT), & expanded transform selection.
  • More in-loop filtering: larger adaptive loop filters, temporal ALF, a bilateral filter (BIF), cross-component SAO, & optionally a neural-network loop filter (NNLF, requires a build with the NN extension enabled).
  • Entropy & precision: 15-bit CABAC probability precision, 12-bit internal pipeline, & better coefficient sign/level prediction.

The full tool inventory is documented in the ECM algorithm description documents in the ECM repository; the above is what matters for understanding its performance profile.

Practical reality​

  • Nothing decodes ECM but ECM. The bitstream is intentionally not VVC-compatible: FFmpeg's VVC decoder rejects it outright, no hardware decodes it, & no player supports it. Round-tripping requires the reference DecoderApp.
  • Encoding is extraordinarily slow. The encoder is single-threaded, like VTM, but 5-10× slower still; expect hours per second of 1080p video on a single core.
  • It is reference-grade software: configuration-file driven, fixed-QP or simple bitrate-targeting rate control, no scene detection, raw YUV/Y4M input only.

Unless you are doing codec research or benchmarking future-standard candidates, there is no practical reason to encode with ECM today; see the ECM encoder entry if you do.

Sources​