capo-lite v2.1.0
Simple audio playback library
 
Loading...
Searching...
No Matches
stream.hpp
Go to the documentation of this file.
1#pragma once
3#include <cstddef>
4#include <cstdint>
5#include <optional>
6#include <span>
7
8namespace capo {
12class IStream : public Polymorphic {
13 public:
15 [[nodiscard]] virtual auto get_sample_rate() const -> std::uint32_t = 0;
17 [[nodiscard]] virtual auto get_channels() const -> std::uint8_t = 0;
18
20 [[nodiscard]] virtual auto read_samples(std::span<float> out) -> std::size_t = 0;
21
24 [[nodiscard]] virtual auto seek_to_sample([[maybe_unused]] std::size_t index) -> bool { return false; }
26 [[nodiscard]] virtual auto get_cursor() const -> std::optional<std::size_t> { return {}; }
28 [[nodiscard]] virtual auto get_sample_count() const -> std::size_t { return 0; }
32 [[nodiscard]] virtual auto set_looping([[maybe_unused]] bool looping) -> bool { return true; }
33};
34} // namespace capo
Interface for custom audio stream (data source). Supports streaming data of indefinite length....
Definition stream.hpp:12
virtual auto seek_to_sample(std::size_t index) -> bool
Definition stream.hpp:24
virtual auto set_looping(bool looping) -> bool
Handle custom looping behavior, if applicable. Just return true / don't override for the bound Audio ...
Definition stream.hpp:32
virtual auto get_sample_count() const -> std::size_t
Definition stream.hpp:28
virtual auto get_cursor() const -> std::optional< std::size_t >
Definition stream.hpp:26
virtual auto get_channels() const -> std::uint8_t=0
Must return positive value.
virtual auto get_sample_rate() const -> std::uint32_t=0
Must return positive value.
virtual auto read_samples(std::span< float > out) -> std::size_t=0
Base class for polymorphic types.
Definition polymorphic.hpp:5
Definition buffer.hpp:8