[FFmpeg-devel] [PATCH V5 0/2] Add libsvt HEVC encoder wrapper

Jun Zhao mypopydev at gmail.com
Sat Dec 22 11:15:27 EET 2018

The Scalable Video Technology for HEVC Encoder (SVT-HEVC Encoder) is an 
HEVC-compliant encoder library core that achieves excellent density-quality 
tradeoffs, and is highly optimized for Intel Xeon Scalable Processor and 
Xeon D processors. Intel open source SVT-HEVC encoder in: 

This wrapper work with SVT-HEVC master branch, more information can get 
from https://github.com/intel/SVT-HEVC/blob/new_api/ffmpeg_plugin/.

For SVT-HEVC build, you can switch the branch to master, then run:

1. mkdir build && cd build && cmake ../ && make -j `nproc` && sudo make install
in the directory. (Yes, SVT-HEVC now support the full CMake style's build/install 
after the commit 

For FFmpeg build. need to:
1. export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib and
   export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/usr/local/lib/pkgconfig before
   enable SVT-HEVC in FFmpeg.
2. in FFmpeg part, need to "--enable-libsvthevc" options in config step.

This patches based on Zhengxu, huang/hassene's hard work.

SVT-HEVC encoder have some interesting features compare with the exsting HEVC encoder.

- Multidimensional parallelism
    a). Picture-based parallelism
    b). Segment-based parallelism (scales over many CPU cores)
    c). Will support tile-based parallelism soon

- Human Visual System(HVS)-optimized classification for
    a). Data-efficient processsing
    b). Computationally efficient partitioning and mode decision
    c). Higher coding efficiency
- Resource adaptive scalability
    a). Speed up factor vs HM 16 about 70 times (4K/60fps content, 
        SVT-HEVC enable subjective quality mode with preset setting 
        with M0(highest quality))
    b). Outperformance the x265 encoder in CQP mode 

Some performance data:
- Real-time encoding of up to 1x 8Kp60/10-bit streams on the 
  Platinum 8180 with preset M11/subjective quality mode

- Real-time encoding of up to 2x 8Kp50/10-bit streams on the 
  Platinum 8180 with preset M12/subjective quality mode

- Real-time encoding of up to 4x 4Kp60/10-bit streams on the 
  Gold 6148 with preset M12/subjective quality mode

- Real-time encoding of up to 6x 4Kp60/10-bit streams on the 
   Platinum 8180 with preset M12/subjective quality mode

More performance/quality data will be public as a white paper as soon 
after the internal review finished.

V5: - Change the config options (didn't need to enable-gpl for BSD+Patent,
      it's can compatible with LGPL2+, thanks Xavier correct this part),
      now just need to "--enable-libsvthevc" option.
    - Refine the code as the FFmpeg community's comments
      (https://patchwork.ffmpeg.org/patch/11347/, Tks Mark great review)
    - Add force_idr option.
    - Update the docs part as current implement (Tks Gyan review the docs part)     

V4: - Add more options support and update related docs (profile/aud/tile/...)
    - Rebase the docs in general.texi based on Gyan's review
    - Refine the encoder.texi part as Gyan's suggestion

V3: - Merge Changelog patch to new wrapper(Tks Moritz/Carl's review)

V2: - Refine the error handle (Tks Steven/James's review).
    - Add docs part (Tks Steven/Moritz's review).
    - Use named parameters in options.
    - Follow FFmpeg coding style and Changelog.

V1: - Add libsvt hevc encoder wrapper and a Changelog entry.

Jun Zhao (2):
  lavc/svt_hevc: add libsvt hevc encoder wrapper.
  doc: Add libsvt_hevc encoder docs

 Changelog                |    1 +
 configure                |    4 +
 doc/encoders.texi        |  145 +++++++++++++
 doc/general.texi         |   15 ++
 libavcodec/Makefile      |    1 +
 libavcodec/allcodecs.c   |    1 +
 libavcodec/libsvt_hevc.c |  526 ++++++++++++++++++++++++++++++++++++++++++++++
 7 files changed, 693 insertions(+), 0 deletions(-)
 create mode 100644 libavcodec/libsvt_hevc.c

More information about the ffmpeg-devel mailing list