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

◆ transform_fade() [2/2]

template<OperationReadyData DataType>
DataType MayaFlux::Yantra::transform_fade ( DataType &  input,
double  fade_in_duration_ratio = 0.0,
double  fade_out_duration_ratio = 0.0 
)

Fade transformation (linear fade-in and fade-out) using C++20 ranges (IN-PLACE)

Template Parameters
DataTypeOperationReadyData type
Parameters
inputInput data - WILL BE MODIFIED
fade_in_duration_ratioFade-in duration as a ratio of total length (0.0 to 1.0)
fade_out_duration_ratioFade-out duration as a ratio of total length (0.0 to 1.0)
Returns
Faded data

Definition at line 208 of file TemporalHelper.hpp.

209{
210 auto [target_data, structure_info] = OperationHelper::extract_structured_double(input);
211
212 for (auto& span : target_data) {
213 auto fade_in_samples = static_cast<size_t>(span.size() * fade_in_duration_ratio);
214 auto fade_out_samples = static_cast<size_t>(span.size() * fade_out_duration_ratio);
215 size_t fade_out_start = span.size() - fade_out_samples;
216
217 for (size_t j = 0; j < fade_in_samples && fade_in_samples > 1; ++j) {
218 double fade_factor = static_cast<double>(j) / static_cast<double>(fade_in_samples - 1);
219 span[j] *= fade_factor;
220 }
221
222 for (size_t j = 0; j < fade_out_samples && fade_out_samples > 1 && fade_out_start + j < span.size(); ++j) {
223 double fade_factor = 1.0 - (static_cast<double>(j) / static_cast<double>(fade_out_samples - 1));
224 span[fade_out_start + j] *= fade_factor;
225 }
226 }
227
228 auto reconstructed_data = target_data
229 | std::views::transform([](const auto& span) {
230 return std::vector<double>(span.begin(), span.end());
231 })
232 | std::ranges::to<std::vector>();
233
234 return OperationHelper::reconstruct_from_double<DataType>(reconstructed_data, structure_info);
235}

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

Referenced by MayaFlux::Yantra::TemporalTransformer< InputType, OutputType >::transform_implementation().

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