/libvpl

Intel® Video Processing Library (Intel® VPL) API, dispatcher, and examples

Primary LanguageC++MIT LicenseMIT

Intel® Video Processing Library (Intel® VPL)

Intel® Video Processing Library (Intel® VPL) provides access to hardware accelerated video decode, encode, and processing capabilities on Intel® GPUs to support AI visual inference, media delivery, cloud gaming, and virtual desktop infrastructure use cases.

See the specification for additional information.

This repository contains the following components:

  • Copies of the Intel® VPL API header files. The version of the API is listed in the mfxdefs.h file.
  • Intel® VPL Dispatcher
  • Examples demonstrating API usage

Important

Intel® VPL Tools are no longer in this repository. They have all been moved to https://github.com/intel/libvpl-tools

To use Intel® VPL for video processing you need to install at least one implementation. Here is a list:

Architecture

graph TD;
    dispatcher["Intel® VPL Dispatcher"]-->oneVPL-intel-gpu;
    dispatcher-->msdk["Intel® MediaSDK"];
Loading

As shown in this diagram, the Intel® VPL Dispatcher forwards function calls from the application to use the selected runtime.

Dispatcher behavior when targeting Intel® GPUs

Runtime loaded by Intel® VPL Dispatcher and their Microsoft* DirectX* support:

GPU Media SDK Intel® VPL Microsoft* DirectX* Support
Earlier platforms, back to BDW (Broadwell) ✔️ DX9/DX11
ICL (Ice Lake) ✔️ DX9/DX11
JSL (Jasper Lake) ✔️ DX9/DX11
EHL (Elkhart Lake) ✔️ DX9/DX11
SG1 ✔️ DX9/DX11
TGL (Tiger Lake) ✔️ ✔️ DX9/DX11*
DG1 (Intel® Iris® Xe MAX graphics) ✔️ ✔️ DX11*
RKL (Rocket Lake) ✔️ DX11
ADL-S (Alder Lake S) ✔️ DX11
ADL-P (Alder Lake P) ✔️ DX11
ADL-N (Alder Lake N) ✔️ DX11
DG2 (Intel® Arc™ A-Series Graphics) ✔️ DX11
ATSM (Intel® Data Center GPU Flex Series) ✔️ DX11
RPL-S (Raptor Lake S) ✔️ DX11
RPL-P (Raptor Lake P) ✔️ DX11
MTL (Meteor Lake) ✔️ DX11
ARL-S (Arrow Lake S) ✔️ DX11
ARL-H (Arrow Lake H) ✔️ DX11
LNL (Lunar Lake) ✔️ DX11
Future platforms... ✔️ DX11

For TGL and DG1, if both Intel® VPL and Intel® Media SDK runtime are installed then the Intel® VPL Dispatcher will prefer Intel® VPL runtime unless the application requests D3D9 by setting the filter property "mfxImplDescription.AccelerationMode" to MFX_ACCEL_MODE_VIA_D3D9.

Installing Intel® VPL

Installation options

Intel® VPL may be installed:

Using Intel® VPL

Configure your shell environment

If you did not install to standard system locations, you need to set up the environment, so tools like CMake and pkg-config can find the library and headers.

For Linux:

source <vpl-install-location>/etc/vpl/vars.sh

For Windows:

<vpl-install-location>\etc\vpl\vars.bat

Link to Intel® VPL with CMake

Add the following code to your CMakeLists, assuming TARGET is defined as the component that wants to use Intel® VPL:

if(WIN32 AND CMAKE_SIZEOF_VOID_P EQUAL 4)
 set(CMAKE_LIBRARY_ARCHITECTURE x86)
endif()
find_package(VPL REQUIRED)
target_link_libraries(${TARGET} VPL::dispatcher)

Link to Intel® VPL from Bash with pkg-config

The following command line illustrates how to link a simple program to Intel® VPL using pkg-config.

gcc program.cpp `pkg-config --cflags --libs vpl`

How to Contribute

See CONTRIBUTING.md for more information.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Security

See the Intel® Security Center for information on how to report a potential security issue or vulnerability.