aboutsummaryrefslogtreecommitdiffstats
path: root/src/atrac/atrac_scale.cpp
diff options
context:
space:
mode:
authorDaniil Cherednik <dan.cherednik@gmail.com>2024-10-06 17:02:43 +0200
committerDaniil Cherednik <dan.cherednik@gmail.com>2024-10-06 19:54:31 +0200
commit073ddad9e7ae600db9dd942728dcd4b46b1357ec (patch)
treeb6a7a1935c598274ec97d5e96841273706ec3023 /src/atrac/atrac_scale.cpp
parenta18796c67f26df138601a0e6061daeed03808a29 (diff)
downloadatracdenc-073ddad9e7ae600db9dd942728dcd4b46b1357ec.tar.gz
Use ATH during ATRAC1 encoding
Diffstat (limited to 'src/atrac/atrac_scale.cpp')
-rw-r--r--src/atrac/atrac_scale.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/atrac/atrac_scale.cpp b/src/atrac/atrac_scale.cpp
index f24f7b0..edc44a6 100644
--- a/src/atrac/atrac_scale.cpp
+++ b/src/atrac/atrac_scale.cpp
@@ -52,14 +52,18 @@ TScaledBlock TScaler<TBaseData>::Scale(const TFloat* in, uint16_t len) {
const TFloat scaleFactor = scaleIter->first;
const uint8_t scaleFactorIndex = scaleIter->second;
TScaledBlock res(scaleFactorIndex);
+ TFloat maxEnergy = 0.0;
for (uint16_t i = 0; i < len; ++i) {
TFloat scaledValue = in[i] / scaleFactor;
+ TFloat energy = in[i] * in[i];
+ maxEnergy = std::max(maxEnergy, energy);
if (abs(scaledValue) >= 1.0) {
cerr << "got "<< scaledValue << " it is wrong scalling" << endl;
scaledValue = (scaledValue > 0) ? 0.99999 : -0.99999;
}
res.Values.push_back(scaledValue);
- }
+ }
+ res.MaxEnergy = maxEnergy;
return res;
}