Need help with MediaSDK?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

Intel-Media-SDK
686 Stars 392 Forks Other 2.2K Commits 133 Opened issues

Description

The Intel® Media SDK

Services available

!
?

Need anything else?

Contributors list

Intel® Media SDK

.. contents::

Intel® Media SDK provides a plain C API to access hardware-accelerated video decode, encode and filtering on Intel® Gen graphics hardware platforms. Implementation written in C++ 11 with parts in C-for-Media (CM).

Supported video encoders: HEVC, AVC, MPEG-2, JPEG, VP9

Supported video decoders: HEVC, AVC, VP8, VP9, MPEG-2, VC1, JPEG, AV1

Supported video pre-processing filters: Color Conversion, Deinterlace, Denoise, Resize, Rotate, Composition

Media SDK is a part of Intel software stack for graphics:

  • Linux Graphics Drivers 
    _ - General Purpose GPU Drivers for Linux* Operating Systems
    • Visit
      documentation 
      _ for instructions on installing, deploying, and updating Intel software to enable general purpose GPU (GPGPU) capabilities for Linux*-based operating system distributions.

Media SDK Support Matrix

Pay attention that Intel® Media SDK lifetime comes to an end in a form it exists right now. In particular,

  • API 1.35 is projected to be the last API of 1.x API series
  • Runtime library (libmfxhw64.so.1) is not planned to get support of new Gen platforms
  • Project is going to be supported in maintainence mode, critical fixes only

All future development is planned to happen within

oneVPL 
_ library and its runtime implementations which are direct successors of Intel® Media SDK. oneVPL introduces API 2.x series which is not backward compatible with API 1.x series (some
features got dropped 
). New
VPL Runtime for Gen Graphics 
(libmfx-gen.so.1.2) comes with the support of new Gen platforms.

Pay attention that Intel® Media SDK has forward compatibility with new VPL runtime (libmfx-gen.so.1.2) in the scope of API features supported by both 1.x and 2.x API series. As such, if application is built against Intel® Media SDK, it still can work on new platforms. For that purpose Media SDK Dispatcher loads either Media SDK Legacy Runtime (libmfxhw64.so.1) or VPL Runtime (libmfx-gen.so.1.2) depending on the underlying platform. See support matrix below.

+----------------------+--------------+-------------------------------------+-------------------------------------+ | | | GPU supported by | Runtime loaded by libmfx.so.1 | +----------------------+--------------+-----------------+-------------------+-----------------+-------------------+ | GPU | Type | libmfxhw64.so.1 | libmfx-gen.so.1.2 | libmfxhw64.so.1 | libmfx-gen.so.1.2 | +======================+==============+=================+===================+=================+===================+ | BDW (Broadwell) | Legacy | ✔ | | ✔ | | +----------------------+--------------+-----------------+-------------------+-----------------+-------------------+ | SKL (Skylake) | Legacy | ✔ | | ✔ | | +----------------------+--------------+-----------------+-------------------+-----------------+-------------------+ | BXT (Broxton) | Legacy | ✔ | | ✔ | | +----------------------+--------------+-----------------+-------------------+-----------------+-------------------+ | APL (Apollo Lake) | Legacy | ✔ | | ✔ | | +----------------------+--------------+-----------------+-------------------+-----------------+-------------------+ | KBLx [1] | Legacy | ✔ | | ✔ | | +----------------------+--------------+-----------------+-------------------+-----------------+-------------------+ | ICL (Ice Lake) | Legacy | ✔ | | ✔ | | +----------------------+--------------+-----------------+-------------------+-----------------+-------------------+ | JSL (Jasper Lake) | Legacy | ✔ | | ✔ | | +----------------------+--------------+-----------------+-------------------+-----------------+-------------------+ | EHL (Elkhart Lake) | Legacy | ✔ | | ✔ | | +----------------------+--------------+-----------------+-------------------+-----------------+-------------------+ | TGL (Tiger Lake) | Legacy | ✔ | ✔ | ✔ | | +----------------------+--------------+-----------------+-------------------+-----------------+-------------------+ | DG1 (Xe MAX) | Legacy | ✔ | ✔ | ✔ | | +----------------------+--------------+-----------------+-------------------+-----------------+-------------------+ | SG1 | Legacy | ✔ | | ✔ | | +----------------------+--------------+-----------------+-------------------+-----------------+-------------------+ | RKL (Rocket Lake) | Legacy | ✔ | ✔ | ✔ | | +----------------------+--------------+-----------------+-------------------+-----------------+-------------------+ | ADL-S (Alder Lake S) | VPL | | ✔ | | ✔ | +----------------------+--------------+-----------------+-------------------+-----------------+-------------------+ | ADL-P (Alder Lake P) | VPL | | ✔ | | ✔ | +----------------------+--------------+-----------------+-------------------+-----------------+-------------------+ | Future platforms... | VPL | | ✔ | | ✔ | +----------------------+--------------+-----------------+-------------------+-----------------+-------------------+ | Multi GPU | Legacy + VPL | See above | ✔ | via env var [2] | +----------------------+--------------+-----------------+-------------------+-----------------+-------------------+

Notes:

  • [1] KBLx is one of: KBL (Kaby Lake), CFL (Coffe Lake), WHL (Whiskey Lake), CML (Comet Lake), AML (Amber Lake)
  • [2] On the multi GPU system which has both "Legacy" and "VPL" GPUs Media SDK Dispatcher loads Media SDK Legacy Runtime (libmfxhw64.so.1) by default. VPL Runtime (libmfx-gen.so.1.2) or Media SDK Runtime (libmfxhw64.so.1) can be explicitly selected via the following environment variable::

    export INTELMEDIARUNTIME=ONEVPL # for VPL Runtime: libmfx-gen.so.1.2 or export INTELMEDIARUNTIME=MSDK # for Media SDK Runtime: libmfxhw64.so.1

Dependencies

Intel Media SDK depends on

LibVA 
. This version of Intel Media SDK is compatible with the open source
Intel Media Driver for VAAPI 
.

License

Intel Media SDK is licensed under MIT license. See

LICENSE <.>
_ for details.

How to contribute

See

CONTRIBUTING <.>
_ for details. Thank you!

Documentation

To get copy of Media SDK documentation use Git* with

LFS 
_ support.

Please find full documentation under the

./doc <.>
_ folder. Key documents:
  • Media SDK Manual <.>
    _
  • Additional Per-Codec Manuals:

    • Media SDK JPEG Manual <.>
      _
    • Media SDK VP8 Manual <.>
      _
  • Advanced Topics:

    • Media SDK User Plugins Manual <.>
      _
    • Media SDK FEI Manual <.>
      _
    • Media SDK HEVC FEI Manual <.>
      _
    • MFE Overview <.>
      _
    • HEVC FEI Overview <.>
      _
    • Interlace content support in HEVC encoder <.>
      _

Generic samples information is available in

Media Samples Guide <.>
_

Linux Samples Readme Documents:

  • Sample Multi Transcode <.>
    _
  • Sample Decode <.>
    _
  • Sample Encode <.>
    _
  • Sample VPP <.>
    _
  • Metrics Monitor <.>
    _

Visit our

Github Wiki 
_ for the detailed setting and building instructions, runtime tips and other information.

Tutorials

  • Tutorials Overview <.>
    _
  • Tutorials Command Line Reference <.>
    _

Products which use Media SDK

Use Media SDK via popular frameworks:

  • FFmpeg 
    _ via
    ffmpeg-qsv 
    _ plugins
  • GStreamer 
    _ via plugins set included into
    gst-plugins-bad 
    _

Learn best practises and borrow fragments for final solutions:

  • https://github.com/intel/media-delivery

    • This collection of samples demonstrates best practices to achieve optimal video quality and performance on Intel GPUs for content delivery networks. Check out the demo, recommended command lines and quality and performance measuring tools.

Use Media SDK via other Intel products:

  • OpenVINO Toolkit 
    _
    • This toolkit allows developers to deploy pre-trained deep learning models through a high-level C++ Inference Engine API integrated with application logic.
  • Open Visual Cloud 
    _
    • The Open Visual Cloud is a set of open source software stacks (with full end-to-end sample pipelines) for media, analytics, graphics and immersive media, optimized for cloud native deployment on commercial-off-the-shelf x86 CPU architecture.

System requirements

Operating System:

  • Linux x86-64 fully supported
  • Linux x86 only build
  • Windows (not all features are supported in Windows build - see Known Limitations for details)

Software:

  • `LibVA https://github.com/intel/libva)
  • VAAPI backend driver:

    • Intel Media Driver for VAAPI 
      _
  • Some features require CM Runtime library (part of

    Intel Media Driver for VAAPI 
    _ package)

Hardware: Intel platforms supported by the

Intel Media Driver for VAAPI 
_

Media SDK test and sample applications may require additional software packages (for example, X Server, Wayland, LibDRM, etc.) to be functional.

Operating System: Windows (experimental)

Requires Microsoft Visual Studio 2017 for building.

How to build

Build steps ~~~~~~~~~~~

Get sources with the following Git* command (pay attention that to get full Media SDK sources bundle it is required to have Git* with

LFS 
_ support)::

git clone https://github.com/Intel-Media-SDK/MediaSDK msdk cd msdk

To configure and build Media SDK install cmake version 3.6 or later and run the following commands::

mkdir build && cd build cmake .. make make install

Media SDK depends on a number of packages which are identified and checked for the proper version during configuration stage. Please, make sure to install these packages to satisfy Media SDK requirements. After successful configuration 'make' will build Media SDK binaries and samples. The following cmake configuration options can be used to customize the build:

+--------------------+-----------------------------+----------------------------------------------------------------------------------------------------+ | Option | Values | Description | +====================+=============================+====================================================================================================+ | API | master, latest, major.minor | Build mediasdk library with specified API. 'latest' | | | | will enable experimental features. 'master' will | | | | configure the most recent available published API | | | | (default: master). | +--------------------+-----------------------------+----------------------------------------------------------------------------------------------------+ | ENABLEOPENCL |

ON|OFF
| Enable OpenCL dependent code to be built (default: ON) | +--------------------+-----------------------------+----------------------------------------------------------------------------------------------------+ | ENABLEX11DRI3 |
ON|OFF
| Enable X11 DRI3 dependent code to be built (default: OFF) | +--------------------+-----------------------------+----------------------------------------------------------------------------------------------------+ | ENABLE
WAYLAND |

ON|OFF
| Enable Wayland dependent code to be built (default: OFF) | +--------------------+-----------------------------+----------------------------------------------------------------------------------------------------+ | ENABLEITT |
ON|OFF
| Enable ITT (VTune) instrumentation support (default: OFF) | +--------------------+-----------------------------+----------------------------------------------------------------------------------------------------+ | ENABLE
TEXTLOG |
ON|OFF
| Enable textlog trace support (default: OFF) | +--------------------+-----------------------------+----------------------------------------------------------------------------------------------------+ | ENABLESTAT |
ON|OFF
| Enable stat trace support (default: OFF) | +--------------------+-----------------------------+----------------------------------------------------------------------------------------------------+ | BUILD
ALL |
ON|OFF
| Build all the BUILD* targets below (default: OFF) | +--------------------+-----------------------------+----------------------------------------------------------------------------------------------------+ | BUILDRUNTIME |
ON|OFF
| Build mediasdk runtime, library and plugins (default: ON) | +--------------------+-----------------------------+----------------------------------------------------------------------------------------------------+ | BUILDSAMPLES |
ON|OFF
| Build samples (default: ON) | +--------------------+-----------------------------+----------------------------------------------------------------------------------------------------+ | BUILD
TESTS |
ON|OFF
| Build unit tests (default: OFF) | +--------------------+-----------------------------+----------------------------------------------------------------------------------------------------+ | USESYSTEMGTEST |
ON|OFF
| Use system gtest version instead of bundled (default: OFF) | +--------------------+-----------------------------+----------------------------------------------------------------------------------------------------+ | BUILDTOOLS |
ON|OFF
| Build tools (default: OFF) | +--------------------+-----------------------------+----------------------------------------------------------------------------------------------------+ | MFX
ENABLEKERNELS |
ON|OFF
| Build mediasdk with | | | |
media shaders 
| | | | support (default: ON) | +--------------------+-----------------------------+----------------------------------------------------------------------------------------------------+

The following cmake settings can be used to adjust search path locations for some components Media SDK build may depend on:

+------------------+-------------------+---------------------------------------------+ | Setting | Values | Description | +==================+===================+=============================================+ | CMAKEITTHOME | Valid system path | Location of ITT installation, | | | | takes precendence over

CMAKE_VTUNE_HOME
| | | | (by default not defined) | +------------------+-------------------+---------------------------------------------+ | CMAKEVTUNEHOME | Valid system path | Location of VTune installation | | | | (default: /opt/intel/vtune_amplifier) | +------------------+-------------------+---------------------------------------------+

Visit our Github Wiki for advanced topics on setting and building Media SDK.

Enabling Instrumentation and Tracing Technology (ITT) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

To enable the Instrumentation and Tracing Technology (ITT) API you need to:

  • Either install
    Intel® VTune™ Amplifier 
    _
  • Or manually build an open source version (see
    IntelSEAPI 
    _ for details)

and configure Media SDK with the -DENABLEITT=ON. In case of VTune it will be searched in the default location (/opt/intel/vtuneamplifier). You can adjust ITT search path with either CMAKEITTHOME or CMAKEVTUNEHOME.

Once Media SDK was built with ITT support, enable it in a runtime creating per-user configuration file ($HOME/.mfxtrace) or a system wide configuration file (/etc/mfxtrace) with the following content::

Output=0x10

Known limitations

Windows build contains only samples and dispatcher library. MediaSDK library DLL is provided with Windows GFX driver.

Recommendations

  • In case of GCC compiler it is strongly recommended to use GCC version 6 or later since that's the first GCC version which has non-experimental support of C++11 being used in Media SDK.

See also

Intel Media SDK: https://software.intel.com/en-us/media-sdk

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.