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

◆ transform_quantize() [1/2]

template<OperationReadyData DataType>
DataType MayaFlux::Yantra::transform_quantize ( DataType &  input,
uint8_t  bits 
)

Quantization transformation (bit reduction) using C++20 features (IN-PLACE)

Template Parameters
DataTypeOperationReadyData type
Parameters
inputInput data - WILL BE MODIFIED
bitsNumber of bits for quantization
Returns
Quantized data

Definition at line 379 of file MathematicalHelper.hpp.

380{
381 auto [target_data, structure_info] = OperationHelper::extract_structured_double(input);
382
383 const double levels = std::pow(2.0, bits) - 1.0;
384
385 for (auto& span : target_data) {
386 std::ranges::transform(span, span.begin(),
387 [levels](double x) {
388 double clamped = std::clamp(x, -1.0, 1.0);
389 return std::round(clamped * levels) / levels;
390 });
391 }
392
393 auto reconstructed_data = target_data
394 | std::views::transform([](const auto& span) {
395 return std::vector<double>(span.begin(), span.end());
396 })
397 | std::ranges::to<std::vector>();
398
399 return OperationHelper::reconstruct_from_double<DataType>(reconstructed_data, structure_info);
400}

References transform_quantize().

Referenced by MayaFlux::Yantra::MathematicalTransformer< InputType, OutputType >::transform_implementation(), transform_quantize(), and transform_quantize().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: