aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.cpp
diff options
context:
space:
mode:
authorDaniil Cherednik <dan.cherednik@gmail.com>2016-03-07 23:45:53 +0300
committerDaniil Cherednik <dan.cherednik@gmail.com>2016-03-07 23:45:53 +0300
commite06cd5d38bfc4fc2722be227d14b47e68a6e7367 (patch)
treedd03397c5c43472f8244aed4a0364a72ba239ec2 /src/main.cpp
parentafba2342677988c11250594520c95936c1747eab (diff)
downloadatracdenc-e06cd5d38bfc4fc2722be227d14b47e68a6e7367.tar.gz
autodetect saved fmt by file extension (WAV, AU, AIFF, RAW)
use AU format in case of "-" (stdout) output (something like "./atracdenc --decode -i /tmp/test.aea -o - | cvlc - " works) why AU? http://www.mega-nerd.com/libsndfile/FAQ.html#Q017
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 62a42d4..51794ea 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -55,6 +55,7 @@ int main(int argc, char* const* argv) {
{ "bfuidxfast", no_argument, NULL, 2},
{ "notransient", optional_argument, NULL, 3},
{ "mono", no_argument, NULL, 'm'},
+ { "nostdout", no_argument, NULL, 4},
{ NULL, 0, NULL, 0}
};
@@ -65,17 +66,15 @@ int main(int argc, char* const* argv) {
uint32_t bfuIdxConst = 0; //0 - auto, no const
bool fastBfuNumSearch = false;
bool mono = false;
+ bool nostdout = false;
TAtrac1EncodeSettings::EWindowMode windowMode = TAtrac1EncodeSettings::EWindowMode::EWM_AUTO;
uint32_t winMask = 0; //all is long
while ((ch = getopt_long(argc, argv, "edhi:o:m", longopts, NULL)) != -1) {
switch (ch) {
case 'e':
- cout << "encode " << endl;
mode |= E_ENCODE;
break;
case 'd':
- cout << "decode" << endl;
-
mode |= E_DECODE;
break;
case 'i':
@@ -83,7 +82,8 @@ int main(int argc, char* const* argv) {
break;
case 'o':
outFile = optarg;
- cout << "out: " << outFile<< endl;
+ if (outFile == "-")
+ nostdout = true;
break;
case 'm':
mono = true;
@@ -113,6 +113,9 @@ int main(int argc, char* const* argv) {
((winMask & 2) ? "short": "long") << ", hi - " <<
((winMask & 4) ? "short": "long") << endl;
break;
+ case 4:
+ nostdout = true;
+ break;
default:
printUsage(myName);
}
@@ -145,18 +148,20 @@ int main(int argc, char* const* argv) {
//TODO: recheck it
TAeaPtr aeaIO = TAeaPtr(new TAea(outFile, "test", numChannels, numChannels * totalSamples / 512));
pcmEngine = new TPCMEngine<double>(4096, numChannels, TPCMEngine<double>::TReaderPtr(wavIO->GetPCMReader<double>()));
- cout << "Input file: " << inFile << "\n Channels: " << numChannels << "\n SampleRate: " << wavIO->GetSampleRate() << "\n TotalSamples: " << totalSamples << endl;
+ if (!nostdout)
+ cout << "Input file: " << inFile << "\n Channels: " << numChannels << "\n SampleRate: " << wavIO->GetSampleRate() << "\n TotalSamples: " << totalSamples << endl;
atracProcessor = new TAtrac1Processor(move(aeaIO), TAtrac1EncodeSettings(bfuIdxConst, fastBfuNumSearch, windowMode, winMask));
} else if (mode == E_DECODE) {
TAeaPtr aeaIO = TAeaPtr(new TAea(inFile));
totalSamples = aeaIO->GetLengthInSamples();
uint32_t length = aeaIO->GetLengthInSamples();
- cout << "Name: " << aeaIO->GetName() << "\n Channels: " << aeaIO->GetChannelNum() << "\n Length: " << length << endl;
+ if (!nostdout)
+ cout << "Name: " << aeaIO->GetName() << "\n Channels: " << aeaIO->GetChannelNum() << "\n Length: " << length << endl;
wavIO = TWavPtr(new TWav(outFile, aeaIO->GetChannelNum(), 44100));
pcmEngine = new TPCMEngine<double>(4096, aeaIO->GetChannelNum(), TPCMEngine<double>::TWriterPtr(wavIO->GetPCMWriter<double>()));
atracProcessor = new TAtrac1Processor(move(aeaIO), TAtrac1EncodeSettings(bfuIdxConst, fastBfuNumSearch, windowMode, winMask));
} else {
- cout << "Processing mode was not specified" << endl;
+ cerr << "Processing mode was not specified" << endl;
return 1;
}
@@ -167,9 +172,11 @@ int main(int argc, char* const* argv) {
try {
while (totalSamples > (processed = pcmEngine->ApplyProcess(512, atracLambda)))
{
- printProgress(processed*100/totalSamples);
+ if (!nostdout)
+ printProgress(processed*100/totalSamples);
}
- cout << "\nDone" << endl;
+ if (!nostdout)
+ cout << "\nDone" << endl;
}
catch (TAeaIOError err) {
cerr << "Aea IO fatal error: " << err.what() << endl;