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>
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# ##############################################################################
|
||||
# Copyright (C) Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: MIT
|
||||
# ##############################################################################
|
||||
|
||||
cmake_minimum_required(VERSION 3.13.0)
|
||||
|
||||
set(VPL_API_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
if(DEFINED ENV{ONEVPL_API_HEADER_DIRECTORY})
|
||||
set(VPL_API_INCLUDE_DIR $ENV{ONEVPL_API_HEADER_DIRECTORY})
|
||||
message(STATUS "Using custom API header directory: ${VPL_API_INCLUDE_DIR}")
|
||||
endif()
|
||||
|
||||
# get API version
|
||||
file(READ ${VPL_API_INCLUDE_DIR}/vpl/mfxdefs.h mfxdefs)
|
||||
|
||||
string(REGEX MATCH "MFX_VERSION_MAJOR ([0-9]*)" _ ${mfxdefs})
|
||||
set(API_VERSION_MAJOR ${CMAKE_MATCH_1})
|
||||
set(API_VERSION_MAJOR
|
||||
${API_VERSION_MAJOR}
|
||||
PARENT_SCOPE)
|
||||
|
||||
string(REGEX MATCH "MFX_VERSION_MINOR ([0-9]*)" _ ${mfxdefs})
|
||||
set(API_VERSION_MINOR ${CMAKE_MATCH_1})
|
||||
set(API_VERSION_MINOR
|
||||
${API_VERSION_MINOR}
|
||||
PARENT_SCOPE)
|
||||
|
||||
message(STATUS "API version: ${API_VERSION_MAJOR}.${API_VERSION_MINOR}")
|
||||
add_library(vpl-api INTERFACE)
|
||||
|
||||
target_include_directories(vpl-api INTERFACE ${VPL_API_INCLUDE_DIR})
|
||||
|
||||
if(INSTALL_DEV)
|
||||
install(
|
||||
DIRECTORY ${VPL_API_INCLUDE_DIR}/vpl
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
COMPONENT ${VPL_COMPONENT_DEV})
|
||||
endif()
|
||||
Reference in New Issue
Block a user