Files
punktfunk/crates/libvpl-sys/vendor/libvpl/api/vpl/preview/legacy
enricobuehler 55e7f3fca9 feat(encode): native QSV backend — libvpl-sys + qsv.rs (Phases 0-3 of design/native-qsv-encoder.md)
Vendored MIT VPL dispatcher (static, trimmed tree, pin 674d015b/v2.17.0) built
via cmake+bindgen behind new feature 'qsv' (pf-encode + punktfunk-host forward).
qsv.rs: dispatcher session on the capture adapter (LUID-matched), SetHandle
D3D11, AsyncDepth=1/GopRefDist=1/VDEnc/CBR + HRD-off low-latency config,
GetSurfaceForEncode + GPU CopySubresourceRegion input (zero-copy, no readback
path), bounded sync-point poll, in-place reset with teardown escalation, no-IDR
bitrate retarget (Reset + StartNewSequence=OFF), 10-bit P010 HEVC-Main10/AV1,
HDR mastering/CLL SEI-OBU at IDR + BT.2020/PQ VSI, LTR-RFI via mfxExtRefListCtrl
(AMF slot policy port, Query-gated per codec, wire-index FrameOrder pinning).
Dispatch: native-first with ffmpeg fallback + PUNKTFUNK_QSV_FFMPEG hatch;
probes (can_encode_10bit / windows_codec_support / windows_backend_is_probed)
now answer natively for QSV.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 19:34:18 +02:00
..

The file preview/legacy/mfxvideo++.h is a preview implementation of "class
MFXVideoSession" which takes advantage of API 2.0 functions of the
Intel® Video Processing Library (Intel® VPL) for implementation selection and
session creation.

Known limitations:

- The parameter mfxInitParam.ExternalThreads is not supported.

- The API version returned by MFXVideoSession::QueryVersion() may be different
  on platforms for which libmfx-gen is the default runtime implementation.
  
- On Windows, accelerators selected using MFX_IMPL_HARDWARE, MFX_IMPL_HARDWARE2,
  MFX_IMPL_HARDWARE3, or MFX_IMPL_HARDWARE4 are always enumerated according to
  IDXGIFactory::EnumAdapters (i.e. D3D11) indexes, regardless of the
  acceleration mode selected.  On a multi-monitor or multi-adapter system, D3D9
  and D3D11 adapter indexing may not match. Applications needing to create a
  session on a specific D3D9 adapter should instead use the Dispatcher
  Configuration Property mfxExtendedDeviceId.DeviceLUID to select the desired
  adapter.

- Identical behavior between the production implementation of mfxvideo++.h and
  the preview is not guaranteed. Applications may however define
  MFXVIDEO_CPP_USE_DEPRECATED when compiling the preview application to build
  with the previous implementation.