87 bool can_read(
const std::string& filepath)
const override;
95 bool open(
const std::string& filepath,
FileReadOptions options = FileReadOptions::ALL)
override;
121 bool open_from_demux(std::shared_ptr<FFmpegDemuxContext> demux,
122 std::shared_ptr<AudioStreamContext> audio,
123 const std::string& filepath,
129 void close()
override;
135 bool is_open()
const override;
141 std::optional<FileMetadata> get_metadata()
const override;
147 std::vector<FileRegion> get_regions()
const override;
153 std::vector<Kakshya::DataVariant> read_all()
override;
160 std::vector<Kakshya::DataVariant> read_region(
const FileRegion& region)
override;
177 [[nodiscard]] std::shared_ptr<Kakshya::DynamicSoundStream> load_bounded(
178 const std::string& filepath,
179 uint64_t max_frames = 0,
180 bool truncate =
false);
186 std::shared_ptr<Kakshya::SignalSourceContainer>
create_container()
override;
193 bool load_into_container(std::shared_ptr<Kakshya::SignalSourceContainer> container)
override;
199 std::vector<uint64_t> get_read_position()
const override;
206 bool seek(
const std::vector<uint64_t>&
position)
override;
212 std::vector<std::string> get_supported_extensions()
const override;
218 std::type_index
get_data_type()
const override {
return typeid(std::vector<double>); }
230 std::string get_last_error()
const override;
248 size_t get_num_dimensions()
const override;
254 std::vector<uint64_t> get_dimension_sizes()
const override;
262 std::vector<Kakshya::DataVariant> read_frames(uint64_t num_frames, uint64_t
offset = 0);
328 std::atomic<uint64_t> m_current_frame_position { 0 };
333 uint32_t m_target_sample_rate = 0;
352 std::vector<Kakshya::DataVariant> decode_frames(
353 const std::shared_ptr<FFmpegDemuxContext>& demux,
354 const std::shared_ptr<AudioStreamContext>& audio,
366 bool seek_internal(
const std::shared_ptr<FFmpegDemuxContext>& demux,
367 const std::shared_ptr<AudioStreamContext>& audio,
368 uint64_t frame_position);
373 void build_metadata(
const std::shared_ptr<FFmpegDemuxContext>& demux,
374 const std::shared_ptr<AudioStreamContext>& audio)
const;
379 void build_regions(
const std::shared_ptr<FFmpegDemuxContext>& demux,
380 const std::shared_ptr<AudioStreamContext>& audio)
const;
386 void set_error(
const std::string& error)
const;
391 void clear_error()
const;