engine: add the footage family to the C ABI facade; oak-cli probe

- oakengine_footage_probe inspects media without a project (decoder
  probe): stream counts, per-stream video info (dimensions, rate,
  duration, color tags, interlacing), audio info, duration, decoder
  name, source start time; thread_local last_error for the NULL-handle
  failure paths
- oakengine_project_import_footage adds probed footage to a project
  through the same undoable command path as the app
- oak-cli probe prints decoder/duration/per-stream details and runs as
  a ctest everywhere (no GL)
- dual ownership documented: probe handles are owned, imported footage
  is borrowed from its project
This commit is contained in:
2026-07-20 06:03:16 +08:00
parent 6118260e01
commit 1a7029fd8f
7 changed files with 919 additions and 1 deletions
+9
View File
@@ -81,6 +81,15 @@ if (BUILD_TESTS)
set_tests_properties(oak_cli_render PROPERTIES
SKIP_RETURN_CODE 2
)
# probe is headless and always runs; the output must mention the demo
# file's 1920x1080 video and 48000 Hz audio.
add_test(NAME oak_cli_probe
COMMAND oak-cli probe ${CMAKE_SOURCE_DIR}/tests/demo.mp4
)
set_tests_properties(oak_cli_probe PROPERTIES
PASS_REGULAR_EXPRESSION "1920.*48000"
)
# Rendering needs the render worker and the dynamic backend plugins.
if (TARGET olive-render-worker)
add_dependencies(oak-cli olive-render-worker)