#pragma once #include "engine/framework/assets/tensor_source.h" #include "engine/framework/core/execution_context.h" #include "engine/models/sheetsage/types.h" #include #include namespace engine::models::sheetsage { class Mert2EncoderRuntime { public: Mert2EncoderRuntime( std::shared_ptr source, core::ExecutionContext & execution, SheetSage2DecoderConfig config = {}, SheetSage2DecoderRuntimeOptions options = {}); ~Mert2EncoderRuntime(); Mert2EncoderRuntime(const Mert2EncoderRuntime &) = delete; Mert2EncoderRuntime & operator=(const Mert2EncoderRuntime &) = delete; Mert2EncoderRuntime(Mert2EncoderRuntime &&) noexcept; Mert2EncoderRuntime & operator=(Mert2EncoderRuntime &&) noexcept; std::vector encode_mel( const std::vector & normalized_mel, int64_t mel_frames); void prepare(int64_t batch, int64_t mel_frames); void release_runtime_graphs(); private: struct Impl; std::unique_ptr impl_; }; class SheetSage2DecoderRuntime { public: SheetSage2DecoderRuntime( std::shared_ptr source, core::ExecutionContext & execution, SheetSage2DecoderConfig config = {}, SheetSage2DecoderRuntimeOptions options = {}); ~SheetSage2DecoderRuntime(); SheetSage2DecoderRuntime(const SheetSage2DecoderRuntime &) = delete; SheetSage2DecoderRuntime & operator=(const SheetSage2DecoderRuntime &) = delete; SheetSage2DecoderRuntime(SheetSage2DecoderRuntime &&) noexcept; SheetSage2DecoderRuntime & operator=(SheetSage2DecoderRuntime &&) noexcept; std::vector decode_logits( const std::vector & mixed_encoder_state, int64_t memory_steps, const std::vector & decoder_input_ids); void reset_cached_decode( const std::vector & mixed_encoder_state, int64_t memory_steps, int64_t cache_steps); std::vector prefill_cached_decode(const std::vector & token_ids); std::vector decode_cached_step(int32_t token); void prepare(int64_t batch, int64_t memory_steps, int64_t decoder_steps); void release_runtime_graphs(); private: struct Impl; std::unique_ptr impl_; }; } // namespace engine::models::sheetsage