engine: add the preview family to the C ABI facade

- clip-level loop mode (off/loop/clamp), undoable
- per-channel audio levels as one-frame RMS at a timestamp
- waveform min/max buckets over a footage range, rendered on demand
- two real fixes uncovered by this family: conform completion signals
  were starved by msleep-only waits (audio renders always came back
  empty), and incomplete tickets from conform-pending renders are now
  retried until the conform is ready
This commit is contained in:
2026-07-20 09:28:47 +08:00
parent 882ce8268c
commit bb17c59c0f
6 changed files with 810 additions and 16 deletions
+23
View File
@@ -311,4 +311,27 @@ if (BUILD_TESTS)
target_compile_definitions(oakengine_keyframe_test PRIVATE
OAK_TEST_SOURCE_DIR="${CMAKE_SOURCE_DIR}"
)
make_oakengine_test(oakengine_preview_test)
# The preview test needs audio rendering (RenderManager + workers).
target_include_directories(oakengine_preview_test PRIVATE
${CMAKE_SOURCE_DIR}/third_party/openfx/include
${CMAKE_SOURCE_DIR}/third_party/openfx/HostSupport/include
${OLIVE_INCLUDE_DIRS}
)
target_compile_definitions(oakengine_preview_test PRIVATE
${OLIVE_DEFINITIONS}
OAK_TEST_SOURCE_DIR="${CMAKE_SOURCE_DIR}"
)
target_compile_options(oakengine_preview_test PRIVATE
${OLIVE_COMPILE_OPTIONS}
)
if (OAK_ENABLE_DYNAMIC_RENDER_BACKEND)
target_compile_definitions(oakengine_preview_test PRIVATE
OAK_ENABLE_DYNAMIC_RENDER_BACKEND)
add_dependencies(oakengine_preview_test oakgl)
endif ()
if (TARGET olive-render-worker)
add_dependencies(oakengine_preview_test olive-render-worker)
endif ()
endif ()