MCPcopy Create free account
hub / github.com/0xShug0/audio.cpp / normalize_overlap_added_planar

Function normalize_overlap_added_planar

src/framework/audio/chunking.cpp:447–475  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

445#endif
446 for (int64_t ch = 0; ch < channels; ++ch) {
447 float * dst = output_planar.data() + static_cast<size_t>(ch * spec.chunk_samples);
448 for (int64_t i = 0; i < spec.chunk_samples; ++i) {
449 int64_t src_frame = span.copy_start_sample + i;
450 if (src_frame < 0 || src_frame >= input_frames) {
451 if (!reflect) {
452 continue;
453 }
454 src_frame = reflect_index(src_frame, input_frames);
455 }
456 dst[i] = input_interleaved[static_cast<size_t>(src_frame * channels + ch)];
457 }
458 }
459}
460
461void copy_planar_chunk(
462 std::vector<float> & output_planar,
463 const std::vector<float> & input_planar,
464 int64_t lanes,
465 int64_t input_frames,
466 const AudioChunkSpan & span,
467 const AudioChunkSpec & spec) {
468 validate_copy_shape(input_planar, lanes, input_frames, output_planar, spec);
469 std::fill(output_planar.begin(), output_planar.end(), 0.0F);
470 const bool reflect = should_reflect_pad(span, spec);
471#ifdef _OPENMP
472 #pragma omp parallel for if(lanes >= 2)
473#endif
474 for (int64_t lane = 0; lane < lanes; ++lane) {
475 float * dst = output_planar.data() + static_cast<size_t>(lane * spec.chunk_samples);
476 const float * src = input_planar.data() + static_cast<size_t>(lane * input_frames);
477 for (int64_t i = 0; i < spec.chunk_samples; ++i) {
478 int64_t src_frame = span.copy_start_sample + i;

Callers 2

runMethod · 0.85

Calls 4

weight_indexFunction · 0.85
planar_indexFunction · 0.85
require_positiveFunction · 0.70
sizeMethod · 0.45