From d73195d6a87c369926f48a8bf774c7ea170aa789 Mon Sep 17 00:00:00 2001 From: Ahmet Inan Date: Tue, 8 Jul 2025 16:27:36 +0200 Subject: [PATCH] don't include synchronization symbols for PAPR values --- encode.cc | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/encode.cc b/encode.cc index 3d8997b..6deb5c1 100644 --- a/encode.cc +++ b/encode.cc @@ -116,17 +116,19 @@ struct Encoder : public Common tdom[i] = cmplx(clamp(tdom[i].real()), clamp(tdom[i].imag())); for (int i = 0; i < guard_len; ++i) guard[i] = DSP::lerp(guard[i], tdom[i+symbol_len-guard_len], weight[i]); - value peak = 0, mean = 0; - for (int i = 0; i < symbol_len; ++i) { - value power(norm(tdom[i])); - peak = std::max(peak, power); - mean += power; - } - mean /= symbol_len; - if (mean > 0) { - value papr(peak / mean); - papr_min = std::min(papr_min, papr); - papr_max = std::max(papr_max, papr); + if (papr_reduction) { + value peak = 0, mean = 0; + for (int i = 0; i < symbol_len; ++i) { + value power(norm(tdom[i])); + peak = std::max(peak, power); + mean += power; + } + mean /= symbol_len; + if (mean > 0) { + value papr(peak / mean); + papr_min = std::min(papr_min, papr); + papr_max = std::max(papr_max, papr); + } } if (guard_interval) pcm->write(reinterpret_cast(guard), guard_len, 2);