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

..03-May-2022-

.gitlab/merge_request_templates/H03-May-2022-4432

Build/H08-May-2021-648579

Config/H08-May-2021-286263

Docs/H08-May-2021-7,0625,174

Source/H08-May-2021-348,439281,345

gstreamer-plugin/H03-May-2022-1,3781,077

snap/H08-May-2021-2823

test/H03-May-2022-36,74227,989

third_party/H08-May-2021-95,78064,464

.clang-formatH A D08-May-20212.2 KiB8685

.gitignoreH A D08-May-2021284 2625

.gitlab-ci.ymlH A D08-May-202123.8 KiB856813

.travis.ymlH A D08-May-20211.9 KiB6965

CHANGELOG.mdH A D08-May-20217.4 KiB267224

CONTRIBUTING.mdH A D08-May-20211.4 KiB2517

LICENSE.mdH A D08-May-20211.3 KiB2822

PATENTS.mdH A D08-May-20215.6 KiB10885

README.mdH A D08-May-20218.5 KiB172113

STYLE.mdH A D08-May-20216.2 KiB233179

README.md

1# Scalable Video Technology for AV1 (SVT-AV1 Encoder and Decoder)
2
3The Scalable Video Technology for AV1 (SVT-AV1 Encoder and Decoder) is an AV1-compliant encoder/decoder library core. The SVT-AV1 encoder development is a work-in-progress targeting performance levels applicable to both VOD and Live encoding / transcoding video applications. The SVT-AV1 decoder implementation is targeting future codec research activities.
4
5## License
6
7SVT-AV1 is licensed under the Alliance for Open Media license and Patent License. See [LICENSE](LICENSE.md) and [PATENTS](PATENTS.md) for details. Please refer to the [license Q&A](https://01.org/svt/downloads/svt-av1-license-change-qa) if you have any questions about the licensing history of SVT-AV1.
8
9## Documentation
10
11More details about the SVT-AV1 usage and implementation can be found under:
12
13- [svt-av1-encoder-user-guide](Docs/svt-av1_encoder_user_guide.md)
14- [svt-av1-decoder-user-guide](Docs/svt-av1_decoder_user_guide.md)
15- [svt-av1-documentation-page](Docs/README.md)
16
17## System Requirements
18
19### Operating System
20
21SVT-AV1 Encoder 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:
22
23- __Windows* Operating Systems (64-bit):__
24  - Windows* Server 2016
25- __Linux* Operating Systems (64-bit):__
26  - Ubuntu* 16.04 Server LTS
27  - Ubuntu* 18.04 Server LTS
28- __Unix* Operating Systems (64-bit):__
29  - MacOS
30
31### Hardware
32
33The SVT-AV1 Encoder library supports the x86 architecture
34
35- __CPU Requirements__
36
37    In order to achieve the performance targeted by the SVT-AV1 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™ processor, (Intel® Xeon® CPUs, E5-v4 or newer).
38
39- __RAM Requirements__
40
41    The SVT-AV1 Encoder adapts to the system on which it is being run. The memory requirements depend on the number of cores the system contains, the input frame rate of the input sequence (`-fps`) and the look ahead distance passed to the encoder (`-lad`). The SVT-AV1 Encoder application will display an error if the system does not have enough RAM to support the encode prior to the start of the encode. The following table shows the minimum amount of RAM required for some standard resolutions of 10bit video per stream:
42
43|       Resolution      | 8-vCPU Commit Size (GB)| 40-vCPU Commit Size (GB)|
44|-----------------------|------------------------|-------------------------|
45|       4k              |           14           |           24            |
46|       1080p           |            6           |           10            |
47|       720p            |            4           |            7            |
48|       480p            |            3           |            5            |
49
50## Build and Install
51
52### Windows* Operating Systems (64-bit)
53
54- __Build Requirements__
55  - Visual Studio* 2017 (download [here](https://www.visualstudio.com/vs/older-downloads/)) or 2019 (download [here](https://visualstudio.microsoft.com/downloads/))
56  - CMake 3.5 or later (download [here](https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-win64-x64.msi))
57  - YASM Assembler version 1.2.0 or later
58    - Download the yasm exe from the following [link](http://www.tortall.net/projects/yasm/releases/yasm-1.3.0-win64.exe)
59    - Rename yasm-*-win64.exe to yasm.exe
60    - Copy yasm.exe into a location that is in the `PATH` environment variable
61
62- __Build Instructions__
63  - Build the project by following the steps below
64    - cd into `Build\windows`
65    - run `build.bat <2019|2017|2015>` [This will generate the .sln files and build the project]
66
67- __Binaries Location__
68  - 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.
69
70- __Installation__
71
72  For the binaries to operate properly on your system, the following conditions have to be met:
73  - On any of the Windows* Operating Systems listed in the OS requirements section, install Visual Studio* 2015/2017/2019
74  - Once the installation is complete, copy the binaries to a location making sure that both the sample application `SvtAv1EncApp.exe` and library `SvtAv1Enc.dll` are in the same folder.
75  - Open the command prompt window at the chosen location and run the sample application to encode: `SvtAV1EncApp.exe -i [in.yuv] -w [width] -h [height] -b [out.ivf]`
76  - Sample application supports reading from pipe. E.g. `ffmpeg -i [input.mp4] -nostdin -f rawvideo -pix_fmt yuv420p - | SvtAv1EncApp.exe -i stdin -n [number_of_frames_to_encode] -w [width] -h [height]`
77
78### Linux* Operating Systems (64-bit)
79
80- __Build Requirements__
81  - GCC 5.4.0 or later
82  - CMake 3.5.1 or later
83  - YASM Assembler version 1.2.0 or later
84
85- __Build Instructions__
86  - `cd Build/linux`
87  - `./build.sh <release | debug>`
88
89- __Sample Binaries location__
90  - Binaries can be found under `Bin/Release` and/or `Bin/Debug`
91
92- __Installation__
93
94  For the binaries to operate properly on your system, the following conditions have to be met:
95
96  - On any of the Linux* Operating Systems listed above, copy the binaries under a location of your choice.
97  - Change the permissions on the sample application `SvtAV1EncApp` executable by running the command: `chmod +x SvtAv1EncApp`
98  - cd into your chosen location
99  - Run the sample application to encode: `./SvtAv1EncApp -i [in.yuv] -w [width] -h [height] -b [out.ivf]`
100  - Sample application supports reading from pipe. E.g. `ffmpeg -i [input.mp4] -nostdin -f rawvideo -pix_fmt yuv420p - | ./SvtAv1EncApp -i stdin -n [number_of_frames_to_encode] -w [width] -h [height]`
101
102## SVT-AV1 ffmpeg plugin installation
103
104### 1. Build and install SVT-AV1
105
106``` bash
107git clone --depth=1 https://gitlab.com/AOMediaCodec/SVT-AV1.git
108cd SVT-AV1
109cd Build
110cmake .. -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Release
111make -j $(nproc)
112sudo make install
113```
114
115###  2. Enable libsvtav1 in FFmpeg
116
117NOTE: If you wish to use an FFmpeg tag or release before 4.4, please go [here](https://gitlab.com/AOMediaCodec/SVT-AV1/tree/v0.8.4/ffmpeg_plugin) and consult that page to properly patch ffmpeg for use with SVT-AV1.
118
119``` bash
120   git clone --depth=1 https://github.com/FFmpeg/FFmpeg ffmpeg
121   cd ffmpeg
122   export LD_LIBRARY_PATH+=":/usr/local/lib"
123   export PKG_CONFIG_PATH+=":/usr/local/lib/pkgconfig"
124   ./configure --enable-libsvtav1
125   make -j $(nproc)
126```
127
128###  3. Verify that ffmpeg is working
129
130``` bash
131./ffmpeg -i input.mp4 -c:v libsvtav1 -y test.mp4
132```
133
134## How to evaluate by ready-to-run executables with docker
135
136Refer to the guide [here](https://github.com/OpenVisualCloud/Dockerfiles/blob/master/doc/svt.md#Evaluate-SVT).
137
138## Demo features and limitations
139
140- **Multi-instance support:** The multi-instance functionality is a demo feature implemented in the SVT-AV1 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: `SvtAV1EncApp.exe -nch 2 -c firstchannel.cfg secondchannel.cfg`
141- **Features enabled:** The library will display an error message any feature combination that is not currently supported.
142
143## How to Contribute
144
145We welcome community contributions to the SVT-AV1 Encoder and Decoder. Thank you for your time! By contributing to the project, you agree to the license, patent and copyright terms in the AOM License and Patent License  and to the release of your contribution under these terms. See [LICENSE](LICENSE.md) and [PATENTS](PATENTS.md) for details.
146
147## Contributor agreement
148
149You will be required to execute the appropriate [contributor agreement](http://aomedia.org/license/) to ensure that the AOMedia Project has the right to distribute your changes.
150
151### Contribution process
152
153- Follow the [coding guidelines](STYLE.md) and the [contributing guidelines](CONTRIBUTING.md)
154
155- Validate that your changes do not break a build
156
157- Perform smoke tests and ensure they pass
158
159- Submit a pull request for review to the maintainer
160
161### How to Report Bugs and Provide Feedback
162
163Use the [Issues](https://gitlab.com/AOMediaCodec/SVT-AV1/issues) tab on Github. To avoid duplicate issues, please make sure you go through the existing issues before logging a new one.
164
165## IRC
166
167`#svt` on Freenode. Join via [Freenode Webchat](https://webchat.freenode.net/?channels=svt) or use your favorite IRC client. A [public log](https://freenode.logbot.info/svt) is available.
168
169## Performance tracker
170
171Performance and raw data files available at <http://videocodectracker.dev>
172