• Stars
    star
    222
  • Rank 179,123 (Top 4 %)
  • Language
    C
  • License
    Other
  • Created almost 6 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

SVT VP9 encoder. Scalable Video Technology (SVT) is a software-based video coding technology that is highly optimized for Intel® Xeon® processors. Using the open source SVT-VP9 encoder, it is possible to spread video encoding processing across multiple Intel® Xeon® processors to achieve a real advantage of processing efficiency.

Scalable Video Technology for VP9 Encoder (SVT-VP9 Encoder)

AppVeyor Build Status Travis Build Status Coverage Status

The Scalable Video Technology for VP9 Encoder (SVT-VP9 Encoder) is a VP9-compliant encoder library core. The SVT-VP9 Encoder development is a work-in-progress targeting performance levels applicable to both VOD and Live encoding/transcoding video applications.

The SVT-VP9 Encoder is being optimized to achieve excellent performance levels currently supporting 10 density-quality presets (please refer to the user guide for more details) on a system with a dual Intel® Xeon® Scalable processor targeting:

  • Real-time encoding of up to two 4Kp60 streams on the Gold 6140 with M8.

SVT-VP9 Encoder also supports 3 modes:

  • A visually optimized mode for visual quality (-tune 0)

  • An PSNR/SSIM optimized mode for PSNR / SSIM benchmarking (-tune 1 (Default setting))

  • An VMAF optimized mode for VMAF benchmarking (-tune 2)

License

SVT-VP9 Encoder is licensed under the OSI-approved BSD+Patent license. See LICENSE for details.

Documentation

More details about the SVT-VP9 Encoder usage can be found under:

System Requirements

Operating System

SVT-VP9 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:

  • Windows* Operating Systems (64-bit):

    • Windows* Server 2016
  • Linux* Operating Systems (64-bit):

    • Ubuntu* 16.04 Server LTS

    • Ubuntu* 18.04 Server LTS

Hardware

The SVT-VP9 Encoder library supports the x86 architecture

  • CPU Requirements

In order to achieve the performance targeted by the SVT-VP9 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).

  • RAM Requirements

In order to run the highest resolution supported by the SVT-VP9 Encoder, at least 10GB of RAM is required to run a 4k 8bit stream multi-threading on an 8180 system. The SVT-VP9 Encoder application will display an error if the system does not have enough RAM to support this. The following table shows the minimum amount of RAM required for some standard resolutions of 8bit video per stream:

Resolution Minimum Footprint (GB)
4k 10
1080p 4
720p 3
480p 2

Build and Install

Windows* Operating Systems (64-bit):

  • Build Requirements
    • Visual Studio* 2017 (download here) or 2019 (download here)
    • CMake 3.14 or later (download here)
    • YASM Assembler version 1.2.0 or later
      • Download the yasm exe from the following link
      • 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 cd Build\windows - run generate_vs17.bat [such would generate the visual studio project files]
    • Open the "svt-vp9.sln" using Visual Studio* 2017 and click on Build -- > Build Solution
  • Binaries Location

    • Binaries can be found under \Bin/Release or \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 "SvtVp9EncApp.exe” and library "SvtVp9Enc.dll” are in the same folder. - Open the command prompt window at the chosen location and run the sample application to encode.

    SvtVp9EncApp.exe -i [in.yuv] -w [width] -h [height] -b [out.ivf]. - Sample application supports reading from pipe. E.g: ffmpeg -i [input.mp4] -nostdin -f rawvideo -pix_fmt yuv420p - | SvtVp9EncApp.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
  • Build Instructions

    • ./Build/linux/build.sh <release | debug> (if none specified, both release and debug will be built)
    • To build a static library and binary, append static
    • Additional options can be found by typing ./Build/linux/build.sh --help
  • Sample Binaries location

    • Binaries can be found under Bin/Release and / or Bin/Debug
  • 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 “SvtVp9EncApp” executable by running the command: >chmod +x SvtVp9EncApp
    • cd into your chosen location
    • Run the sample application to encode. > ./SvtVp9EncApp -i [in.yuv] -w [width] -h [height] -b [out.ivf].
    • Sample application supports reading from pipe. E.g: >ffmpeg -i [input.mp4] -nostdin -f rawvideo -pix_fmt yuv420p - | ./SvtVp9EncApp -i stdin -n [number_of_frames_to_encode] -w [width] -h [height].

How to evaluate by ready-to-run executables with docker

Refer to the guide here.

Demo features and limitations

  • Multi-instance support: The multi-instance functionality is a demo feature implemented in the SVT-VP9 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: SvtVp9EncApp.exe -nch 2 -c firstchannel.cfg secondchannel.cfg
  • Features enabled: The library will display an error message any feature combination that is not currently supported.

How to Contribute

We welcome community contributions to the SVT-VP9 Encoder. Thank you for your time! By contributing to the project, you agree to the license and copyright terms in the OSI-approved BSD+Patent license and to the release of your contribution under these terms. See LICENSE for details.

Contribution process

  • Follow the coding guidelines

  • Validate that your changes do not break a build

  • Perform smoke tests and ensure they pass

  • Submit a pull request for review to the maintainer

How to Report Bugs and Provide Feedback

Use the Issues tab on Github. To avoid duplicate issues, please make sure you go through the existing issues before logging a new one.

IRC

#svt on Freenode. Join via Freenode Webchat or use your favorite IRC client.

Notices and Disclaimers

The notices and disclaimers can be found here

More Repositories

1

SVT-HEVC

SVT HEVC encoder. Scalable Video Technology (SVT) is a software-based video coding technology that is highly optimized for Intel® Xeon® processors. Using the open source SVT-HEVC encoder, it is possible to spread video encoding processing across multiple Intel® Xeon® processors to achieve a real advantage of processing efficiency.
C
517
star
2

Smart-City-Sample

The smart city reference pipeline shows how to integrate various media building blocks, with analytics powered by the OpenVINO™ Toolkit, for traffic or stadium sensing, analytics and management tasks.
Python
191
star
3

Media-Transport-Library

A real-time media transport(DPDK, AF_XDP, RDMA) stack for both raw and compressed video based on COTS hardware.
C
163
star
4

Immersive-Video-Sample

This Immersive Video project includes 2 samples which are based on OMAF and WebRTC streaming frameworks.
C++
129
star
5

Dockerfiles

Optimized media, analytics and graphics software stack images. Use the dockerfile(s) in your project or as a recipe book for bare metal installation.
Dockerfile
127
star
6

CDN-Transcode-Sample

Media transcoding is a key function for live video broadcasting, streaming, and video on demand use cases in a CDN network. The CDN Transcode sample (not a finished product) provides a reference pipeline to build an out-of-box 1:N CDN streaming transcode service example.
Python
120
star
7

Ad-Insertion-Sample

The ad-insertion reference pipeline shows how to integrate various media building blocks, with analytics powered by the OpenVINO™ Toolkit, for intelligent server-side ad insertion.
Python
93
star
8

Video-Conferencing-Sample

Welcome to the GitHub repo for Open Visual Cloud video conferencing sample. This sample is built on top of Open WebRTC Toolkit media server and client SDK. To see the detailed information of Open WebRTC Toolkit, visit GitHub page https://github.com/open-webrtc-toolkit
JavaScript
55
star
9

Video-Super-Resolution-Library

Native C and C++ implementation of RAISR (Rapid and Accurate Image Super-Resolution). Intel Video Super Resolution Library
C++
47
star
10

Cloud-Gaming-Windows-Sample

Welcome to github repository for Cloud Gaming For Windows! This sample is intended to support server-client cloud gaming model. It can be used as the foundation for future enhancements, as a reference solution for Intel GPU hardware. Currently running on KBL-G platform.
C++
45
star
11

SVT-JPEG-XS

Welcome to the SVT JPEG XS codec Repository.
C
43
star
12

CDN-Ansible

Welcome to github repository for Visual Cloud Delivery Network. This repository will provide the Ansible playbooks for installing the components of Visual Cloud Delivery Network.
Smarty
22
star
13

Video-Curation-Sample

This sample implements libraries of video files content analysis, database ingestion, content search and visualization.
C++
20
star
14

Media-Communications-Mesh

MCM enables efficient, low-latency media transport for media microservices.
C
17
star
15

VCAC-SW

C
16
star
16

Video-Super-Resolution-Library.Enhanced-BasicVSR

Video super resolution (VSR) is used in AI media enhancement to convert low-resolution video to high-resolution. BasicVSR is a public AI algorithm. We have enhanced the public model to achieve better visual quality and less computational complexity. The performance of BasicVSR inference has also been optimized for Intel Data Center GPU Flex 170.
Dockerfile
9
star
17

VCAC-SW-Analytics

Welcome to the GitHub repo for VCAC-A card media analytics software. This repo was migrated from repo VCAC-SW. Contents to setup Xeon host for connecting with VCAC-A and to build VCAC-A system image for media analytics are published here.
Shell
7
star
18

Intel-Tiber-Broadcast-Suite

Part of Intel® Tiber™ Edge Platform, an end-to-end software platform that enables the building, deployment, running, and management of scalable edge solutions.
Shell
7
star
19

Dockerfiles-Resources

This repository is a read-only repository dedicated to archive source code used in Open Visual Cloud samples/docker images, to be compliant with the open source license obligations.
C++
3
star
20

mpl-api-samples

Intel® Media Processing Library(IMPL) optimized media processing functions like Color Space Conversion(CSC), resize, composition and Alpha blending based on Intel platforms, IMPL is a software library implemented with oneAPI DPC++ designed for Intel CPU/GPU/FPGA-accelerator.
C++
3
star
21

Hackathon2021

Join Hackathon "Open Your Mind to Endless Possibilities", Jan 11th - March 12th, 2021.
2
star