• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

.github/H02-Jun-2021-3325

Build/H02-Jun-2021-533486

Config/H03-May-2022-123103

Docs/H03-May-2022-537342

Source/H02-Jun-2021-173,940128,517

Tests/H02-Jun-2021-1,7471,452

ffmpeg_plugin/H02-Jun-2021-1,6311,605

gstreamer-plugin/H03-May-2022-1,9741,609

.gitignoreH A D02-Jun-2021832 5952

.travis.ymlH A D02-Jun-20217.7 KiB202201

LICENSE.mdH A D02-Jun-20212.8 KiB2613

NOTICES.mdH A D02-Jun-20212.3 KiB1311

README.mdH A D02-Jun-20218.2 KiB161105

STYLE.mdH A D02-Jun-20214.4 KiB153108

appveyor.ymlH A D02-Jun-20213.6 KiB9787

README.md

1# Scalable Video Technology for HEVC Encoder (SVT-HEVC Encoder)
2
3[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/openvisualcloud/SVT-HEVC?branch=master&svg=true)](https://ci.appveyor.com/project/openvisualcloud/SVT-HEVC)
4[![Travis Build Status](https://travis-ci.com/OpenVisualCloud/SVT-HEVC.svg?branch=master)](https://travis-ci.com/OpenVisualCloud/SVT-HEVC)
5
6The 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.
7
8The whitepaper for SVT-HEVC can be found here: <https://01.org/svt>
9
10This encoder has been optimized to achieve excellent performance levels using 12 density-quality presets (please refer to the user guide for more details).
11
12## License
13
14Scalable Video Technology is licensed under the OSI-approved BSD+Patent license. See [LICENSE](LICENSE.md) for details.
15
16## Documentation
17
18More details about the encoder usage can be found under:
19
20- [svt-hevc-encoder-user-guide](Docs/svt-hevc_encoder_user_guide.md)
21
22## System Requirements
23
24### Operating System
25
26SVT-HEVC may run on any Windows* or Linux* 64 bit operating systems. The list below represents the operating systems that the encoder application and library were tested and validated on:
27
28- __Windows* Operating Systems (64-bit):__
29
30  - Windows Server 2016
31
32- __Linux* Operating Systems (64-bit):__
33
34  - Ubuntu 16.04 Server LTS
35
36  - Ubuntu 18.04 Server LTS
37
38  - CentOS 7.4/7.5/7.6
39
40### Hardware
41
42The SVT-HEVC Encoder library supports x86 architecture
43
44- __CPU Requirements__
45
46In order to achieve the performance targeted by the encoder, the specific CPU model listed above would need to be used when running the encoder. Otherwise, the encoder runs on any 5th Generation Intel Core™ Processors (formerly Broadwell) CPUs (Xeon E5-v4) or newer.
47
48- __RAM Requirements__
49
50In 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:
51
52| Resolution | Minimum Footprint (GB) |
53| ---------- | ---------------------- |
54| 8k         | 64                     |
55| 4k         | 16                     |
56| 1080p      | 6                      |
57| 720p/1080i | 4                      |
58| 480p       | 3                      |
59
60## Build and Install
61
62### Windows* Operating Systems (64-bit)
63
64- __Build Requirements__
65  - Visual Studio* 2017 (download [here](https://www.visualstudio.com/vs/older-downloads/)) or 2019 (download [here](https://visualstudio.microsoft.com/downloads/))
66  - CMake 3.14 or later (download [here](https://github.com/Kitware/CMake/releases/download/v3.14.4/cmake-3.14.4-win64-x64.msi))
67  - YASM Assembler version 1.2.0 or later
68    - Download the yasm exe from the following [link](http://www.tortall.net/projects/yasm/releases/yasm-1.3.0-win64.exe)
69    - Rename yasm-1.3.0-win64.exe to yasm.exe
70    - Copy yasm.exe into a location that is in the PATH environment variable
71
72- __Build Instructions__
73  - Build the project by following the steps below in a windows command prompt:
74    - In the main repository directory, cd to `<repo dir>\Build\windows`
75    - Run `build.bat [2019|2017|2015]` [This will automatically generate and build the project]
76  - To Build the project using a generator other than Visual Studio
77    - run `build.bat [ninja|msys|mingw|unix]` instead of the second command
78    - Note: These are not officially supported and thus are not displayed in the help message.
79
80- __Binaries Location__
81  - Binaries can be found under `<repo dir>\Bin\Release` or `<repo dir>\Bin\Debug`, depending on whether Debug or Release was selected
82
83- __Installation__\
84    For the binaries to operate properly, the following conditions have to be met:
85  - On any of the Windows* Operating Systems listed in the OS requirements section, install Visual Studio* 2017 or 2019
86  - Once the build is complete, copy the binaries to a location making sure that both the application `SvtHevcEncApp.exe` and library `SvtHevcEnc.dll` are in the same folder.
87  - Open the command prompt at the chosen location and run the application to encode. `SvtHevcEncApp.exe -i [in.yuv] -w [width] -h [height] -b [out.265]`
88  - The application also 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]`
89
90### Linux* Operating Systems (64-bit)
91
92- __Build Requirements__
93  - GCC 5.4.0 or later
94  - CMake 3.5.1 or later
95  - YASM Assembler version 1.2.0 or later
96
97- __Build Instructions__
98  - In the main repository, run either the provided build script
99
100    ``` bash
101    cd Build/linux
102    ./build.sh [release|debug] [static|shared] [install]
103    # Requires sudo permission for installing
104    # Run './build.sh -h' to see the full help
105    ```
106
107  - or run the commands directly
108
109    ``` bash
110    mkdir build && cd build && cmake .. -DCMAKE_BUILD_TYPE=<Release|Debug> && make -j $(nproc) && sudo make install
111    ```
112
113- __Sample Binaries location__
114  - Binaries can be found under `$REPO_DIR/Bin/Release`
115
116- __Installation__\
117For the binaries to operate properly, the following conditions have to be met:
118  - On any of the Linux* Operating Systems listed above, copy the binaries under a location of your choice.
119  - Change the permissions on the sample application “SvtHevcEncApp” executable by running the command: `chmod +x SvtHevcEncApp`
120  - cd into your chosen location
121  - Run the sample application to encode. `./SvtHevcEncApp -i [in.yuv] -w [width] -h [height] -b [out.265]`
122  - 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]`
123
124## How to evaluate by ready-to-run executables with docker
125
126Refer to the guide [here](https://github.com/OpenVisualCloud/Dockerfiles/blob/master/doc/svt.md#Evaluate-SVT).
127
128## Demo features and limitations
129
130- **VBR BRC mode:** \
131  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.
132
133- **Speed Control output:** \
134  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.
135
136- **Multi-instance support:** \
137  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
138
139## How to Contribute
140
141We 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.
142
143### Contribution process
144
145- Follow the [coding_guidelines](STYLE.md)
146- Validate that your changes do not break a build
147- Perform smoke tests and ensure they pass
148- Submit a pull request for review to the maintainer
149
150### How to Report Bugs and Provide Feedback
151
152Use the [Issues](https://github.com/OpenVisualCloud/SVT-HEVC/issues) tab on Github
153
154## IRC
155
156`#svt` on Freenode. Join via [Freenode Webchat](https://webchat.freenode.net/?channels=svt) or use your favorite IRC client.
157
158## Notices and Disclaimers
159
160The notices and disclaimers can be found [here](NOTICES.md)
161