aboutsummaryrefslogtreecommitdiffstats
path: root/src/atrac/atrac1_qmf.h
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/atrac/atrac1_qmf.h
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/atrac/atrac1_qmf.h')
-rw-r--r--src/atrac/atrac1_qmf.h24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/atrac/atrac1_qmf.h b/src/atrac/atrac1_qmf.h
index 8550932..37d0bba 100644
--- a/src/atrac/atrac1_qmf.h
+++ b/src/atrac/atrac1_qmf.h
@@ -2,24 +2,26 @@
#include "../qmf/qmf.h"
+namespace NAtracDEnc {
+
template<class TIn>
class Atrac1SplitFilterBank {
const static int nInSamples = 512;
const static int delayComp = 39;
TQmf<TIn, nInSamples> Qmf1;
TQmf<TIn, nInSamples / 2> Qmf2;
- std::vector<double> MidLowTmp;
- std::vector<double> DelayBuf;
+ std::vector<TFloat> MidLowTmp;
+ std::vector<TFloat> DelayBuf;
public:
Atrac1SplitFilterBank() {
MidLowTmp.resize(512);
DelayBuf.resize(delayComp + 512);
}
- void Split(TIn* pcm, double* low, double* mid, double* hi) {
- memcpy(&DelayBuf[0], &DelayBuf[256], sizeof(double) * delayComp);
+ void Split(TIn* pcm, TFloat* low, TFloat* mid, TFloat* hi) {
+ memcpy(&DelayBuf[0], &DelayBuf[256], sizeof(TFloat) * delayComp);
Qmf1.Split(pcm, &MidLowTmp[0], &DelayBuf[delayComp]);
Qmf2.Split(&MidLowTmp[0], low, mid);
- memcpy(hi, &DelayBuf[0], sizeof(double) * 256);
+ memcpy(hi, &DelayBuf[0], sizeof(TFloat) * 256);
}
};
@@ -29,19 +31,19 @@ class Atrac1SynthesisFilterBank {
const static int delayComp = 39;
TQmf<TOut, nInSamples> Qmf1;
TQmf<TOut, nInSamples / 2> Qmf2;
- std::vector<double> MidLowTmp;
- std::vector<double> DelayBuf;
+ std::vector<TFloat> MidLowTmp;
+ std::vector<TFloat> DelayBuf;
public:
Atrac1SynthesisFilterBank() {
MidLowTmp.resize(512);
DelayBuf.resize(delayComp + 512);
}
- void Synthesis(TOut* pcm, double* low, double* mid, double* hi) {
- memcpy(&DelayBuf[0], &DelayBuf[256], sizeof(double) * delayComp);
- memcpy(&DelayBuf[delayComp], hi, sizeof(double) * 256);
+ void Synthesis(TOut* pcm, TFloat* low, TFloat* mid, TFloat* hi) {
+ memcpy(&DelayBuf[0], &DelayBuf[256], sizeof(TFloat) * delayComp);
+ memcpy(&DelayBuf[delayComp], hi, sizeof(TFloat) * 256);
Qmf2.Merge(&MidLowTmp[0], &low[0], &mid[0]);
Qmf1.Merge(&pcm[0], &MidLowTmp[0], &DelayBuf[0]);
}
};
-
+} //namespace NAtracDEnc