31 m_data.resize(data.size());
32 std::ranges::copy(data,
m_data.begin());
35 auto elements = std::visit([](
const auto& vec) {
return vec.size(); },
m_data[0]);
void setup(uint64_t num_frames, uint32_t sample_rate, uint32_t num_channels)
Setup the container with file parameters.
SoundFileContainer()
Construct a SoundFileContainer with default parameters Uses reasonable defaults suitable for file con...
void set_raw_data(const std::vector< DataVariant > &data)
Set raw data from external source (e.g., file loading)
double get_duration_seconds() const
Enable debug output for this container.
double position_to_time(uint64_t position) const override
Convert from position units (e.g., frame/sample index) to time (seconds).
std::atomic< bool > m_double_extraction_dirty
std::shared_mutex m_data_mutex
void update_processing_state(ProcessingState new_state) override
Update the processing state of the container.
std::vector< DataVariant > m_data
void lock() override
Acquire a lock for thread-safe access.
ContainerDataStructure m_structure
Concrete base implementation for streaming audio containers.
@ IDLE
Container is inactive with no data or not ready for processing.
@ INTERLEAVED
Single DataVariant with interleaved data (LRLRLR for stereo)
OrganizationStrategy organization