HM
37c3317fd058; modified for Encode Wiki · CC BY-SA 4.0HEVC HM reference software
HM (HEVC Test Model) is the reference encoder and decoder for H.265 / HEVC. It exists for conformance testing and HEVC coding-tool research.
As an encoder it is a curiosity. HM has no threading and is slower than x265’s slowest presets, it places keyframes on a fixed IntraPeriod rather than detecting scene changes, and it takes only raw YUV. Use x265 for real work. The VVC and AVC counterparts are VTM and JM.
The latest release is HM-18.0 (April 2023).
git clone --branch HM-18.0 https://vcgit.hhi.fraunhofer.de/jvet/HM.gitcd HMcmake -S . -B build -DCMAKE_BUILD_TYPE=Releasecmake --build build --parallelCurrent GCC (16) stops on new warnings because the project builds with -Werror; add -DCMAKE_CXX_FLAGS=-w to the first cmake command to get past them.
This produces TAppEncoderStatic and TAppDecoderStatic in bin/. The manual is in doc/software-manual.pdf.
Encode a raw file
Section titled “Encode a raw file”HM needs raw planar YUV plus the size, frame rate and frame count. Settings come from a config file in cfg/ (encoder_randomaccess_main10.cfg, encoder_lowdelay_main10.cfg, encoder_intra_main10.cfg and so on):
./bin/TAppEncoderStatic -c cfg/encoder_randomaccess_main10.cfg -i input.yuv -b stream.265 -o recon.yuv \ -wdt 1280 -hgt 720 -fr 24 -f 48 --InputBitDepth=10 -q 32./bin/TAppDecoderStatic -b stream.265 -o decoded.yuv-q is a fixed QP, not a CRF equivalent. The decoder output should match recon.yuv bit for bit. The result is a bare HEVC elementary stream; mux it with MP4Box or FFmpeg.