oneVPL is Intel's replacement for intel-media-sdk.
You should really only use this with intel hardware acceleration. The onevpl CPU runtime is End-of-Life.
- Software Encode
- Hardware Encode
- Software Decode
- Hardware Decode
- Simple Video Post/Pre Processing (VPP)
- Color space conversion, Crop
- Advanced Video Post/Pre Processing (VPP)
- Sharpening, Denoise, Rotate, etc.
- External Frame Allocator (Use your own buffers)
- Legacy API
Building bindings requires clang to be installed.
If you install clang tools with VS build tools (not recommended, use link above instead), you may have to manually set the libclang path with an environmental variable in order to build. The folder should contain libclang.dll
. For example in powershell:
$env:LIBCLANG_PATH="C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/Llvm/x64/bin"
cargo build
See examples folder. You need git lfs to download the test files. You may need to run git lfs install
after cloning.
RUST_LOG=trace cargo run --example decode_file
RUST_LOG=trace cargo run --example encode_file
- HW encoding requires HW input formats (NV12 instead of YUV). You should use the VPP to preprocess the video/frames into HW formats. See
encode_file_hw
example.
It appears the OneVPL is thread safe in the "main loop" of the application. https://community.intel.com/t5/Media-Intel-oneAPI-Video/oneVPL-beta10-concurrent-encode-stream/m-p/1233576
This library does it's best to try to enforce that. If you find a theading bug, please open an issue.
- Encode
- Decode
- Example to decode to RGB4
- Example to decode to drm
- Simple hardware accelerated decoding
- 10 bit decoding support
- Mostly just need to write the functions to write pl10 to a file
- Example to decode to RGB4
- VPP
- Simple VPP processing
- Pipelined VPP processing https://spec.oneapi.io/versions/latest/elements/oneVPL/source/API_ref/VPL_func_vid_decode_vpp.html
- Simple VPP processing
- Write tests