refactor(task): OTIO load/save tasks over oaknode/oaktimeline C ABIs

- LoadOTIOTask/SaveOTIOTask de-Qt'd: graph traversal and construction
  through oaknode C ABI (find_input_footage, sequence defaults, block
  factories, context positions), track creation through oaktimeline's
  add_track command; the OTIO import dialog becomes a facade callback
  (headless default: accept all)
- oaknode additions: find_input_footage, sequence_set_default_parameters
- USE_OTIO + otio-install libs wired into oaktask; OTIO dylibs copied
  next to liboaktask for @loader_path resolution
- OTIO round-trip test passes; build-oaktask 106/106 green
This commit is contained in:
2026-08-07 14:58:56 +08:00
parent 40a336276f
commit da2ab512c6
15 changed files with 1139 additions and 685 deletions
+19
View File
@@ -70,6 +70,25 @@ int oaktask_import_invalid_count(OakTaskTask *t);
int oaktask_import_invalid_at(OakTaskTask *t, int index, char *buf,
int buf_size);
/** @brief olive::LoadOTIOTask. */
OakTaskTask *oaktask_create_project_load_otio(const char *filename);
/** @brief Take the loaded project (ownership transfer). */
OakNodeProject *oaktask_load_otio_take_project(OakTaskTask *t);
/** @brief olive::SaveOTIOTask. */
OakTaskTask *oaktask_create_project_save_otio(OakNodeProject *project,
const char *filename);
/**
* @brief OTIO import confirmation callback (facade concern; default
* accepts everything). Return non-zero to accept.
*/
typedef int (*oaktask_otio_import_confirm_fn)(
const char *const *sequence_names, int count, void *userdata);
void oaktask_load_otio_set_confirm_cb(oaktask_otio_import_confirm_fn fn,
void *userdata);
/** @brief olive::PreCacheTask. */
OakTaskTask *oaktask_create_precache(OakNodeFootage *footage, int index,
OakNodeSequence *sequence);