19std::unordered_map<std::string, std::any>
extract_processor_info(
const std::shared_ptr<SignalSourceContainer>& container);
37 const std::shared_ptr<SignalSourceContainer>& container);
48 if (channels.empty()) {
51 size_t num_channels = channels.size();
52 size_t samples_per_channel = channels[0].size();
53 std::vector<T> result(num_channels * samples_per_channel);
54 for (
size_t i = 0; i < samples_per_channel; ++i) {
55 for (
size_t ch = 0; ch < num_channels; ++ch) {
56 result[i * num_channels + ch] = channels[ch][i];
72 if (interleaved.empty() || num_channels == 0) {
75 size_t samples_per_channel = interleaved.size() / num_channels;
76 std::vector<std::vector<T>> result(num_channels);
77 for (
size_t ch = 0; ch < num_channels; ++ch) {
78 result[ch].resize(samples_per_channel);
79 for (
size_t i = 0; i < samples_per_channel; ++i) {
80 result[ch][i] = interleaved[i * num_channels + ch];
93 uint32_t channel_index);
102std::pair<std::shared_ptr<SignalSourceContainer>, std::vector<DataDimension>>
111std::vector<std::span<double>>
extract_numeric_data(
const std::shared_ptr<SignalSourceContainer>& container);
121 const std::string& operation_name,
122 size_t min_size = 1);
ProcessingState
Represents the current processing lifecycle state of a container.
std::unordered_map< std::string, std::any > analyze_access_pattern(const Region ®ion, const std::shared_ptr< SignalSourceContainer > &container)
Determine optimal memory access pattern for region.
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.
DataVariant extract_channel_data(const std::shared_ptr< SignalSourceContainer > &container, uint32_t channel_index)
Extract data from a specific channel.
std::unordered_map< std::string, std::any > extract_processing_state_info(const std::shared_ptr< SignalSourceContainer > &container)
Extract processing state information from container.
std::vector< std::span< double > > extract_numeric_data(const std::shared_ptr< SignalSourceContainer > &container)
Extracts numeric data from container with fallback handling.
void validate_numeric_data_for_analysis(const std::vector< double > &data, const std::string &operation_name, size_t min_size)
Validates numeric data for analysis operations.
std::vector< T > interleave_channels(const std::vector< std::vector< T > > &channels)
Interleave multiple channels of data into a single vector.
std::pair< std::shared_ptr< SignalSourceContainer >, std::vector< DataDimension > > validate_container_for_analysis(const std::shared_ptr< SignalSourceContainer > &container)
Validates container for analysis operations with comprehensive checks.
std::unordered_map< std::string, std::any > extract_processor_info(const std::shared_ptr< SignalSourceContainer > &container)
Extract processor information from container.
std::vector< std::vector< T > > deinterleave_channels(std::span< const T > interleaved, size_t num_channels)
Deinterleave a single vector into multiple channels.
bool transition_state(ProcessingState ¤t_state, ProcessingState new_state, std::function< void()> on_transition)
Perform a state transition for a ProcessingState, with optional callback.