• Stars
    star
    783
  • Rank 58,097 (Top 2 %)
  • Language
    C
  • License
    Other
  • Created about 7 years ago
  • Updated over 1 year ago

Reviews

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

Repository Details

Intel(R) Media Driver for VAAPI

Introduction

The Intel(R) Media Driver for VAAPI is a new VA-API (Video Acceleration API) user mode driver supporting hardware accelerated decoding, encoding, and video post processing for GEN based graphics hardware.

License

The Intel(R) Media Driver for VAAPI is distributed under the MIT license with portions covered under the BSD 3-clause "New" or "Revised" License. You may obtain a copy of the License at MIT & BSD-3-Clause

Building

For Ubuntu 16.04+

apt install autoconf libtool libdrm-dev xorg xorg-dev openbox libx11-dev libgl1-mesa-glx

Equivalents for other distributions should work.

  1. Build and install LibVA
  2. Build and install GmmLib following GmmLib compatibility
  3. Get media repo and format the workspace folder as below (suggest the workspace to be a dedicated one for media driver build):
    <workspace>
        |- media-driver
    
  4. Create build_media new folder under your workspace
    $ mkdir <workspace>/build_media
    
    then the workspace looks like below
    <workspace>
        |- media-driver
        |- build_media
    
  5. $ cd <workspace>/build_media
    
  6. $ cmake ../media-driver
    
  7. $ make -j"$(nproc)"
    

Install

$ sudo make install

This will install the following files (e.g. on Ubuntu):

-- Installing: /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
-- Installing: /etc/profile.d/intel-media.sh
-- Installing: /usr/lib/x86_64-linux-gnu/igfxcmrt64.so

For iHD_drv_video.so please export related LIBVA environment variables.

export LIBVA_DRIVERS_PATH=<path-contains-iHD_drv_video.so>
export LIBVA_DRIVER_NAME=iHD

Supported Platforms

  • BDW (Broadwell)
  • SKL (Skylake)
  • BXTx (BXT: Broxton, APL: Apollo Lake, GLK: Gemini Lake)
  • KBLx (KBL: Kaby Lake, CFL: Coffe Lake, WHL: Whiskey Lake, CML: Comet Lake, AML: Amber Lake)
  • ICL (Ice Lake)
  • JSL (Jasper Lake) / EHL (Elkhart Lake)
  • TGLx (TGL: Tiger Lake, RKL: Rocket Lake, ADL-S/P/N: Alder Lake, RPL-S/P: Raptor Lake)
  • DG1/SG1
  • Alchemist(DG2)/ATSM
  • Meteor Lake(MTL)

Components and Features

Media driver contains three components as below

  • Video decoding calls hardware-based decoder(VDBox) which provides fully-accelerated hardware video decoding to release the graphics engine for other operations.
  • Video encoding supports two modes, one calls hardware-based encoder(VDEnc/Huc) to provide low power encoding, another one is hardware(PAK)+shader(media kernel+VME) based encoding. User could choose the mode through VA-API.
  • Video processing supports several popular features by hardware-based video processor(VEBox/SFC) and shader(media kernel) based solution together.

Media driver supports two build types as below

  • Full Feature Build is default driver build, which supports all feature by hardware accelerator and close source shaders(media kernel binaries). Ubuntu intel-media-va-driver-non-free package is generated from this build type.
  • Free Kernel Build, enables fully open source shaders(media kernels) and hardware features but the features would be limited. Ubuntu intel-media-va-driver package is generated from this build type.

Decoding/Encoding Features

CODEC Build Types MTL DG2/ATSM DG1/SG1 TGLx EHL/JSL ICL KBLx BXTx SKL BDW
AVC Full-Feature
Free-Kernel
D/E
D/E
D/E
D/E
D/E/Es
D/E
D/E/Es
D/E
D/E
D/E
D/E/Es
D/E
D/E/Es
D/E
D/E/Es
D/E
D/E/Es
D/E
D/Es
D
MPEG-2 Full-Feature
Free-Kernel
D
D
D
D
D/Es
D
D/Es
D
D
D
D/Es
D
D/Es
D
D
D
D/Es
D
D/Es
D
VC-1 Full-Feature
Free-Kernel
 
 
 
 
D
 
D
 
D
 
D
 
D
 
D
 
D
 
D
 
JPEG Full-Feature
Free-Kernel
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D
D
VP8 Full-Feature
Free-Kernel
D
D
 
 
 
 
D*
D*
D
D
D/Es
D
D/Es
D
D
D
D
D
D
D
HEVC 8bit Full-Feature
Free-Kernel
D/E
D/E
D/E
D/E
D/E/Es
D/E
D/E/Es
D/E
D/E
D/E
D/E/Es
D/E
D/Es
D
D/Es
D
D/Es
D
HEVC 8bit 422 Full-Feature
Free-Kernel
D
D
D/E
D/E
D/Es
D
D/Es
D
D
D
D/Es
D
HEVC 8bit 444 Full-Feature
Free-Kernel
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
HEVC 10bit Full-Feature
Free-Kernel
D/E
D/E
D/E
D/E
D/E/Es
D/E
D/E/Es
D/E
D/E
D/E
D/E/Es
D/E
D/Es
D
D
D
HEVC 10bit 422 Full-Feature
Free-Kernel
D
D
D/E
D/E
D/Es
D
D/Es
D
D
D
D/Es
D
HEVC 10bit 444 Full-Feature
Free-Kernel
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
HEVC 12bit Full-Feature
Free-Kernel
D
D
D
D
D/Es
D
D/Es
D
HEVC 12bit 422 Full-Feature
Free-Kernel
D
D
D
D
D
D
D
D
HEVC 12bit 444 Full-Feature
Free-Kernel
D
D
D
D
D
D
D
D
VP9 8bit Full-Feature
Free-Kernel
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D
D
D
D
VP9 8bit 444 Full-Feature
Free-Kernel
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
VP9 10bit Full-Feature
Free-Kernel
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D
D
VP9 10bit 444 Full-Feature
Free-Kernel
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
D/E
VP9 12bit Full-Feature
Free-Kernel
D
D
D
D
D
D
D
D
VP9 12bit 444 Full-Feature
Free-Kernel
D
D
D
D
D
D
D
D
AV1 8bit Full-Feature
Free-Kernel
D/E
D/E
D/E
D/E
D
D
D
D
AV1 10bit Full-Feature
Free-Kernel
D/E
D/E
D/E
D/E
D
D
D
D
  • * VP8 decoding is only supported on TGL platform
  • D - Hardware Decoding
  • E - Hardware Encoding, Low Power Encoding(VDEnc/Huc)
  • Es - Hardware(PAK) + Shader(media kernel+VME) Encoding

For more decoding and encoding features information, please refer to

Video Processing Features

CODEC Build Types MTL DG2/ATSM DG1/SG1 TGLx EHL/JSL ICL KBLx BXTx SKL BDW
Blending Full-Feature
Free-Kernel
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
 
Yes
 
Yes
 
Yes
 
CSC Full-Feature
Free-Kernel
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
 
Yes
 
Yes
 
Yes
 
De-interlace Full-Feature
Free-Kernel
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes*
Yes*
Yes
Yes
Yes
 
Yes
 
Yes
 
Yes
 
De-noise Full-Feature
Free-Kernel
Yes
 
Yes
 
Yes
 
Yes
 
 
 
Yes
 
Yes
 
Yes
 
Yes
 
Yes
 
Luma Key Full-Feature
Free-Kernel
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
 
Yes
 
Yes
 
Yes
 
Mirroring Full-Feature
Free-Kernel
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
 
Yes
 
Yes
 
Yes
 
ProcAmp Full-Feature
Free-Kernel
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
 
Yes
 
Yes
 
Yes
 
Rotation Full-Feature
Free-Kernel
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
 
Yes
 
Yes
 
Yes
 
Scaling Full-Feature
Free-Kernel
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
 
Yes
 
Yes
 
Yes
 
Sharpening Full-Feature
Free-Kernel
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
 
Yes
 
Yes
 
Yes
 
STD/E Full-Feature
Free-Kernel
Yes
 
Yes
 
Yes
 
Yes
 
 
 
Yes
 
Yes
 
Yes
 
Yes
 
Yes
 
TCC Full-Feature
Free-Kernel
Yes
 
Yes
 
Yes
 
Yes
 
 
 
Yes
 
Yes
 
Yes
 
Yes
 
Yes
 
Color fill Full-Feature
Free-Kernel
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
 
Yes
 
Yes
 
Yes
 
Chroma Siting Full-Feature
Free-Kernel
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
 
Yes
 
Yes
 
 
 
HDR10 TM Full-Feature
Free-Kernel
Yes
 
Yes
 
Yes
 
Yes
 
 
 
Yes
 
 
 
 
 
 
 
 
 
3DLUT Full-Feature
Free-Kernel
Yes
 
Yes
 
Yes
 
Yes
 
 
 
 
 
 
 
 
 
 
 
 
 
  • * EHL/JSL only support BOB DI
  • CSC: Color Space Conversion
  • ProcAmp: brightness,contrast,hue,saturation
  • STD/E: Skin Tone Detect & Enhancement
  • TCC: Total Color Control
  • HDR10 TM: HDR10 Tone Mapping
  • 3DLUT: Three Dimensional Look Up Table

For more feature information, please refer to Supported video processing csc/scaling format

Build Options

Media-driver supports few build types as described below. You could refer to the following settings to enable them.

  • Full Feature Build: ENABLE_KERNELS=ON(Default) ENABLE_NONFREE_KERNELS=ON(Default)
  • Free Kernel Build: ENABLE_KERNELS=ON ENABLE_NONFREE_KERNELS=OFF
    • If trying to use pre-built open source kernel binaries, please add BUILD_KERNELS=OFF(Default).
    • If trying to rebuild open source kernel from source code, please add BUILD_KERNELS=ON.

Media-driver requires special i915 kernel mode driver (KMD) version to support the following new platforms since upstream version of i915 KMD does not fully support them (pending patches upstream):

  • DG1/SG1
  • Alchemist(DG2)/ATSM

By default, media-driver builds against upstream i915 KMD and will miss support for the platforms listed above. To enable new platforms which require special i915 KMD and specify ENABLE_PRODUCTION_KMD=ON (default: OFF) build configuration option.

Known Issues and Limitations

  1. Intel(R) Media Driver for VAAPI is recommended to be built against gcc compiler v6.1 or later, which officially supported C++11.

  2. SKL: Green or other incorrect color will be observed in output frames when using YV12/I420 as input format for csc/scaling/blending/rotation, etc. on Ubuntu 16.04 stock (with kernel 4.10). The issue can be addressed with the kernel patch: WaEnableYV12BugFixInHalfSliceChicken7

  3. HuC firmware is necessary for AVC/HEVC/VP9/AV1 low power encoding bitrate control, including CBR, VBR, etc. The default Kernel configuration didn't enable Huc loading for TGL/RKL and legacy platforms but enabled it from ADL+ platforms. You could change Huc setting by "options i915 enable_guc=2" > /etc/modprobe.d/i915.conf under root. For ADL+ platforms, Kernel loads Huc as default if related platform Huc binary exist in /lib/firware/i915. You could see the Huc firmwares are avaiable from below kernel versions for different platforms:

    • APL/KBL: starting from Kernal 4.11, Huc loading is disabled as default so need to set i915.enable_guc=2
    • CFL: starting from Kernal 4.15, Huc loading is disabled as default so need to set i915.enable_guc=2
    • ICL: starting from Kernal 5.2, Huc loading is disabled as default so need to set i915.enable_guc=2
    • EHL/JSL: starting from Kernal 5.8, Huc loading is disabled as default so need to set i915.enable_guc=2
    • TGL: starting from Kernal 5.9, Huc loading is disabled as default so need to set i915.enable_guc=2
    • RKL: starting from Kernal 5.17, Huc loading is disabled as default so need to set i915.enable_guc=2
    • ADL-S/ADL-P: starting from Kernal 5.17
    • ADL-N/RPL-S/RPL-P: starting from Kernal 6.2
    • DG1/SG1: intel-gpu/intel-gpu-i915-backports
    • Alchemist(DG2): starting from Kernal 6.2
    • ATSM: intel-gpu/intel-gpu-i915-backports
  4. Other more known issues, please refer to media-driver/wiki "Known Issues" pages.

(*) Other names and brands may be claimed as property of others.

More Repositories

1

hyperscan

High-performance regular expression matching library
C++
4,478
star
2

acat

Assistive Context-Aware Toolkit (ACAT)
C#
3,191
star
3

haxm

Intel® Hardware Accelerated Execution Manager (Intel® HAXM)
C
3,029
star
4

appframework

The definitive HTML5 mobile javascript framework
CSS
2,435
star
5

neural-compressor

SOTA low-bit LLM quantization (INT8/FP8/INT4/FP4/NF4) & sparsity; leading model compression techniques on TensorFlow, PyTorch, and ONNX Runtime
Python
2,182
star
6

intel-extension-for-transformers

⚡ Build your chatbot within minutes on your favorite device; offer SOTA compression techniques for LLMs; run LLMs efficiently on Intel Platforms⚡
Python
2,122
star
7

pcm

Intel® Performance Counter Monitor (Intel® PCM)
C++
2,083
star
8

intel-extension-for-pytorch

A Python package for extending the official PyTorch that can easily obtain performance on Intel platform
Python
1,203
star
9

linux-sgx

Intel SGX for Linux*
C++
1,180
star
10

scikit-learn-intelex

Intel(R) Extension for Scikit-learn is a seamless way to speed up your Scikit-learn application
Python
954
star
11

llvm

Intel staging area for llvm.org contribution. Home for Intel LLVM-based projects.
918
star
12

nemu

ARCHIVED: Modern Hypervisor for the Cloud. See https://github.com/cloud-hypervisor/cloud-hypervisor instead
C
915
star
13

compute-runtime

Intel® Graphics Compute Runtime for oneAPI Level Zero and OpenCL™ Driver
C++
912
star
14

caffe

This fork of BVLC/Caffe is dedicated to improving performance of this deep learning framework when running on CPU, in particular Intel® Xeon processors.
C++
850
star
15

isa-l

Intelligent Storage Acceleration Library
C
816
star
16

cve-bin-tool

The CVE Binary Tool helps you determine if your system includes known vulnerabilities. You can scan binaries for over 200 common, vulnerable components (openssl, libpng, libxml2, expat and others), or if you know the components used, you can get a list of known vulnerabilities associated with an SBOM or a list of components and versions.
Python
721
star
17

intel-cmt-cat

User space software for Intel(R) Resource Director Technology
C
630
star
18

fastuidraw

C++
603
star
19

optimization-manual

Contains the source code examples described in the "Intel® 64 and IA-32 Architectures Optimization Reference Manual"
Assembly
602
star
20

libipt

libipt - an Intel(R) Processor Trace decoder library
C
594
star
21

libxcam

libXCam is a project for extended camera(not limited in camera) features and focus on image quality improvement and video analysis. There are lots features supported in image pre-processing, image post-processing and smart analysis. This library makes GPU/CPU/ISP working together to improve image quality. OpenCL is used to improve performance in different platforms.
C++
590
star
22

clDNN

Compute Library for Deep Neural Networks (clDNN)
C++
573
star
23

libva

Libva is an implementation for VA-API (Video Acceleration API)
C
558
star
24

intel-graphics-compiler

C++
503
star
25

wds

Wireless Display Software For Linux OS (WDS)
C++
496
star
26

thermal_daemon

Thermal daemon for IA
C++
485
star
27

x86-simd-sort

C++ header file library for high performance SIMD based sorting algorithms for primitive datatypes
C++
485
star
28

Intel-Linux-Processor-Microcode-Data-Files

466
star
29

gvt-linux

C
463
star
30

kernel-fuzzer-for-xen-project

Kernel Fuzzer for Xen Project (KF/x) - Hypervisor-based fuzzing using Xen VM forking, VMI & AFL
C
441
star
31

tinycbor

Concise Binary Object Representation (CBOR) Library
C
432
star
32

openfl

An open framework for Federated Learning.
Python
427
star
33

cc-oci-runtime

OCI (Open Containers Initiative) compatible runtime for Intel® Architecture
C
415
star
34

tinycrypt

tinycrypt is a library of cryptographic algorithms with a focus on small, simple implementation.
C
373
star
35

compile-time-init-build

C++ library for composing modular firmware at compile-time.
C++
372
star
36

ARM_NEON_2_x86_SSE

The platform independent header allowing to compile any C/C++ code containing ARM NEON intrinsic functions for x86 target systems using SIMD up to SSE4 intrinsic functions
C
369
star
37

yarpgen

Yet Another Random Program Generator
C++
357
star
38

intel-device-plugins-for-kubernetes

Collection of Intel device plugins for Kubernetes
Go
356
star
39

QAT_Engine

Intel QuickAssist Technology( QAT) OpenSSL Engine (an OpenSSL Plug-In Engine) which provides cryptographic acceleration for both hardware and optimized software using Intel QuickAssist Technology enabled Intel platforms. https://developer.intel.com/quickassist
C
356
star
40

linux-sgx-driver

Intel SGX Linux* Driver
C
334
star
41

safestringlib

C
328
star
42

xess

C
313
star
43

idlf

Intel® Deep Learning Framework
C++
311
star
44

ad-rss-lib

Library implementing the Responsibility Sensitive Safety model (RSS) for Autonomous Vehicles
C++
298
star
45

intel-vaapi-driver

VA-API user mode driver for Intel GEN Graphics family
C
289
star
46

ipp-crypto

C
269
star
47

rohd

The Rapid Open Hardware Development (ROHD) framework is a framework for describing and verifying hardware in the Dart programming language. ROHD enables you to build and traverse a graph of connectivity between module objects using unrestricted software.
Dart
256
star
48

opencl-intercept-layer

Intercept Layer for Debugging and Analyzing OpenCL Applications
C++
255
star
49

FSP

Intel(R) Firmware Support Package (FSP)
C
244
star
50

dffml

The easiest way to use Machine Learning. Mix and match underlying ML libraries and data set sources. Generate new datasets or modify existing ones with ease.
Python
244
star
51

userspace-cni-network-plugin

Go
242
star
52

intel-ipsec-mb

Intel(R) Multi-Buffer Crypto for IPSec
C
238
star
53

isa-l_crypto

Assembly
232
star
54

confidential-computing-zoo

Confidential Computing Zoo provides confidential computing solutions based on Intel SGX, TDX, HEXL, etc. technologies.
CMake
229
star
55

bmap-tools

BMAP Tools
Python
227
star
56

intel-extension-for-tensorflow

Intel® Extension for TensorFlow*
C++
226
star
57

ozone-wayland

Wayland implementation for Chromium Ozone classes
C++
214
star
58

intel-qs

High-performance simulator of quantum circuits
C++
202
star
59

SGXDataCenterAttestationPrimitives

C++
202
star
60

intel-sgx-ssl

Intel® Software Guard Extensions SSL
C
197
star
61

msr-tools

C
195
star
62

depth-camera-web-demo

JavaScript
194
star
63

rmd

Go
189
star
64

CPU-Manager-for-Kubernetes

Kubernetes Core Manager for NFV workloads
Python
187
star
65

asynch_mode_nginx

C
186
star
66

hexl

Intel®️ Homomorphic Encryption Acceleration Library accelerates modular arithmetic operations used in homomorphic encryption
C++
181
star
67

ros_object_analytics

C++
177
star
68

zephyr.js

JavaScript* Runtime for Zephyr* OS
C
176
star
69

generic-sensor-demos

HTML
175
star
70

ipmctl

C
172
star
71

sgx-ra-sample

C++
171
star
72

lmbench

C
171
star
73

cri-resource-manager

Kubernetes Container Runtime Interface proxy service with hardware resource aware workload placement policies
Go
170
star
74

platform-aware-scheduling

Enabling Kubernetes to make pod placement decisions with platform intelligence.
Go
165
star
75

virtual-storage-manager

Python
165
star
76

PerfSpect

System performance characterization tool based on linux perf
Python
164
star
77

he-transformer

nGraph-HE: Deep learning with Homomorphic Encryption (HE) through Intel nGraph
C++
163
star
78

systemc-compiler

This tool translates synthesizable SystemC code to synthesizable SystemVerilog.
C++
155
star
79

webml-polyfill

Deprecated, the Web Neural Network Polyfill project has been moved to https://github.com/webmachinelearning/webnn-polyfill
Python
153
star
80

pmem-csi

Persistent Memory Container Storage Interface Driver
Go
151
star
81

libyami

Yet Another Media Infrastructure. it is core part of media codec with hardware acceleration, it is yummy to your video experience on Linux like platform.
C++
148
star
82

ros_openvino_toolkit

C++
147
star
83

rib

Rapid Interface Builder (RIB) is a browser-based design tool for quickly prototyping and creating the user interface for web applications. Layout your UI by dropping widgets onto a canvas. Run the UI in an interactive "Preview mode". Export the generated HTML and Javascript. It's that simple!
JavaScript
147
star
84

ideep

Intel® Optimization for Chainer*, a Chainer module providing numpy like API and DNN acceleration using MKL-DNN.
C++
145
star
85

libva-utils

Libva-utils is a collection of tests for VA-API (VIdeo Acceleration API)
C
144
star
86

gmmlib

C++
141
star
87

numatop

NumaTOP is an observation tool for runtime memory locality characterization and analysis of processes and threads running on a NUMA system.
C
139
star
88

ros2_grasp_library

C++
138
star
89

XBB

C++
133
star
90

tdx-tools

Cloud Stack and Tools for Intel TDX (Trust Domain Extension)
C
131
star
91

ros2_intel_realsense

This project is deprecated and no more maintained. Please visit https://github.com/IntelRealSense/realsense-ros for ROS2 wrapper.
C++
131
star
92

linux-intel-lts

C
131
star
93

CeTune

Python
130
star
94

cm-compiler

C++
130
star
95

pti-gpu

Profiling Tools Interfaces for GPU (PTI for GPU) is a set of Getting Started Documentation and Tools Library to start performance analysis on Intel(R) Processor Graphics easily
C++
129
star
96

fMBT

Free Model Based tool
Python
129
star
97

zlib

C
128
star
98

ros_intel_movidius_ncs

C++
126
star
99

mpi-benchmarks

C
125
star
100

mOS

C
124
star