Getting started with HEVC HM

I am assuming a Linux based environment here.

If otherwise, please download Microsoft Visual Studio and follow the instructions available here.

Setting up HEVC HM on your computer-

  1. Download HEVC HM from the svn repository using this command:

    svn checkout

  2. Build the project by traversing to this directory:  /trunk/build/linux and executing the following command:

    sudo make release

    If everything builds successfully, you should have TAppEncoder and TAppDecoder executables available in the /trunk/bin directory.

  3. The HEVC encoder requires three inputs:
  1. Uncompressed (raw) YUV or Y4M input file: Download a raw YUV file from here to test the encoder.
  2. A codec configuration file: Available in cfg directory. This file can be tweaked according to compression level required.
  3. A sequence-specific configuration file: Sequence specific configuration files are available in folder /trunk/cfg/per-sequence. You should customise one of these files based on the input sequence.
  1. Final execution command to start the encoding process is(executed inside bin):

    sudo ./TAppEncoderStatic -c ../cfg/encoder_randomaccess_main.cfg -c ../test/Beauty.cfg -i ../test/Beauty.yuv


  2. After the encoding process, you can play the final file using mplayer. Switch to the directory with the output yuv file and execute this command:

    $ mplayer -demuxer rawvideo -rawvideo w=1920:h=1080:format=i420 Beauty.yuv

  3. The file can be decoded using the TAppDecoderStatic command

    $ sudo ./TAppDecoderStatic -b str.bin -o Decompressed.yuv

Understanding the binary functionalities

TAppEncoderStatic- Encodes the given yuv file

TAppDecoderStatic- Decodes the bin file to produce the desired output yuv file

TAppDecoderAnalyzerStatic- Decodes the bin file, prints all analysis data to the prompt and produces desired output yuv file