aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.cpp
diff options
context:
space:
mode:
authorDaniil Cherednik <dan.cherednik@gmail.com>2025-05-16 23:27:59 +0200
committerDaniil Cherednik <dan.cherednik@gmail.com>2025-05-16 23:48:26 +0200
commitc5ae2cec2c8308f96867e1620f0ec3a5c41395e4 (patch)
tree8291351078e27ece783f9495241cdf667cfd4e0b /src/main.cpp
parent2a143471b0898dd8b6257ca69309a6f2b1c20bf3 (diff)
downloadatracdenc-c5ae2cec2c8308f96867e1620f0ec3a5c41395e4.tar.gz
[AT3P] Add advanced option for GHA debug
There are 3 flags: GHA_PASS_INPUT - allows to pass source signal in to the filter GHA_WRITE_TONAL - allows to write result of GHA into the bitstream GHA_WRITE_RESIUDAL - allows to process signal after the filter If all 3 flags set it denotes normal processing. If we want to see only result of sinusoid extraction (tonal component) we can set only GHA_WRITE_TONAL flag. If we want to see signal after extraction we need to set GHA_PASS_INPUT and GHA_WRITE_RESIUDAL.
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 8dbf700..861495f 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -110,6 +110,7 @@ enum EOptions
O_NOSTDOUT = '4',
O_NOTONAL = 5,
O_NOGAINCONTROL = 6,
+ O_ADVANCED_OPT = 7,
};
static void CheckInputFormat(const TWav* p)
@@ -258,7 +259,8 @@ static void PrepareAtrac3PEncoder(const string& inFile,
uint64_t* totalSamples,
const TWavPtr& wavIO,
TPcmEnginePtr* pcmEngine,
- TAtracProcessorPtr* atracProcessor)
+ TAtracProcessorPtr* atracProcessor,
+ const char* advancedOpt)
{
*totalSamples = wavIO->GetTotalSamples();
const uint64_t numFrames = (*totalSamples) / 2048;
@@ -300,13 +302,18 @@ static void PrepareAtrac3PEncoder(const string& inFile,
pcmEngine->reset(new TPCMEngine(4096,
numChannels,
TPCMEngine::TReaderPtr(wavIO->GetPCMReader())));
- atracProcessor->reset(new TAt3PEnc(std::move(omaIO), numChannels));
+ TAt3PEnc::TSettings settings;
+ if (advancedOpt) {
+ TAt3PEnc::ParseAdvancedOpt(advancedOpt, settings);
+ }
+ atracProcessor->reset(new TAt3PEnc(std::move(omaIO), numChannels, settings));
}
int main_(int argc, char* const* argv)
{
const char* myName = argv[0];
+ const char* advancedOpt = nullptr;
static struct option longopts[] = {
{ "encode", optional_argument, NULL, O_ENCODE },
{ "decode", no_argument, NULL, O_DECODE },
@@ -317,6 +324,7 @@ int main_(int argc, char* const* argv)
{ "notransient", optional_argument, NULL, O_NOTRANSIENT},
{ "nostdout", no_argument, NULL, O_NOSTDOUT},
{ "nogaincontrol", no_argument, NULL, O_NOGAINCONTROL},
+ { "advanced", required_argument, NULL, O_ADVANCED_OPT},
{ NULL, 0, NULL, 0}
};
@@ -399,6 +407,9 @@ int main_(int argc, char* const* argv)
case O_NOGAINCONTROL:
noGainControl = true;
break;
+ case O_ADVANCED_OPT:
+ advancedOpt = optarg;
+ break;
default:
printUsage(myName);
return 1;
@@ -466,7 +477,7 @@ int main_(int argc, char* const* argv)
{
wavIO = OpenWavFile(inFile);
PrepareAtrac3PEncoder(inFile, outFile, noStdOut, wavIO->GetChannelNum(),
- &totalSamples, wavIO, &pcmEngine, &atracProcessor);
+ &totalSamples, wavIO, &pcmEngine, &atracProcessor, advancedOpt);
pcmFrameSz = 2048;
}
break;