aboutsummaryrefslogtreecommitdiffstats
path: root/src/mdct/mdct_ut.cpp
diff options
context:
space:
mode:
authorDaniil Cherednik <dan.cherednik@gmail.com>2016-06-19 02:58:23 +0300
committerDaniil Cherednik <dan.cherednik@gmail.com>2016-06-19 03:31:55 +0300
commit1151d5831f19a9f24dd0c545a4968606712a62d2 (patch)
treec978c1b9a3fc86fef531dd412fe6b7668b7c0567 /src/mdct/mdct_ut.cpp
parent8d65a0bd0774e03b3d10354e15f2f3361a2ce26a (diff)
downloadatracdenc-1151d5831f19a9f24dd0c545a4968606712a62d2.tar.gz
some improvements of ATRAC3 implementation:atrac3
- simple (ATRAC1 like) psychoacoustic added - possibility to encode tonal components - simple tonal component extractor - refactoring
Diffstat (limited to 'src/mdct/mdct_ut.cpp')
-rw-r--r--src/mdct/mdct_ut.cpp64
1 files changed, 32 insertions, 32 deletions
diff --git a/src/mdct/mdct_ut.cpp b/src/mdct/mdct_ut.cpp
index e81bea1..3552afd 100644
--- a/src/mdct/mdct_ut.cpp
+++ b/src/mdct/mdct_ut.cpp
@@ -7,24 +7,24 @@
using std::vector;
using namespace NMDCT;
-static vector<double> mdct(double* x, int N) {
- vector<double> res;
+static vector<TFloat> mdct(TFloat* x, int N) {
+ vector<TFloat> res;
for (int k = 0; k < N; k++) {
- double sum = 0;
+ TFloat sum = 0;
for (int n = 0; n < 2 * N; n++)
- sum += x[n]* cos((M_PI/N) * ((double)n + 0.5 + N/2) * ((double)k + 0.5));
+ sum += x[n]* cos((M_PI/N) * ((TFloat)n + 0.5 + N/2) * ((TFloat)k + 0.5));
res.push_back(sum);
}
return res;
}
-static vector<double> midct(double* x, int N) {
- vector<double> res;
+static vector<TFloat> midct(TFloat* x, int N) {
+ vector<TFloat> res;
for (int n = 0; n < 2 * N; n++) {
- double sum = 0;
+ TFloat sum = 0;
for (int k = 0; k < N; k++)
- sum += (x[k] * cos((M_PI/N) * ((double)n + 0.5 + N/2) * ((double)k + 0.5)));
+ sum += (x[k] * cos((M_PI/N) * ((TFloat)n + 0.5 + N/2) * ((TFloat)k + 0.5)));
res.push_back(sum);
}
@@ -35,12 +35,12 @@ static vector<double> midct(double* x, int N) {
TEST(TBitStream, MDCT64) {
const int N = 64;
TMDCT<N> transform(N);
- vector<double> src(N);
+ vector<TFloat> src(N);
for (int i = 0; i < N; i++) {
src[i] = i;
}
- const vector<double> res1 = mdct(&src[0], N/2);
- const vector<double> res2 = transform(&src[0]);
+ const vector<TFloat> res1 = mdct(&src[0], N/2);
+ const vector<TFloat> res2 = transform(&src[0]);
EXPECT_EQ(res1.size(), res2.size());
for (int i = 0; i < res1.size(); i++) {
EXPECT_NEAR(res1[i], res2[i], 0.0000000001);
@@ -50,12 +50,12 @@ TEST(TBitStream, MDCT64) {
TEST(TBitStream, MDCT128) {
const int N = 128;
TMDCT<N> transform(N);
- vector<double> src(N);
+ vector<TFloat> src(N);
for (int i = 0; i < N; i++) {
src[i] = i;
}
- const vector<double> res1 = mdct(&src[0], N/2);
- const vector<double> res2 = transform(&src[0]);
+ const vector<TFloat> res1 = mdct(&src[0], N/2);
+ const vector<TFloat> res2 = transform(&src[0]);
EXPECT_EQ(res1.size(), res2.size());
for (int i = 0; i < res1.size(); i++) {
EXPECT_NEAR(res1[i], res2[i], 0.0000000001);
@@ -65,12 +65,12 @@ TEST(TBitStream, MDCT128) {
TEST(TBitStream, MDCT256) {
const int N = 256;
TMDCT<N> transform(N);
- vector<double> src(N);
+ vector<TFloat> src(N);
for (int i = 0; i < N; i++) {
src[i] = i;
}
- const vector<double> res1 = mdct(&src[0], N/2);
- const vector<double> res2 = transform(&src[0]);
+ const vector<TFloat> res1 = mdct(&src[0], N/2);
+ const vector<TFloat> res2 = transform(&src[0]);
EXPECT_EQ(res1.size(), res2.size());
for (int i = 0; i < res1.size(); i++) {
EXPECT_NEAR(res1[i], res2[i], 0.00000001);
@@ -80,12 +80,12 @@ TEST(TBitStream, MDCT256) {
TEST(TBitStream, MDCT256_RAND) {
const int N = 256;
TMDCT<N> transform(N);
- vector<double> src(N);
+ vector<TFloat> src(N);
for (int i = 0; i < N; i++) {
src[i] = rand();
}
- const vector<double> res1 = mdct(&src[0], N/2);
- const vector<double> res2 = transform(&src[0]);
+ const vector<TFloat> res1 = mdct(&src[0], N/2);
+ const vector<TFloat> res2 = transform(&src[0]);
EXPECT_EQ(res1.size(), res2.size());
for (int i = 0; i < res1.size(); i++) {
EXPECT_NEAR(res1[i], res2[i], 0.01);
@@ -96,12 +96,12 @@ TEST(TBitStream, MDCT256_RAND) {
TEST(TBitStream, MIDCT64) {
const int N = 64;
TMIDCT<N> transform(1);
- vector<double> src(N);
+ vector<TFloat> src(N);
for (int i = 0; i < N/2; i++) {
src[i] = i;
}
- const vector<double> res1 = midct(&src[0], N/2);
- const vector<double> res2 = transform(&src[0]);
+ const vector<TFloat> res1 = midct(&src[0], N/2);
+ const vector<TFloat> res2 = transform(&src[0]);
EXPECT_EQ(res1.size(), res2.size());
for (int i = 0; i < N; i++) {
EXPECT_NEAR(res1[i], res2[i], 0.0000000001);
@@ -111,12 +111,12 @@ TEST(TBitStream, MIDCT64) {
TEST(TBitStream, MIDCT128) {
const int N = 128;
TMIDCT<N> transform(1);
- vector<double> src(N);
+ vector<TFloat> src(N);
for (int i = 0; i < N/2; i++) {
src[i] = i;
}
- const vector<double> res1 = midct(&src[0], N/2);
- const vector<double> res2 = transform(&src[0]);
+ const vector<TFloat> res1 = midct(&src[0], N/2);
+ const vector<TFloat> res2 = transform(&src[0]);
EXPECT_EQ(res1.size(), res2.size());
for (int i = 0; i < N; i++) {
EXPECT_NEAR(res1[i], res2[i], 0.0000000001);
@@ -126,12 +126,12 @@ TEST(TBitStream, MIDCT128) {
TEST(TBitStream, MIDCT256) {
const int N = 256;
TMIDCT<N> transform(1);
- vector<double> src(N);
+ vector<TFloat> src(N);
for (int i = 0; i < N/2; i++) {
src[i] = i;
}
- const vector<double> res1 = midct(&src[0], N/2);
- const vector<double> res2 = transform(&src[0]);
+ const vector<TFloat> res1 = midct(&src[0], N/2);
+ const vector<TFloat> res2 = transform(&src[0]);
EXPECT_EQ(res1.size(), res2.size());
for (int i = 0; i < N; i++) {
EXPECT_NEAR(res1[i], res2[i], 0.000000001);
@@ -141,12 +141,12 @@ TEST(TBitStream, MIDCT256) {
TEST(TBitStream, MIDCT256_RAND) {
const int N = 256;
TMIDCT<N> transform(1);
- vector<double> src(N);
+ vector<TFloat> src(N);
for (int i = 0; i < N/2; i++) {
src[i] = rand();
}
- const vector<double> res1 = midct(&src[0], N/2);
- const vector<double> res2 = transform(&src[0]);
+ const vector<TFloat> res1 = midct(&src[0], N/2);
+ const vector<TFloat> res2 = transform(&src[0]);
EXPECT_EQ(res1.size(), res2.size());
for (int i = 0; i < N; i++) {
EXPECT_NEAR(res1[i], res2[i], 0.01);