diff options
author | Daniil Cherednik <dan.cherednik@gmail.com> | 2024-12-24 22:59:03 +0100 |
---|---|---|
committer | Daniil Cherednik <dan.cherednik@gmail.com> | 2024-12-24 22:59:03 +0100 |
commit | bddbeb98b3db8d435de6b2d10269640121475538 (patch) | |
tree | 1a791f5dd49b94ead503b9b77c6b9277f2701a89 /src/atrac3denc_ut.cpp | |
parent | c73a0e24a0d5c510a65efbe5c2fbc7fd39a3c003 (diff) | |
parent | 74d6e04c21bddd435bd74c34dbe027b883772a76 (diff) | |
download | atracdenc-bddbeb98b3db8d435de6b2d10269640121475538.tar.gz |
Merge branch 'master' into at3plus-dev
Diffstat (limited to 'src/atrac3denc_ut.cpp')
-rw-r--r-- | src/atrac3denc_ut.cpp | 86 |
1 files changed, 43 insertions, 43 deletions
diff --git a/src/atrac3denc_ut.cpp b/src/atrac3denc_ut.cpp index f52af02..6979c92 100644 --- a/src/atrac3denc_ut.cpp +++ b/src/atrac3denc_ut.cpp @@ -27,14 +27,14 @@ using std::vector; using namespace NAtracDEnc; using namespace NAtrac3; -static void GenerateSignal(TFloat* buf, size_t n, TFloat f, TFloat a) { +static void GenerateSignal(float* buf, size_t n, float f, float a) { for (size_t i = 0; i < n; ++i) { buf[i] = a * sin((M_PI/2) * i * f); } } -static void GenerateSignalWithTransient(TFloat* buf, size_t n, TFloat f, TFloat a, - size_t transientPos, size_t transientLen, TFloat transientLev) { +static void GenerateSignalWithTransient(float* buf, size_t n, float f, float a, + size_t transientPos, size_t transientLen, float transientLev) { assert(transientPos + transientLen < n); GenerateSignal(buf, n, f, a); GenerateSignal(buf+transientPos, transientLen, f, transientLev); @@ -43,15 +43,15 @@ static void GenerateSignalWithTransient(TFloat* buf, size_t n, TFloat f, TFloat // } } -class TWindowTest : public TAtrac3Data { +class TWindowTest { public: void RunTest() { for (size_t i = 0; i < 256; i++) { - const TFloat ha1 = EncodeWindow[i] / 2.0; //compensation - const TFloat hs1 = DecodeWindow[i]; - const TFloat hs2 = DecodeWindow[255-i]; - const TFloat res = hs1 / (hs1 * hs1 + hs2 * hs2); - EXPECT_NEAR(ha1, res, 0.000000001); + const float ha1 = TAtrac3Data::EncodeWindow[i] / 2.0; //compensation + const double hs1 = TAtrac3Data::DecodeWindow[i]; + const double hs2 = TAtrac3Data::DecodeWindow[255-i]; + const float res = hs1 / (hs1 * hs1 + hs2 * hs2); + EXPECT_NEAR(ha1, res, 1.0 / (1 << 24)); } } }; @@ -93,18 +93,18 @@ public: TEST(TAtrac3MDCT, TAtrac3MDCTZeroOneBlock) { TAtrac3MDCT mdct; - TAtrac3MDCTWorkBuff<TFloat> buff; - size_t workSz = TAtrac3MDCTWorkBuff<TFloat>::BandBuffSz; + TAtrac3MDCTWorkBuff<float> buff; + size_t workSz = TAtrac3MDCTWorkBuff<float>::BandBuffSz; - vector<TFloat> specs(1024); + vector<float> specs(1024); - TFloat* p[4] = { buff.Band0, buff.Band1, buff.Band2, buff.Band3 }; + float* p[4] = { buff.Band0, buff.Band1, buff.Band2, buff.Band3 }; mdct.Mdct(specs.data(), p); for(auto s: specs) EXPECT_NEAR(s, 0.0, 0.0000000001); - TFloat* t[4] = { buff.Band0Res, buff.Band1Res, buff.Band2Res, buff.Band3Res }; + float* t[4] = { buff.Band0Res, buff.Band1Res, buff.Band2Res, buff.Band3Res }; mdct.Midct(specs.data(), p); for(size_t i = 0; i < workSz; ++i) @@ -121,28 +121,28 @@ TEST(TAtrac3MDCT, TAtrac3MDCTZeroOneBlock) { } - +/* TEST(TAtrac3MDCT, TAtrac3MDCTSignal) { TAtrac3MDCT mdct; - TAtrac3MDCTWorkBuff<TFloat> buff; - size_t workSz = TAtrac3MDCTWorkBuff<TFloat>::BandBuffSz; + TAtrac3MDCTWorkBuff<float> buff; + size_t workSz = TAtrac3MDCTWorkBuff<float>::BandBuffSz; const size_t len = 1024; - vector<TFloat> signal(len); - vector<TFloat> signalRes(len); + vector<float> signal(len); + vector<float> signalRes(len); GenerateSignal(signal.data(), signal.size(), 0.25, 32768); for (size_t pos = 0; pos < len; pos += workSz) { - vector<TFloat> specs(1024); - memcpy(buff.Band0 + workSz, signal.data() + pos, workSz * sizeof(TFloat)); + vector<float> specs(1024); + memcpy(buff.Band0 + workSz, signal.data() + pos, workSz * sizeof(float)); - TFloat* p[4] = { buff.Band0, buff.Band1, buff.Band2, buff.Band3 }; + float* p[4] = { buff.Band0, buff.Band1, buff.Band2, buff.Band3 }; mdct.Mdct(specs.data(), p); - TFloat* t[4] = { buff.Band0Res, buff.Band1Res, buff.Band2Res, buff.Band3Res }; + float* t[4] = { buff.Band0Res, buff.Band1Res, buff.Band2Res, buff.Band3Res }; mdct.Midct(specs.data(), t); - memcpy(signalRes.data() + pos, buff.Band0Res, workSz * sizeof(TFloat)); + memcpy(signalRes.data() + pos, buff.Band0Res, workSz * sizeof(float)); } for (int i = workSz; i < len; ++i) @@ -151,19 +151,19 @@ TEST(TAtrac3MDCT, TAtrac3MDCTSignal) { TEST(TAtrac3MDCT, TAtrac3MDCTSignalWithGainCompensation) { TAtrac3MDCT mdct; - TAtrac3MDCTWorkBuff<TFloat> buff; - size_t workSz = TAtrac3MDCTWorkBuff<TFloat>::BandBuffSz; + TAtrac3MDCTWorkBuff<float> buff; + size_t workSz = TAtrac3MDCTWorkBuff<float>::BandBuffSz; const size_t len = 4096; - vector<TFloat> signal(len, 8000); - vector<TFloat> signalRes(len); + vector<float> signal(len, 8000); + vector<float> signalRes(len); GenerateSignal(signal.data() + 1024, signal.size()-1024, 0.25, 32768); for (size_t pos = 0; pos < len; pos += workSz) { - vector<TFloat> specs(1024); - memcpy(buff.Band0 + workSz, signal.data() + pos, workSz * sizeof(TFloat)); + vector<float> specs(1024); + memcpy(buff.Band0 + workSz, signal.data() + pos, workSz * sizeof(float)); - TFloat* p[4] = { buff.Band0, buff.Band1, buff.Band2, buff.Band3 }; + float* p[4] = { buff.Band0, buff.Band1, buff.Band2, buff.Band3 }; if (pos == 256) { //apply gain modulation TAtrac3Data::SubbandInfo siCur; @@ -195,7 +195,7 @@ TEST(TAtrac3MDCT, TAtrac3MDCTSignalWithGainCompensation) { mdct.Mdct(specs.data(), p); } - TFloat* t[4] = { buff.Band0Res, buff.Band1Res, buff.Band2Res, buff.Band3Res }; + float* t[4] = { buff.Band0Res, buff.Band1Res, buff.Band2Res, buff.Band3Res }; if (pos == 256) { //restore gain modulation TAtrac3Data::SubbandInfo siCur; @@ -268,7 +268,7 @@ TEST(TAtrac3MDCT, TAtrac3MDCTSignalWithGainCompensation) { } else { mdct.Midct(specs.data(), t); } - memcpy(signalRes.data() + pos, buff.Band0Res, workSz * sizeof(TFloat)); + memcpy(signalRes.data() + pos, buff.Band0Res, workSz * sizeof(float)); } for (int i = workSz; i < len; ++i) { //std::cout << "res: " << i << " " << signalRes[i] << std::endl; @@ -278,21 +278,21 @@ TEST(TAtrac3MDCT, TAtrac3MDCTSignalWithGainCompensation) { TEST(TAtrac3MDCT, TAtrac3MDCTSignalWithGainCompensationAndManualTransient) { TAtrac3MDCT mdct; - TAtrac3MDCTWorkBuff<TFloat> buff; - size_t workSz = TAtrac3MDCTWorkBuff<TFloat>::BandBuffSz; + TAtrac3MDCTWorkBuff<float> buff; + size_t workSz = TAtrac3MDCTWorkBuff<float>::BandBuffSz; const size_t len = 1024; - vector<TFloat> signal(len); - vector<TFloat> signalRes(len); + vector<float> signal(len); + vector<float> signalRes(len); GenerateSignalWithTransient(signal.data(), signal.size(), 0.03125, 512.0, 640, 64, 32768.0); const std::vector<TAtrac3Data::SubbandInfo::TGainPoint> curve1 = {{6, 13}, {4, 14}}; for (size_t pos = 0; pos < len; pos += workSz) { - vector<TFloat> specs(1024); - memcpy(buff.Band0 + workSz, signal.data() + pos, workSz * sizeof(TFloat)); + vector<float> specs(1024); + memcpy(buff.Band0 + workSz, signal.data() + pos, workSz * sizeof(float)); - TFloat* p[4] = { buff.Band0, buff.Band1, buff.Band2, buff.Band3 }; + float* p[4] = { buff.Band0, buff.Band1, buff.Band2, buff.Band3 }; //for (int i = 0; i < 256; i++) { // std::cout << i + pos << " " << buff.Band0[i] << std::endl; //} @@ -315,7 +315,7 @@ TEST(TAtrac3MDCT, TAtrac3MDCTSignalWithGainCompensationAndManualTransient) { if (i > 240 && i < 256) specs[i] /= 1.9; } - TFloat* t[4] = { buff.Band0Res, buff.Band1Res, buff.Band2Res, buff.Band3Res }; + float* t[4] = { buff.Band0Res, buff.Band1Res, buff.Band2Res, buff.Band3Res }; if (pos == 512) { //restore gain modulation TAtrac3Data::SubbandInfo siCur; TAtrac3Data::SubbandInfo siNext; @@ -337,14 +337,14 @@ TEST(TAtrac3MDCT, TAtrac3MDCTSignalWithGainCompensationAndManualTransient) { mdct.Midct(specs.data(), t); } - memcpy(signalRes.data() + pos, buff.Band0Res, workSz * sizeof(TFloat)); + memcpy(signalRes.data() + pos, buff.Band0Res, workSz * sizeof(float)); } for (int i = workSz; i < len; ++i) { //std::cout << "res: " << i << " " << signalRes[i] << std::endl; EXPECT_NEAR(signal[i - workSz], signalRes[i], 10); } } - +*/ TEST(AtracGainControl, RelToIdxTest) { EXPECT_EQ(4, RelationToIdx(1)); |