aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDaniil Cherednik <dan.cherednik@gmail.com>2015-12-04 00:19:48 +0300
committerDaniil Cherednik <dan.cherednik@gmail.com>2015-12-04 00:19:48 +0300
commitac9a328f40be52aec6665d021d1a42a0d5258d7b (patch)
tree38ddc926bbfe4d750680f082a153b5ec97b4cce1 /src
parent52a4c545a407c48e6e5fe4f2aeada5c83cc6a795 (diff)
downloadatracdenc-ac9a328f40be52aec6665d021d1a42a0d5258d7b.tar.gz
refactoring: use TAtrac1EncodeSettings to configure encoder
Diffstat (limited to 'src')
-rw-r--r--src/atrac_encode_settings.h28
-rw-r--r--src/atracdenc.cpp4
-rw-r--r--src/atracdenc.h3
-rw-r--r--src/main.cpp2
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)))