diff options
-rw-r--r-- | src/atrac1denc.cpp | 10 | ||||
-rw-r--r-- | src/atrac1denc.h | 5 |
2 files changed, 10 insertions, 5 deletions
diff --git a/src/atrac1denc.cpp b/src/atrac1denc.cpp index a6e2d45..5901286 100644 --- a/src/atrac1denc.cpp +++ b/src/atrac1denc.cpp @@ -166,10 +166,10 @@ TPCMEngine::TProcessLambda TAtrac1Decoder::GetLambda() { TPCMEngine::TProcessLambda TAtrac1Encoder::GetLambda() { const uint32_t srcChannels = Aea->GetChannelNum(); - vector<IAtrac1BitAlloc*> bitAlloc(srcChannels); - for (auto& x : bitAlloc) { - x = new TAtrac1SimpleBitAlloc(Aea.get(), Settings.GetBfuIdxConst(), Settings.GetFastBfuNumSearch()); + BitAllocs.reserve(srcChannels); + for (uint32_t ch = 0; ch < srcChannels; ch++) { + BitAllocs.emplace_back(new TAtrac1SimpleBitAlloc(Aea.get(), Settings.GetBfuIdxConst(), Settings.GetFastBfuNumSearch())); } struct TChannelData { @@ -185,7 +185,7 @@ TPCMEngine::TProcessLambda TAtrac1Encoder::GetLambda() { using TData = vector<TChannelData>; auto buf = std::make_shared<TData>(srcChannels); - return [this, srcChannels, bitAlloc, buf](float* data, const TPCMEngine::ProcessMeta& /*meta*/) { + return [this, srcChannels, buf](float* data, const TPCMEngine::ProcessMeta& /*meta*/) { TAtrac1Data::TBlockSizeMod blockSz[2]; uint32_t windowMasks[2] = {0}; @@ -234,7 +234,7 @@ TPCMEngine::TProcessLambda TAtrac1Encoder::GetLambda() { } for (uint32_t channel = 0; channel < srcChannels; channel++) { - bitAlloc[channel]->Write(Scaler.ScaleFrame((*buf)[channel].Specs, blockSz[channel]), blockSz[channel], Loudness / LoudFactor); + BitAllocs[channel]->Write(Scaler.ScaleFrame((*buf)[channel].Specs, blockSz[channel]), blockSz[channel], Loudness / LoudFactor); } return TPCMEngine::EProcessResult::PROCESSED; diff --git a/src/atrac1denc.h b/src/atrac1denc.h index 525596e..e261dec 100644 --- a/src/atrac1denc.h +++ b/src/atrac1denc.h @@ -27,9 +27,13 @@ #include <assert.h> #include <vector> +#include <memory> namespace NAtracDEnc { +namespace NAtrac1 { + class IAtrac1BitAlloc; +} class TAtrac1MDCT { NMDCT::TMDCT<512> Mdct512; @@ -62,6 +66,7 @@ class TAtrac1Encoder : public IProcessor, public TAtrac1MDCT { Atrac1AnalysisFilterBank<float> AnalysisFilterBank[2]; const std::vector<float> LoudnessCurve; + std::vector<std::unique_ptr<NAtrac1::IAtrac1BitAlloc>> BitAllocs; class TTransientDetectors { std::vector<TTransientDetector> transientDetectorLow; |