An open API service indexing awesome lists of open source software.

https://github.com/intel/media-driver

Intel Graphics Media Driver to support hardware decode, encode and video processing.
https://github.com/intel/media-driver

Last synced: 2 months ago
JSON representation

Intel Graphics Media Driver to support hardware decode, encode and video processing.

Awesome Lists containing this project

README

          

# 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](https://opensource.org/licenses/MIT) & [BSD-3-Clause](https://opensource.org/licenses/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](https://github.com/intel/libva)
2. Build and install [GmmLib](https://github.com/intel/gmmlib) following [GmmLib compatibility](https://github.com/intel/media-driver/wiki/Compatibility-with-GmmLib)
3. Get media repo and format the workspace folder as below (suggest the workspace to be a dedicated one for media driver build):
```

|- media-driver
```
4. Create build_media new folder under your workspace
```
$ mkdir /build_media
```
then the workspace looks like below
```

|- media-driver
|- build_media
```
5.
```
$ cd /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=
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: Coffee 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
- MTLx (MTL: Meteor Lake, ARL-S/H: Arrow Lake)
- LNL (Lunar Lake)
- BMG (Battlemage)
- PTL (Pather Lake)

## Components and Features

Media driver contains three components as below
- **Video decoding** calls hardware-based decoder([VDBox](https://01.org/sites/default/files/documentation/intel-gfx-prm-osrc-kbl-vol08-media_vdbox.pdf)) 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](https://01.org/sites/default/files/documentation/intel-gfx-prm-osrc-kbl-vol08-media_vdbox.pdf)/[Huc](https://01.org/linuxgraphics/downloads/firmware?langredirect=1)) to provide low power encoding, another one is hardware([PAK](https://01.org/sites/default/files/documentation/intel-gfx-prm-osrc-kbl-vol08-media_vdbox.pdf))+shader(media kernel+[VME](https://01.org/sites/default/files/documentation/intel-gfx-prm-osrc-kbl-vol04-configurations.pdf)) based encoding. User could choose the mode through VA-API.
- **Video processing** supports several popular features by hardware-based video processor([VEBox/SFC](https://01.org/sites/default/files/documentation/intel-gfx-prm-osrc-kbl-vol09-media_vebox.pdf)) and shader(media kernel) based solution together.

Media driver supports below two builds
- **Full Feature Build** is ***default*** driver build, which supports all feature by hardware accelerator and close source shaders(media kernel binaries). Most of OSVs(like RHEL/SUSE/fedora) are using this build.
- **Free Kernel Build**, enables fully open source shaders(media kernels) and hardware features but the features would be limited.

About Ubuntu/Debian OSV, they provide [intel-media-va-driver-non-free](https://packages.ubuntu.com/search?keywords=intel-media-driver-non-free&searchon=sourcenames) (Full feature build) and [intel-media-va-driver](https://packages.ubuntu.com/search?keywords=intel-media-driver&searchon=sourcenames) (Free kernel build) two packages. ***Free*** here means open source kernel but not related to fee need to pay. You could refer to [build options](https://github.com/intel/media-driver?tab=readme-ov-file#build-options) for more detail.

If you are looking forward to have a big table to share media component features on these two builds, below tables are good referene for your information.

### Decoding/Encoding Features

| CODEC | Build Types |PTL |BMG |LNL | MTLx | 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
D/E | 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
D | 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/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
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
D/E | 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/E
D/E | D/E
D/E | D/E
D/E | 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 | 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
D/E | 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/E
D/E | D/E
D/E | D/E
D/E | 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 | D/E
D/E | D/E
D/E | D/E
D/E | | | | |
| HEVC 12bit | Full-Feature
Free-Kernel | D
D |