diff options
author | Daniil Cherednik <dan.cherednik@gmail.com> | 2015-12-04 00:19:48 +0300 |
---|---|---|
committer | Daniil Cherednik <dan.cherednik@gmail.com> | 2015-12-04 00:19:48 +0300 |
commit | ac9a328f40be52aec6665d021d1a42a0d5258d7b (patch) | |
tree | 38ddc926bbfe4d750680f082a153b5ec97b4cce1 /src | |
parent | 52a4c545a407c48e6e5fe4f2aeada5c83cc6a795 (diff) | |
download | atracdenc-ac9a328f40be52aec6665d021d1a42a0d5258d7b.tar.gz |
refactoring: use TAtrac1EncodeSettings to configure encoder
Diffstat (limited to 'src')
-rw-r--r-- | src/atrac_encode_settings.h | 28 | ||||
-rw-r--r-- | src/atracdenc.cpp | 4 | ||||
-rw-r--r-- | src/atracdenc.h | 3 | ||||
-rw-r--r-- | src/main.cpp | 2 |
4 files changed, 33 insertions, 4 deletions
diff --git a/src/atrac_encode_settings.h b/src/atrac_encode_settings.h new file mode 100644 index 0000000..3400e76 --- /dev/null +++ b/src/atrac_encode_settings.h @@ -0,0 +1,28 @@ +#pragma once + +namespace NAtracDEnc { + +class TAtrac1EncodeSettings { +public: + enum class EWindowMode { + EWM_LONG_ONLY, + EWM_SHORT_ONLY, + EWM_AUTO + }; +private: + const uint32_t BfuIdxConst = 0; + const bool FastBfuNumSearch = false; + EWindowMode WindowMode = EWindowMode::EWM_LONG_ONLY; +public: + TAtrac1EncodeSettings(); + TAtrac1EncodeSettings(uint32_t bfuIdxConst, bool fastBfuNumSearch, EWindowMode windowMode) + : BfuIdxConst(bfuIdxConst) + , FastBfuNumSearch(fastBfuNumSearch) + , WindowMode(windowMode) + {} + uint32_t GetBfuIdxConst() const { return BfuIdxConst; } + bool GetFastBfuNumSearch() const { return FastBfuNumSearch; } + +}; + +} diff --git a/src/atracdenc.cpp b/src/atracdenc.cpp index 8776d4f..285c4ec 100644 --- a/src/atracdenc.cpp +++ b/src/atracdenc.cpp @@ -164,7 +164,7 @@ TPCMEngine<double>::TProcessLambda TAtrac1Processor::GetDecodeLambda() { } -TPCMEngine<double>::TProcessLambda TAtrac1Processor::GetEncodeLambda(uint32_t bfuIdxConst, bool fastBfuNumSearch) { +TPCMEngine<double>::TProcessLambda TAtrac1Processor::GetEncodeLambda(const TAtrac1EncodeSettings& settings) { const uint32_t srcChannels = Aea->GetChannelNum(); //TODO: should not be here //vector<char> dummy; @@ -173,7 +173,7 @@ TPCMEngine<double>::TProcessLambda TAtrac1Processor::GetEncodeLambda(uint32_t bf //cout << "Encode, channels: " << srcChannels << endl; vector<IAtrac1BitAlloc*> bitAlloc; for (int i = 0; i < srcChannels; i++) - bitAlloc.push_back(new TAtrac1SimpleBitAlloc(Aea.get(), bfuIdxConst, fastBfuNumSearch)); + bitAlloc.push_back(new TAtrac1SimpleBitAlloc(Aea.get(), settings.GetBfuIdxConst(), settings.GetFastBfuNumSearch())); //bitAlloc.push_back(new TAtrac1PsyBitAlloc(Aea.get())); return [this, srcChannels, bitAlloc](vector<double>* data) { diff --git a/src/atracdenc.h b/src/atracdenc.h index 1b20e6e..8170cd1 100644 --- a/src/atracdenc.h +++ b/src/atracdenc.h @@ -1,6 +1,7 @@ #pragma once #include "pcmengin.h" #include "aea.h" +#include "atrac_encode_settings.h" #include "atrac/atrac1.h" #include "atrac/atrac1_qmf.h" #include "atrac/atrac1_scale.h" @@ -36,6 +37,6 @@ public: TAtrac1Processor(TAeaPtr&& aea, bool mono = false); TPCMEngine<double>::TProcessLambda GetDecodeLambda(); - TPCMEngine<double>::TProcessLambda GetEncodeLambda(uint32_t bfuIdxConst, bool fastBfuNumSearch); + TPCMEngine<double>::TProcessLambda GetEncodeLambda(const TAtrac1EncodeSettings& settings); }; } diff --git a/src/main.cpp b/src/main.cpp index 756adf1..546ee83 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -146,7 +146,7 @@ int main(int argc, char* const* argv) { } TAtrac1Processor atrac1Processor(move(aeaIO), mono); - auto atracLambda = (mode == E_DECODE) ? atrac1Processor.GetDecodeLambda() : atrac1Processor.GetEncodeLambda(bfuIdxConst, fastBfuNumSearch); + auto atracLambda = (mode == E_DECODE) ? atrac1Processor.GetDecodeLambda() : atrac1Processor.GetEncodeLambda(TAtrac1EncodeSettings(bfuIdxConst, fastBfuNumSearch, TAtrac1EncodeSettings::EWindowMode::EWM_LONG_ONLY)); uint64_t processed = 0; try { while (totalSamples/4 > (processed = pcmEngine->ApplyProcess(512, atracLambda))) |