#pragma once #include #include #include #include namespace engine::models::sam_audio { struct DecodedFrame { double time = 0.0; std::vector rgb; }; struct SourceVideo { int64_t width = 0; int64_t height = 0; std::vector frames; }; SourceVideo load_video_frames(const std::filesystem::path & path); std::vector select_video_frames(const SourceVideo & video, int64_t frames, int64_t hop, int sample_rate); // Matches torchvision's antialiased bicubic RGB resize and [-1,1] normalization. std::vector prepare_video_frame(const std::vector & rgb, int width, int height); std::vector load_reference_image(const std::filesystem::path & path); } // namespace engine::models::sam_audio