Skip to content
This repository was archived by the owner on Jul 29, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
808457f
Add CLI support for vbv
bhavnahariMCW Dec 11, 2018
de97249
Enable vbv for abr mode
bhavnahariMCW Dec 18, 2018
488721b
Added VBV frame level support
dinesh0603 Jan 8, 2019
8f74ea2
1. Fixed Index comparision to compare with current Index + lookAheadD…
dinesh0603 Jan 22, 2019
8f3b2a4
Enforce vbv buffer update to happen in decode order
kirithika7 Jan 23, 2019
f1e1a17
Add new cli -hrd (default 0) + enable flags to signal hrd
kirithika7 Jan 23, 2019
8c2f324
Add support for HRD SEI signalling
kirithika7 Jan 24, 2019
bfd35f2
Add support for Active Parameter Set SEI
kirithika7 Jan 30, 2019
38b744d
Control VBV bufferFill access using mutex
arunaMathes Jan 25, 2019
853a45e
Add cli -vbv-init and remove hard-coded vbv buffer initialization
arunaMathes Jan 31, 2019
87f7729
If rate control is ON, base layer picture will not be processed until…
anaghdin Jan 27, 2019
708bd26
VBV Code clean up and made VBV as function call
dinesh0603 Feb 18, 2019
32dc411
Fix for the deadlock encoding frames fewer than 48
anaghdin Feb 18, 2019
88d1bef
Move vbv algorithm before using picture Qp for other RC context updates
kirithika7 Feb 22, 2019
f4d19b8
Fix Warning: When NAL Unit is non-VCL NAL, TemporalId shall be greate…
kirithika7 Feb 22, 2019
cddec5a
Fix bug:The value of rbsp_stop_one_bit shall be equal to 1 in vps
kirithika7 Feb 25, 2019
96524c4
Fix cbr signalling
kirithika7 Feb 26, 2019
a199b68
Fix Hrd Issue
kirithika7 Feb 27, 2019
e692a04
Fix uninitialized BPnumber value error when hrd is disabled
kirithika7 Feb 28, 2019
c8a7166
Fix Hrd signalling for fixed GOP length
kirithika7 Feb 28, 2019
54eceb4
-Fix 1. encoded bitrate will be within target Bitrate limit 2. previo…
dinesh0603 Mar 5, 2019
429edb5
Add code to copy the pcs context into the Packetization Reorder Queue…
kirithika7 Mar 12, 2019
d857190
Add code to splice the bitstream and insert pic timing SEI
kirithika7 Mar 12, 2019
0d74be5
Fix bugs and cleanup
kirithika7 Mar 12, 2019
22f80ea
Refactor byte shifting code with memcpy+cleanup
kirithika7 Mar 13, 2019
5f52a2f
Add support for strict cbr to prevent hrd buffer overflow
kirithika7 Mar 13, 2019
dd24050
Add code to consider filler bits for RC
kirithika7 Mar 13, 2019
713643e
Merged Master to VBV-DEV branch
dinesh0603 Mar 19, 2019
6311c66
Merge branch 'master' tip into vbv_dev
dinesh0603 Mar 20, 2019
f268574
Update the filler bit error in the packetization feedback to rate con…
kirithika7 Mar 21, 2019
f1cd4c5
Added feedback from packetization to picturemanager to address a dead…
anaghdin Mar 26, 2019
0b1103a
Fix the demux port
anaghdin Mar 27, 2019
494cb24
update the pictureDemuxResultsProducerFifoPtrArray ports
anaghdin Mar 27, 2019
7b70491
Revert the feedback of filler bits error to GOP's virtual Buffer level
kirithika7 Mar 27, 2019
ac9484a
Remove the macro PACK_FEEDBACK
anaghdin Mar 27, 2019
07c3947
Fix for deadlock when vbv is not enabled
kirithika7 Mar 29, 2019
3df55f3
Fix compiler warnings
kirithika7 Mar 29, 2019
707e8fd
Merge branch 'vbv_dev' of https://bitbucket.org/multicoreware/svt-hev…
dinesh0603 Apr 1, 2019
e3b304d
Fix for Final Bitrate is greater than TBR in Strict CBR
dinesh0603 Apr 4, 2019
c009338
Merge branch 'vbv_dev' of https://bitbucket.org/multicoreware/svt-hev…
dinesh0603 Apr 4, 2019
28ae9ae
1.Removed Duplicte code
dinesh0603 Apr 22, 2019
3854916
Merge branch 'master' (Till commit : 2bdfb22) into vbv_dev
dinesh0603 Apr 23, 2019
9db1593
- Updated Sample.cfg for added cli's and Readme
dinesh0603 Apr 24, 2019
0caa1cc
-Modified code as per review comments & coding guidelines
dinesh0603 Apr 25, 2019
5f6db73
Merge branch 'master' into vbv_dev
tianjunwork Apr 30, 2019
5d0af0f
-Modified code as per coding Guidelines
dinesh0603 May 8, 2019
3ad1f46
Merge branch 'master' into vbv_dev
dinesh0603 May 9, 2019
f6482fd
Fix for Deadlock
May 9, 2019
67f68d8
-Modified code as per review comments and coding guidelines
dinesh0603 May 13, 2019
742f9ca
-Removed Duplicate code (encMode) in EbAppConfig.c and Modified code …
dinesh0603 May 13, 2019
a0bceeb
Fixed hrd 1 crash issues caused by writeUvlc long bits, memmove and
Jun 11, 2019
575a4b8
Merge pull request #1 from kelvin412/vbv_dev_crash
dinesh0603 Jun 11, 2019
0acc25b
Fix HRD initialization in packetization
kavithasampath Jun 26, 2019
3b9a0fc
Fix encoder crash with intra period 0
snehaa8 Jun 26, 2019
40bbea8
Merge branch 'master' of https://github.com/OpenVisualCloud/SVT-HEVC …
kirithika7 Jul 19, 2019
2f9c396
Cleanup
kirithika7 Jul 19, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Merged Master to VBV-DEV branch
  • Loading branch information
dinesh0603 committed Mar 19, 2019
commit 713643e2efce3e6bf1ad7a0fd2b9e0c8a0f86f8f
54 changes: 54 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
language: c
dist: xenial

addons:
apt:
packages:
- cmake
- yasm
homebrew:
packages:
- yasm

jobs:
include:
# General Linux build job
- name: Build
script:
- cd Build/linux
- ./build.sh release
# General macOS build job
- name: macOS build
os: osx
script:
- cd Build/linux
- ./build.sh release
# Coveralls test job
- name: Test & Coveralls
before_install:
- pip install --user cpp-coveralls
script:
- cd Build/linux
- ./build.sh release
after_success:
- coveralls

# FFmpeg interation build
- name: FFmpeg patch
script:
# Build and install SVT-HEVC
- cd $TRAVIS_BUILD_DIR
- cd Build
- cmake ..
- make -j$(nproc)
- sudo make install
# Apply SVT-HEVC plugin and enable libsvthevc to FFmpeg
- git clone https://github.com/FFmpeg/FFmpeg ffmpeg
- cd ffmpeg
- git checkout release/4.1
- git apply $TRAVIS_BUILD_DIR/ffmpeg_plugin/0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch
- git apply $TRAVIS_BUILD_DIR/ffmpeg_plugin/0002-doc-Add-libsvt_hevc-encoder-docs.patch
- export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib
- export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/usr/local/lib/pkgconfig
- ./configure --enable-libsvthevc
- make --quiet -j$(nproc)
3 changes: 0 additions & 3 deletions Build/linux/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@ RANLIB_COMPILER=gcc-ranlib
CMAKE_COMPILER=$GCC_COMPILER

if [ $# -eq 0 ]; then
debug
release
elif [ "$1" = "clean" ]; then
clean
Expand All @@ -66,10 +65,8 @@ elif [ "$1" = "release" ]; then
release

elif [ "$1" = "all" ]; then
debug
release
elif [ "$1" = "gcc" ]; then
debug
release
else
echo "build.sh <clean|all|debug|release|help>"
Expand Down
15 changes: 13 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,12 @@ endif()
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
set(CMAKE_ASM_NASM_FLAGS "-DWIN64")
set(CMAKE_ASM_NASM_FLAGS_DEBUG "")
set(CMAKE_EXE_LINKER_FLAGS " ")
set(CMAKE_SHARED_LINKER_FLAGS " ")
if (MSVC)
set(CMAKE_C_FLAGS " /GS /sdl ")
set(CMAKE_CXX_FLAGS " /GS /sdl ")
set(CMAKE_EXE_LINKER_FLAGS " /NXCompat /DynamicBase ")
set(CMAKE_SHARED_LINKER_FLAGS " /NXCompat /DynamicBase ")
endif()
endif()

if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
Expand All @@ -77,6 +81,13 @@ if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
set(CMAKE_C_FLAGS_DEBUG "-O0 -g")
endif()

# Prepare for Coveralls
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeModules)
if(CMAKE_COMPILER_IS_GNUCXX)
include(CodeCoverage)
setup_target_for_coverage(${PROJECT_NAME}_coverage ${PROJECT_TEST_NAME} coverage)
endif()

# Add Subdirectories
add_subdirectory (Source/Lib)
add_subdirectory (Source/App)
Expand Down
8 changes: 8 additions & 0 deletions Config/Sample.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,14 @@ RecoveryPoint : 0 # SEI message (0= OFF, 1=ON )
TemporalId : 1 # 0: OFF, 1: Insert temporal ID in NAL units
SwitchThreadsToRtPriority : 1 # 0: OFF, 1: Switch threads to real time priority (works on Linux only)
FPSInVPS : 0 # 0: OFF, 1: Enable VPS timing info
MaxCLL : 0 # SEI message (0=OFF, 1=ON )
MaxFALL : 0 # SEI message (0=OFF, 1=ON )
UseMasterDisplay : 0 # SEI message. Enables or disables the MasterDisplayColorVolume (0=OFF, 1=ON )
MasterDisplay : G(0,0)B(0,0)R(0,0)WP(0,0)L(0,0)
# SEI message. Signals SMPTE ST 2086 display info in the format "G(%hu,%hu)B(%hu,%hu)R(%hu,%hu)WP(%hu,%hu)L(%u,%u)" where %hu,%u are unsigned 16bit and 32 bit integers
DolbyVisionProfile : 0 # SEI message (0=OFF, 8.1 or 81 : Send bitstreams compliant to Dolby Vision Profile 81)
DolbyVisionRpuFile : Dolby.txt # SEI message. Dolby Vision RPU metadata file path.
NaluFile : Nalu.txt # SEI message. CEA 608/708 dynamic metadata file path.

====================== Platform Specific Flags ===============================
AsmType : 1 # Assembly instruction set (0: non-AVX2, 1: up to AVX512 (Default: set based on platform capabilities))
Expand Down
Binary file added Docs/10bit_packed.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Docs/10bit_unpacked.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Docs/10bit_yuv420p.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Docs/3-layer-hierarchical-low-delay.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Docs/3-layer-hierarchical-low-delay2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Docs/3-layer-hierarchical-low-delay3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Docs/64x64_after_2bit_compression.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Docs/64x64_after_unrolling.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Docs/64x64_block_after_unrolling.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Docs/8bit_yuv420p_1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed Docs/SVT-HEVC_Encoder_User_Guide.pdf
Binary file not shown.
Binary file added Docs/encoding_mode_res_table.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
480 changes: 480 additions & 0 deletions Docs/svt-hevc_encoder_user_guide.md

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions NOTICES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Notices and Disclaimers

Optimization Notice: Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.
Notice Revision #20110804
Intel technologies’ features and benefits depend on system configuration and may require enabled hardware, software or service activation. Performance varies depending on system configuration. No computer system can be absolutely secure. Check with your system manufacturer or retailer.
No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document except under the terms of the OSI-approved BSD+Patent license. See LICENSE for details.
Intel disclaims all express and implied warranties, including without limitation, the implied warranties of merchantability, fitness for a particular purpose, and non-infringement, as well as any warranty arising from course of performance, course of dealing, or usage in trade.
The products and services described may contain defects or errors known as errata which may cause deviations from published specifications. Current characterized errata are available on request. No product or component can be absolutely secure.
This document contains information on products, services and/or processes in development. All information provided here is subject to change without notice. Contact your Intel representative to obtain the latest forecast, schedule, specifications and roadmaps.
Intel, the Intel logo, Intel Core, Intel Xeon, and others are trademarks of Intel Corporation or its subsidiaries in the U.S. and/or other countries.
*Other names and brands may be claimed as the property of others.
Copyright 2019 Intel Corporation
118 changes: 62 additions & 56 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,40 @@

# Scalable Video Technology for HEVC Encoder (SVT-HEVC Encoder)
[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/intel/SVT-HEVC?branch=master&svg=true)](https://ci.appveyor.com/project/intel/SVT-HEVC)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The left side openvisualcloud is the new one, please fix these.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed and pushed patch (Commit : 9db1593)

[![Travis Build Status](https://travis-ci.com/intel/SVT-HEVC.svg?branch=master)](https://travis-ci.com/intel/SVT-HEVC)
[![Coverage Status](https://coveralls.io/repos/github/intel/SVT-HEVC/badge.svg?branch=master)](https://coveralls.io/github/intel/SVT-HEVC?branch=master)

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.

The whitepaper for SVT-HEVC can be found here: https://01.org/svt

This encoder has been optimized to achieve excellent performance levels using 13 density-quality presets (please refer to the user guide for more details) on a system with a dual Intel® Xeon® Scalable CPU targeting:

- Real-time encoding of up to one 8Kp60/10-bit streams on the Platinum 8180 with M11 in the subjective quality mode
- Real-time encoding of up to one 8Kp60/10-bit streams on the Platinum 8180 with M11 in the visual quality mode

- Real-time encoding of up to two 8Kp50/10-bit streams on the Platinum 8180 with M12 in the visual quality mode

- Real-time encoding of up to two 8Kp50/10-bit streams on the Platinum 8180 with M12 in the subjective quality mode
- Real-time encoding of up to four 4Kp60/10-bit streams on the Gold 6148 with M12 in the visual quality mode

- Real-time encoding of up to four 4Kp60/10-bit streams on the Gold 6148 with M12 in the subjective quality mode
- Real-time encoding of up to six 4Kp60/10-bit streams on the Platinum 8180 with M12 in the visual quality mode

- Real-time encoding of up to six 4Kp60/10-bit streams on the Platinum 8180 with M12 in the subjective quality mode
SVT-HEVC Encoder also supports 3 modes:

SVT-HEVC Encoder also supports 2 modes:
- A visually optimized mode for visual quality (-tune 0)

- A Subjectively optimized mode (-tune 0)
- An PSNR/SSIM optimized mode for PSNR / SSIM benchmarking (-tune 1 (Default setting))

- An Objectively optimized mode for PSNR / SSIM / VMAF benchmarking (-tune 1 (Default setting))
- An VMAF optimized mode for VMAF benchmarking (-tune 2)

The encoder can also run the ABR profile below on one Intel® Xeon-D™ D-2191:


| ABR Profile |
| ABR Profile |
|---------------------------------------|
| 1 x 4kp60/10-bit Stream (@M11) |
| 1 x 1080p60/10-bit Stream (@M10) |
| 1 x 720p60/8-bit Stream (@M9) |
| 1 x 480p60/8-bit Stream (@M9) |
| 1 x 360p60/8-bit Stream (@M9) |
| 1 x 4kp60/10-bit Stream (@M11) |
| 1 x 1080p60/10-bit Stream (@M10) |
| 1 x 720p60/8-bit Stream (@M9) |
| 1 x 480p60/8-bit Stream (@M9) |
| 1 x 360p60/8-bit Stream (@M9) |

# License

Expand All @@ -37,7 +43,7 @@ Scalable Video Technology is licensed under the OSI-approved BSD+Patent license.
# Documentation

More details about the encoder usage can be found under:
- [SVT-HEVC Encoder User Guide](Docs/SVT-HEVC_Encoder_User_Guide.pdf)
- [SVT-HEVC Encoder User Guide](Docs/svt-hevc_encoder_user_guide.md)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please remove extra empty line.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed empty line and pushed patch (Commit : 9db1593)

# System Requirements

Expand All @@ -47,13 +53,13 @@ SVT-HEVC may run on any Windows* or Linux* 64 bit operating systems. The list be

* __Windows* Operating Systems (64-bit):__

- Windows* Server 2016
- Windows* Server 2016

* __Linux* Operating Systems (64-bit):__

- Ubuntu* 16.04 Server LTS
- Ubuntu* 16.04 Server LTS

- Ubuntu* 18.04 Server LTS
- Ubuntu* 18.04 Server LTS

## Hardware

Expand All @@ -68,79 +74,75 @@ In order to achieve the performance targeted by the encoder, the specific CPU mo
In order to run the highest resolution supported by the encoder, at least 64GB of RAM is required to run a single 8kp50/10-bit encode. The encoder application will display an error if the system does not have enough RAM to support such. The following table shows the minimum amount of RAM required for some standard resolutions of 10bit video per stream:


| Resolution | Minimum Footprint (GB)|
| Resolution | Minimum Footprint (GB)|
|-----------------------|-----------------------|
| 8k | 64 |
| 4k | 16 |
| 1080p | 6 |
| 720p/1080i | 4 |
| 480p | 3 |
| 8k | 64 |
| 4k | 16 |
| 1080p | 6 |
| 720p/1080i | 4 |
| 480p | 3 |

# Build and Install

## Windows* Operating Systems (64-bit):

* __Build Requirements__
- Visual Studio* 2017 (can be downloaded [here](https://www.visualstudio.com/vs/older-downloads/))
- CMake 3.5 or later (can be downloaded [here](https://github.com/Kitware/CMake/releases/download/v3.13.0/cmake-3.13.0-win64-x64.msi))
- YASM Assembler version 1.2.0 or later
- Download the yasm exe from the following [link](http://www.tortall.net/projects/yasm/releases/yasm-1.3.0-win64.exe)
- Rename yasm-1.3.0-win64.exe to yasm.exe
- Copy yasm.exe into a location that is in the PATH environment variable
- Visual Studio* 2017 (can be downloaded [here](https://www.visualstudio.com/vs/older-downloads/))
- CMake 3.5 or later (can be downloaded [here](https://github.com/Kitware/CMake/releases/download/v3.13.0/cmake-3.13.0-win64-x64.msi))
- YASM Assembler version 1.2.0 or later
- Download the yasm exe from the following [link](http://www.tortall.net/projects/yasm/releases/yasm-1.3.0-win64.exe)
- Rename yasm-1.3.0-win64.exe to yasm.exe
- Copy yasm.exe into a location that is in the PATH environment variable

* __Build Instructions__
- Generate the Visual Studio* 2017 project files by following the steps below in a windows command line prompt:
- cd Build\windows
- generate_vs17.bat
- Open "svt-hevc.sln" using Visual Studio* 2017 and build the solution
- Generate the Visual Studio* 2017 project files by following the steps below in a windows command line prompt:
- In the main repository directory go under the <repo dir>\Build\windows location
- Run generate_vs17.bat [such would generate the visual studio project files]
- Open the "svt-hevc.sln" using Visual Studio* 2017 and click on Build -- > Build Solution

* __Binaries Location__
- Post build, binaries can be found under Bin/Release and / or Bin/Debug
- Binaries can be found under <repo dir>\Bin/Release or <repo dir>\Bin/Debug, depending on whether Debug or Release were selected in the build mode

* __Installation__
- For the binaries to operate properly on your system, the following conditions have to be met:
- On any of the Windows* Operating Systems listed in the OS requirements section, install Visual Studio* 2017
- Once the installation is complete, copy the binaries to a location making sure that both the sample application "SvtHevcEncApp.exe” and library "SvtHevcEnc.dll” are in the same folder.
- Open the command prompt window at the chosen location and run the sample application to encode. SvtHevcEncApp.exe -i [in.yuv] -w [width] -h [height] -b [out.265].
- Sample application supports reading from pipe. E.g. ffmpeg -i [input.mp4] -nostdin -f rawvideo -pix_fmt yuv420p - | SvtHevcEncApp.exe -i stdin -n [number_of_frames_to_encode] -w [width] -h [height].
For the binaries to operate properly on your system, the following conditions have to be met:
- On any of the Windows* Operating Systems listed in the OS requirements section, install Visual Studio* 2017
- Once the installation is complete, copy the binaries to a location making sure that both the sample application "SvtHevcEncApp.exe” and library "SvtHevcEnc.dll” are in the same folder.
- Open the command prompt window at the chosen location and run the sample application to encode. SvtHevcEncApp.exe -i [in.yuv] -w [width] -h [height] -b [out.265].
- Sample application supports reading from pipe. E.g. ffmpeg -i [input.mp4] -nostdin -f rawvideo -pix_fmt yuv420p - | SvtHevcEncApp.exe -i stdin -n [number_of_frames_to_encode] -w [width] -h [height].

## Linux* Operating Systems (64-bit):

* __Build Requirements__
- GCC 5.4.0 or later
- CMake 3.5.1 or later
- YASM Assembler version 1.2.0 or later
- GCC 5.4.0 or later
- CMake 3.5.1 or later
- YASM Assembler version 1.2.0 or later

* __Build Instructions__
- cd Build/linux
- ./build.sh <release | debug> (if none specified, both release and debug will be built)
- In the main repository, run
- mkdir build && cd build && cmake .. && make -j ```nproc``` && sudo make install

* __Sample Binaries location__
- Binaries can be found under Bin/Release and / or Bin/Debug
- Binaries can be found under Bin/Release

* __Installation__
For the binaries to operate properly on your system, the following conditions have to be met:
- On any of the Linux* Operating Systems listed above, copy the binaries under a location of your choice.
- Change the permissions on the sample application “SvtHevcEncApp” executable by running the command: chmod +x SvtHevcEncApp
- cd into your chosen location
- Run the sample application to encode. ./SvtHevcEncApp -i [in.yuv] -w [width] -h [height] -b [out.265].
- Sample application supports reading from pipe. E.g. ffmpeg -i [input.mp4] -nostdin -f rawvideo -pix_fmt yuv420p - | ./SvtHevcEncApp -i stdin -n [number_of_frames_to_encode] -w [width] -h [height].
- On any of the Linux* Operating Systems listed above, copy the binaries under a location of your choice.
- Change the permissions on the sample application “SvtHevcEncApp” executable by running the command: chmod +x SvtHevcEncApp
- cd into your chosen location
- Run the sample application to encode. ./SvtHevcEncApp -i [in.yuv] -w [width] -h [height] -b [out.265].
- Sample application supports reading from pipe. E.g. ffmpeg -i [input.mp4] -nostdin -f rawvideo -pix_fmt yuv420p - | ./SvtHevcEncApp -i stdin -n [number_of_frames_to_encode] -w [width] -h [height].

# Demo features and limitations

- **Resolution support:** This version supports only multiple-of-8 resolutions in width for 8-bit video input and in width and height for 10-bit video input.

- **VBR BRC mode:** The VBR functionality implemented in SVT-HEVC Encoder is a demo feature to allow for an easier integration of product level BRC. The algorithm implemented would allow the encoder to generate an output bit stream matching, with a best effort, the target bitrate. The algorithm does not guarantee a certain maximum bitrate or maximum buffer size [does not follow HRD compliance]. When set to encode in VBR mode, the encoder does not produce a bit-exact output from one run to another.

- **Speed Control output:** The speed control functionality implemented for SVT-HEVC Encoder is a demo feature showcasing the capability of the library to adapt to the resources available on the fly in order to generate the best possible video quality while maintaining a real-time encoding speed. When set to use the Speed Control mode, the encoder does not produce a bit-exact output from one run to another.

- **Multi-instance support:** The multi-instance functionality is a demo feature implemented in the SVT-HEVC Encoder sample application as an example of one sample application using multiple encoding libraries. Encoding using the multi-instance support is limited to only 6 simultaneous streams. For example two channels encoding on Windows: SvtHevcEncApp.exe -nch 2 -c firstchannel.cfg secondchannel.cfg

- **Separate Fields:** Using the separate fields functionality migh result in a corrupted video output.

# How to Contribute

We welcome community contributions to the Scalable Video Technology. Thank you for your time! By contributing to the project, you agree to the license and copyright terms therein and to the release of your contribution under these terms.
We welcome community contributions to the SVT-HEVC Encoder. Thank you for your time! By contributing to the project, you agree to the license and copyright terms therein and to the release of your contribution under these terms.

## Contribution process

Expand All @@ -153,3 +155,7 @@ We welcome community contributions to the Scalable Video Technology. Thank you f
# How to Report Bugs and Provide Feedback

Use the "Issues" tab on Github

# Notices and Disclaimers

The notices and disclaimers can be found [here](NOTICES.md)
Loading