MayaFlux 0.2.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ get_region_data()

std::vector< DataVariant > MayaFlux::Kakshya::SoundStreamContainer::get_region_data ( const Region region) const
overridevirtual

Get data for a specific region.

Parameters
regionThe region to extract data from
Returns
std::vector<DataVariant> containing the region's data

Implements MayaFlux::Kakshya::NDDataContainer.

Definition at line 86 of file SoundStreamContainer.cpp.

87{
88 const auto& spans = get_span_cache();
89
91 if (spans.empty())
92 return {};
93
94 std::span<const double> const_span(spans[0].data(), spans[0].size());
95 auto extracted = extract_region_data<double>(const_span, region, m_structure.dimensions);
96 return { DataVariant(std::move(extracted)) };
97 }
98
99 auto const_spans = spans | std::views::transform([](const auto& span) {
100 return std::span<const double>(span.data(), span.size());
101 });
102
103 auto extracted_channels = extract_region_data<double>(
104 std::vector<std::span<const double>>(const_spans.begin(), const_spans.end()),
105 region, m_structure.dimensions);
106
107 return extracted_channels
108 | std::views::transform([](auto&& channel) {
109 return DataVariant(std::forward<decltype(channel)>(channel));
110 })
111 | std::ranges::to<std::vector>();
112}
const std::vector< std::span< double > > & get_span_cache() const
Get the cached spans for each channel, recomputing if dirty.
std::variant< std::vector< double >, std::vector< float >, std::vector< uint8_t >, std::vector< uint16_t >, std::vector< uint32_t >, std::vector< std::complex< float > >, std::vector< std::complex< double > >, std::vector< glm::vec2 >, std::vector< glm::vec3 >, std::vector< glm::vec4 >, std::vector< glm::mat4 > > DataVariant
Multi-type data storage for different precision needs.
Definition NDData.hpp:73
@ INTERLEAVED
Single DataVariant with interleaved data (LRLRLR for stereo)

References MayaFlux::Kakshya::ContainerDataStructure::dimensions, get_span_cache(), MayaFlux::Kakshya::INTERLEAVED, m_structure, and MayaFlux::Kakshya::ContainerDataStructure::organization.

+ Here is the call graph for this function: