#pragma once #include "engine/framework/assets/tensor_source.h" #include "engine/framework/core/execution_context.h" #include "engine/models/controlfoley/flow_denoiser.h" #include "engine/framework/runtime/session.h" #include "engine/models/controlfoley/assets.h" #include #include #include #include namespace engine::models::controlfoley { struct ControlFoleyTemporalShape { int64_t latent = 0; int64_t clip = 0; int64_t visual = 0; int64_t sync = 0; }; struct ControlFoleyConditioningRequest { std::optional text; std::string negative_prompt; std::optional audio; std::optional video; bool mask_away_clip = false; }; struct ControlFoleyConditioningBatch { ControlFoleyFlowConditionInput condition; ControlFoleyFlowConditionInput empty; }; class ControlFoleyConditionerRuntime { public: ControlFoleyConditionerRuntime( std::shared_ptr assets, engine::core::ExecutionContext & execution, engine::assets::TensorStorageType weight_type); ~ControlFoleyConditionerRuntime(); ControlFoleyConditioningBatch build( const ControlFoleyConditioningRequest & request, const ControlFoleyTemporalShape & shape) const; private: struct Impl; std::unique_ptr impl_; }; } // namespace engine::models::controlfoley