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

◆ dynamic_range_global()

MAYAFLUX_API double MayaFlux::dynamic_range_global ( const std::vector< Kakshya::DataVariant > &  channels)

Calculate dynamic range across all channels (global min/max)

Parameters
channelsVector of channel data
Returns
Single dynamic range value in dB across all channels

Definition at line 194 of file Yantra.cpp.

195{
196 auto data = Yantra::OperationHelper::extract_numeric_data(channels);
197 double global_min = std::numeric_limits<double>::max();
198 double global_max = std::numeric_limits<double>::lowest();
199
200 for (const auto& span : data) {
201 auto [min_it, max_it] = std::ranges::minmax_element(span);
202 if (min_it != span.end()) {
203 global_min = std::min(global_min, *min_it);
204 global_max = std::max(global_max, *max_it);
205 }
206 }
207
208 if (global_min <= 0.0 || global_max <= 0.0) {
209 return 0.0;
210 }
211 return 20.0 * std::log10(global_max / std::abs(global_min));
212}

References MayaFlux::Yantra::OperationHelper::extract_numeric_data().

+ Here is the call graph for this function: