aboutsummaryrefslogtreecommitdiffstats
path: root/src/atrac/at3/atrac3.cpp
diff options
context:
space:
mode:
authorDaniil Cherednik <dan.cherednik@gmail.com>2025-07-22 22:54:21 +0200
committerGitHub <noreply@github.com>2025-07-22 22:54:21 +0200
commit61045345fa43e54fb4fc3eee0e05b25451af9ca5 (patch)
treee93f417d2a51eb1b9d30909193bc9f84f95124d5 /src/atrac/at3/atrac3.cpp
parente9eb8305dcdbdbf5a9cbabf766c6e908e63a19b1 (diff)
downloadatracdenc-master.tar.gz
Move implementation details into corresponding dirs (#52)HEADmaster
Diffstat (limited to 'src/atrac/at3/atrac3.cpp')
-rw-r--r--src/atrac/at3/atrac3.cpp56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/atrac/at3/atrac3.cpp b/src/atrac/at3/atrac3.cpp
new file mode 100644
index 0000000..1e5b8e9
--- /dev/null
+++ b/src/atrac/at3/atrac3.cpp
@@ -0,0 +1,56 @@
+/*
+ * This file is part of AtracDEnc.
+ *
+ * AtracDEnc is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * AtracDEnc is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with AtracDEnc; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "atrac3.h"
+#include <algorithm>
+
+namespace NAtracDEnc {
+namespace NAtrac3 {
+
+constexpr uint32_t TAtrac3Data::BlockSizeTab[33];
+constexpr uint32_t TAtrac3Data::ClcLengthTab[8];
+constexpr float TAtrac3Data::MaxQuant[8];
+constexpr uint32_t TAtrac3Data::BlocksPerBand[4 + 1];
+constexpr uint32_t TAtrac3Data::SpecsPerBlock[33];
+constexpr TAtrac3Data::THuffEntry TAtrac3Data::HuffTable1[HuffTable1Sz];
+constexpr TAtrac3Data::THuffEntry TAtrac3Data::HuffTable2[HuffTable2Sz];
+constexpr TAtrac3Data::THuffEntry TAtrac3Data::HuffTable3[HuffTable3Sz];
+constexpr TAtrac3Data::THuffEntry TAtrac3Data::HuffTable5[HuffTable5Sz];
+constexpr TAtrac3Data::THuffEntry TAtrac3Data::HuffTable6[HuffTable6Sz];
+constexpr TAtrac3Data::THuffEntry TAtrac3Data::HuffTable7[HuffTable7Sz];
+constexpr TAtrac3Data::THuffTablePair TAtrac3Data::HuffTables[7];
+
+constexpr TContainerParams TAtrac3Data::ContainerParams[8];
+float TAtrac3Data::EncodeWindow[256] = {0};
+float TAtrac3Data::DecodeWindow[256] = {0};
+float TAtrac3Data::ScaleTable[64] = {0};
+float TAtrac3Data::GainLevel[16];
+float TAtrac3Data::GainInterpolation[31];
+
+static const TAtrac3Data Atrac3Data;
+
+const TContainerParams* TAtrac3Data::GetContainerParamsForBitrate(uint32_t bitrate) {
+ // Set default to LP2 mode
+ if (bitrate == 0) {
+ bitrate = 132300;
+ }
+ return std::lower_bound(ContainerParams, ContainerParams+8, bitrate);
+}
+
+} // namespace NAtrac3
+} // namespace NAtracDEnc