Authors: Nikita Sanjay Shiledarbaxi, Rob Mueller-Albrecht
In the current era of data explosion, video accounts for a substantial proportion of the overall internet traffic. Video processing is a specific type of signal processing that relates to video streams, where one applies filters, overlays, distortions, and effects to edit the images and sounds within a video. It is
Fig.1: oneVPL provides easily accessible APIs for Video Encode, Decode, and Processing
If you are looking for a one-stop solution that performs all these tasks for you efficiently, Intel® oneAPI Video Processing Library (oneVPL) is the answer! Managing your video files well can lead to their accurate analysis and utilization. This blog will introduce you to oneVPL, a oneAPI solution for efficient video data management.
oneVPL – An Introduction
oneVPL is a flexible programming interface that exposes a common API for video encoding, decoding, and processing across various hardware accelerators. It enables device discovery and selection, and zero-copy (avoidance of unnecessary data copies) in video analytics and media-centric workloads.
oneVPL lets you decode hundreds of high-definition video channels on Intel® Xeon CPUs. But given the number of hardware accelerators and diverse set of processing units available today, the video processing tasks can be expedited if they are offloaded to dedicated devices. For instance, Intel GPUs have dedicated fixed functions to accelerate video processing. oneVPL can perform the heavy task of offloading all your video processing from the CPU to the GPU. In addition, it also enables squeezing in more video channels. This way oneVPL accomplishes more video processing work on the GPU than CPUs can sometimes handle.
For state-of-the-art video transcoding, oneVPL supports:
- High-resolution video formats such as AV1, MPEG-2 and VP9.
- High-quality video compression standards such as Advanced Video Coding (H.264) and High Efficiency Video Coding (H.265).
- Functionalities such as color conversions, scaling and resizing of videos; Inverse Telecine (where Telecine refers to the process of motion picture–to – video transformation) and deinterlacing (where interlacing refers to doubling the video frame rate without consuming extra bandwidth).
oneVPL - An Evolution Of Intel® Media SDK
oneVPL is the 2.x API successor of and source compatible with the Intel® Media Software Development Kit (SDK). There is forward and backward compatibility between oneVPL and Intel® Media SDK APIs. Their runtimes can even coexist on the same system. However, new API functionalities and support for the advanced Intel hardware like the new discrete GPUs, will only be added to oneVPL. You get the same variety of filters and video codes in oneVPL as in Media SDK. Additionally, you can leverage features such as video process initialization, extended AV1 encoding and easier device enumeration.
Following are some of the major changes in terms of enhancements and removals that you will notice in oneVPL, making it simpler to use than the Intel® Media SDK:
- Addition of some more advanced API features to oneVPL – more flexible session initialization, internal memory allocation interoperable with multiple graphics APIs, dispatcher logging and extended AV1 parameters, to name a few.
- Introduction of new functions for dispatching, memory management and session initialization.
- Elimination of some Media SDK features such as audio support, multi-frame encoding, external buffer memory management and external threading. See the full list of removed Media SDK API features.
- Removal of certain Media SDK functions for functionalities such as audio support, video processing, and memory allocation. Check out the eliminated functions now!
For detailed information on upgrading from Media SDK to oneVPL and other standard media frameworks, visit this link. Explore the changes that occurred and handle your videos with greater delicacy!
oneVPL Architecture
Using oneVPL, your application can accelerate video processing on multiple devices – be it CPU, GPU, or others that implement oneVPL open specifications. oneVPL functions have been grouped into certain categories:
- VPP (video processing functions)
- ENCODE (video encoding functions)
- DECODE (video decoding functions)
Applications link to a dispatcher library (as shown in Fig.2 below) to leverage oneVPL functions.
Fig.2: oneVPL architecture
The dispatcher library is responsible for identifying the hardware accelerator on the running platform and the most appropriate platform library for that device. Accordingly, it redirects the function calls to that library.
Remarkable Hardware Acceleration with Intel Graphics
Fig.3: oneVPL’s Deep Link Hyper Encode feature significantly improves performance of some standard video editing applications - Test configuration details**
oneVPL allows you to use an expanding range of Intel hardware accelerators for expediting your video pipeline. It focuses only on operations with video elementary stream (a video stream that is not multiplexed with another audio/video stream). Intel® Deep Link technology makes Intel CPUs and GPUs more efficient with boosted performance across various workloads. With oneVPL’s Deep Link Hyper Encode feature, you can unlock an accelerated video encoding on high-performance Intel GPUs such as Intel® Iris® Xe MAX.
oneVPL vs Other Industry-Standard Solutions – Choose Wisely!
For accelerated video processing on Intel architectures, you can opt for oneVPL. However, several other media frameworks and software solutions do exist for your assistance. A proper selection of software depends on your requirements.
oneVPL is hardware-portable with similar interfaces across Windows and Linux. It is of higher-level abstraction than Libva* or DirectX* Video Processing (DXVA). With a considerable level of control over hardware capabilities, oneVPL would be your best choice if your product differentiates well on video encoding and decoding features.
On the other hand, Libva and DXVA are hardware-specific and OS-specific solutions. They offer the highest level of control over hardware capabilities, but also require the highest programming effort with the lowest portability between systems.
As an alternative, you can always call the lower-level APIs such as Libva and DXVA from media frameworks such as FFmpeg* or GStreamer*. This solution will give you an even higher level of abstraction and hence the lowest level of hardware controllability. However, you will have the advantage of minimal required programming effort and smooth integration with other functionalities of the application such as network control and audio processing.
Thus, before you make a choice between different software solutions to unlock accelerated video processing on Intel hardware, remember to assess your goals and pros/cons of each option. Check out this link to ensure that you make a wise decision!
Wrap-up
We hope you found onVPL to be interesting. Get started with oneVPL today so that you can process your video data easily yet efficiently. To dive deeper into this amazing library, visit oneVPL API reference, programming guide and access the GitHub code samples. Learn more about oneVPL and experience qualitative encoding, decoding, processing, and overall refining of your videos. Stay tuned for more blogs on oneAPI components in the future.
More Resources
- oneVPL official page
- oneVPL specifications guide
- oneVPL GitHub repository
- oneVPL code samples
- oneAPI Base Toolkit
- Upgrading from Intel® Media SDK to Intel® oneAPI Video Processing Library
- oneVPL Enabled in FFMPEG: Achieving Great Streaming Quality on Intel GPUs
Get The Software
Visit this link to download oneVPL and several other components of oneAPI.
Acknowledgment
We would like to thank Chandan Damannagari for his contribution to this blog.
** Configuration: Processor: Intel® Core™ i7-12800H, Pre Production ADL-H w/Alchemist SoC, BIOS: ADLPFWI1.R00.3091.A00.2202211056, Integrated Graphics: Intel® Iris® Xe Graphics, Integrated Graphics Driver: 30.0.101.1320, Discrete Graphics: Intel® Arc™ A370M Graphics, Discrete Graphics Driver: 30.0.101.1320, Memory: 16GB (2x8GB) DDR5 @ 4800MHz, Storage: INTEL SSDPEKKF512G7 512GB, OS: Windows 11 Version 10.0.22000.556
Applications Used: HandBrake Nightly: 20220314213624 - ae8c70396- master (2022031401), DaVinci Resolve Studio: Internal Binary - Version 17.4.5.0004, CyberLink PowerDirector: Internal Binary - 20.3.2610.1 (64-bit), VDE220119-11
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.