99 IOManager(uint64_t sample_rate, uint32_t buffer_size, uint32_t frame_rate,
const std::shared_ptr<Buffers::BufferManager>& buffer_manager);
129 [[nodiscard]] std::shared_ptr<Kakshya::VideoFileContainer> load_video(
const std::string& filepath);
148 const std::string& filepath,
LoadConfig config);
163 [[nodiscard]] std::shared_ptr<Buffers::VideoContainerBuffer>
164 hook_video_container_to_buffer(
165 const std::shared_ptr<Kakshya::VideoFileContainer>& container);
176 [[nodiscard]] std::shared_ptr<Buffers::VideoContainerBuffer>
178 const std::shared_ptr<Kakshya::VideoFileContainer>& container)
const;
195 [[nodiscard]] std::shared_ptr<Kakshya::SoundFileContainer> load_audio(
const std::string& filepath,
LoadConfig config = {});
210 [[nodiscard]] std::shared_ptr<Kakshya::DynamicSoundStream> load_audio_bounded(
211 const std::string& filepath,
212 uint64_t max_frames = 0,
213 bool truncate =
false);
228 [[nodiscard]] std::vector<std::shared_ptr<Buffers::SoundContainerBuffer>>
229 hook_audio_container_to_buffers(
230 const std::shared_ptr<Kakshya::SoundFileContainer>& container);
241 [[nodiscard]] std::vector<std::shared_ptr<Buffers::SoundContainerBuffer>>
243 const std::shared_ptr<Kakshya::SoundFileContainer>& container)
const;
250 [[nodiscard]] std::shared_ptr<Kakshya::SoundFileContainer>
251 get_extracted_audio(
const std::shared_ptr<Kakshya::VideoFileContainer>& container)
const;
274 [[nodiscard]] std::shared_ptr<Kakshya::CameraContainer>
291 [[nodiscard]] std::shared_ptr<Buffers::VideoContainerBuffer>
292 hook_camera_to_buffer(
const std::shared_ptr<Kakshya::CameraContainer>& container);
301 [[nodiscard]] std::shared_ptr<Buffers::VideoContainerBuffer>
302 get_camera_buffer(
const std::shared_ptr<Kakshya::CameraContainer>& container)
const;
320 [[nodiscard]] uint64_t register_video_reader(std::shared_ptr<VideoFileReader> reader);
331 void release_video_reader(uint64_t reader_id);
347 [[nodiscard]] std::shared_ptr<Buffers::TextureBuffer>
348 load_image(
const std::string& filepath);
369 [[nodiscard]] std::vector<std::shared_ptr<Buffers::MeshBuffer>>
371 const std::string& filepath,
385 [[nodiscard]] std::shared_ptr<Nodes::Network::MeshNetwork>
387 const std::string& filepath,
413 const std::shared_ptr<Core::VKImage>&
image,
414 const std::string& filepath,
418 const std::shared_ptr<Buffers::TextureBuffer>& buffer,
419 const std::string& filepath,
423 const std::shared_ptr<Buffers::TextBuffer>& buffer,
424 const std::string& filepath,
425 const IO::ImageWriteOptions& options = {});
436 const std::string& filepath,
437 const IO::ImageWriteOptions& options = {});
445 void wait_for_pending_saves();
458 void dispatch_decode_request(uint64_t reader_id);
464 void dispatch_frame_request(uint64_t reader_id);
466 void configure_frame_processor(
467 const std::shared_ptr<Kakshya::VideoFileContainer>& container);
469 void configure_audio_processor(
470 const std::shared_ptr<Kakshya::SoundFileContainer>& container);
474 std::atomic<uint64_t> m_next_reader_id { 1 };
493 std::shared_ptr<Kakshya::VideoFileContainer>,
494 std::shared_ptr<Buffers::VideoContainerBuffer>>
498 std::shared_ptr<Kakshya::CameraContainer>,
499 std::shared_ptr<Buffers::VideoContainerBuffer>>
503 std::shared_ptr<Kakshya::VideoFileContainer>,
504 std::shared_ptr<Kakshya::SoundFileContainer>>
508 std::shared_ptr<Kakshya::SoundFileContainer>,
509 std::vector<std::shared_ptr<Buffers::SoundContainerBuffer>>>