[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:
https://github.com/intel/SVT-HEVC.
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
https://github.com/intel/SVT-HEVC/commit/f28d492971ef58dc655ccdc7d819cc18ddb45a2f)
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