@@ -33,29 +33,29 @@ using std::cerr;
33
33
using std::endl;
34
34
using std::pair;
35
35
36
- static const uint32_t FixedBitAllocTableLong[TAtrac1BitStreamWriter ::MaxBfus] = {
36
+ static const uint32_t FixedBitAllocTableLong[TAtrac1Data ::MaxBfus] = {
37
37
7 , 7 , 7 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 ,
38
38
6 , 6 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 4 ,
39
39
4 , 4 , 3 , 3 , 3 , 3 , 3 , 3 , 2 , 1 , 1 , 1 , 1 , 0 , 0 , 0
40
40
};
41
41
42
- static const uint32_t FixedBitAllocTableShort[TAtrac1BitStreamWriter ::MaxBfus] = {
42
+ static const uint32_t FixedBitAllocTableShort[TAtrac1Data ::MaxBfus] = {
43
43
6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 , 6 ,
44
44
6 , 6 , 6 , 6 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 ,
45
45
4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
46
46
};
47
47
48
- static const uint32_t BitBoostMask[TAtrac1BitStreamWriter ::MaxBfus] = {
48
+ static const uint32_t BitBoostMask[TAtrac1Data ::MaxBfus] = {
49
49
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 ,
50
50
1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 ,
51
51
1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
52
52
};
53
53
54
54
TBitsBooster::TBitsBooster () {
55
- for (uint32_t i = 0 ; i < MaxBfus; ++i) {
55
+ for (uint32_t i = 0 ; i < TAtrac1Data:: MaxBfus; ++i) {
56
56
if (BitBoostMask[i] == 0 )
57
57
continue ;
58
- const uint32_t nBits = SpecsPerBlock[i];
58
+ const uint32_t nBits = TAtrac1Data:: SpecsPerBlock[i];
59
59
BitsBoostMap.insert (pair<uint32_t , uint32_t >(nBits, i));
60
60
}
61
61
MaxBitsPerIteration = BitsBoostMap.size () ? (--BitsBoostMap.end ())->first : 0 ;
@@ -108,13 +108,13 @@ TAtrac1SimpleBitAlloc::TAtrac1SimpleBitAlloc(ICompressedOutput* container, uint3
108
108
if (ATHLong.size ()) {
109
109
return ;
110
110
}
111
- ATHLong.reserve (MaxBfus);
111
+ ATHLong.reserve (TAtrac1Data:: MaxBfus);
112
112
auto ATHSpec = CalcATH (512 , 44100 );
113
- for (size_t bandNum = 0 ; bandNum < this -> NumQMF ; ++bandNum) {
114
- for (size_t blockNum = this -> BlocksPerBand [bandNum]; blockNum < this -> BlocksPerBand [bandNum + 1 ]; ++blockNum) {
115
- const size_t specNumStart = this -> SpecsStartLong [blockNum];
113
+ for (size_t bandNum = 0 ; bandNum < TAtrac1Data:: NumQMF; ++bandNum) {
114
+ for (size_t blockNum = TAtrac1Data:: BlocksPerBand[bandNum]; blockNum < TAtrac1Data:: BlocksPerBand[bandNum + 1 ]; ++blockNum) {
115
+ const size_t specNumStart = TAtrac1Data:: SpecsStartLong[blockNum];
116
116
float x = 999 ;
117
- for (size_t line = specNumStart; line < specNumStart + this -> SpecsPerBlock [blockNum]; line++) {
117
+ for (size_t line = specNumStart; line < specNumStart + TAtrac1Data:: SpecsPerBlock[blockNum]; line++) {
118
118
x = fmin (x, ATHSpec[line]);
119
119
}
120
120
x = pow (10 , 0.1 * x);
@@ -131,7 +131,7 @@ vector<uint32_t> TAtrac1SimpleBitAlloc::CalcBitsAllocation(const std::vector<TSc
131
131
const float loudness) {
132
132
vector<uint32_t > bitsPerEachBlock (bfuNum);
133
133
for (size_t i = 0 ; i < bitsPerEachBlock.size (); ++i) {
134
- bool shortBlock = blockSize.LogCount [BfuToBand (i)];
134
+ bool shortBlock = blockSize.LogCount [TAtrac1Data:: BfuToBand (i)];
135
135
const uint32_t fix = shortBlock ? FixedBitAllocTableShort[i] : FixedBitAllocTableLong[i];
136
136
float ath = ATHLong[i] * loudness;
137
137
// std::cerr << "block: " << i << " Loudness: " << loudness << " " << 10 * log10(scaledBlocks[i].MaxEnergy / ath) << std::endl;
@@ -154,14 +154,14 @@ vector<uint32_t> TAtrac1SimpleBitAlloc::CalcBitsAllocation(const std::vector<TSc
154
154
uint32_t TAtrac1SimpleBitAlloc::GetMaxUsedBfuId (const vector<uint32_t >& bitsPerEachBlock) {
155
155
uint32_t idx = 7 ;
156
156
for (;;) {
157
- uint32_t bfuNum = BfuAmountTab[idx];
157
+ uint32_t bfuNum = TAtrac1Data:: BfuAmountTab[idx];
158
158
if (bfuNum > bitsPerEachBlock.size ()) {
159
159
idx--;
160
160
} else if (idx != 0 ) {
161
161
assert (bfuNum == bitsPerEachBlock.size ());
162
162
uint32_t i = 0 ;
163
163
while (idx && bitsPerEachBlock[bfuNum - 1 - i] == 0 ) {
164
- if (++i >= (BfuAmountTab[idx] - BfuAmountTab[idx-1 ])) {
164
+ if (++i >= (TAtrac1Data:: BfuAmountTab[idx] - TAtrac1Data:: BfuAmountTab[idx-1 ])) {
165
165
idx--;
166
166
bfuNum -= i;
167
167
i = 0 ;
@@ -191,13 +191,15 @@ uint32_t TAtrac1SimpleBitAlloc::Write(const std::vector<TScaledBlock>& scaledBlo
191
191
bool autoBfu = !BfuIdxConst;
192
192
TFloat spread = AnalizeScaleFactorSpread (scaledBlocks);
193
193
194
- vector<uint32_t > bitsPerEachBlock (BfuAmountTab[bfuIdx]);
194
+ vector<uint32_t > bitsPerEachBlock (TAtrac1Data:: BfuAmountTab[bfuIdx]);
195
195
uint32_t targetBitsPerBfus;
196
196
uint32_t curBitsPerBfus;
197
197
for (;;) {
198
- bitsPerEachBlock.resize (BfuAmountTab[bfuIdx]);
199
- const uint32_t bitsAvaliablePerBfus = SoundUnitSize * 8 - BitsPerBfuAmountTabIdx - 32 - 2 - 3 -
200
- bitsPerEachBlock.size () * (BitsPerIDWL + BitsPerIDSF);
198
+ bitsPerEachBlock.resize (TAtrac1Data::BfuAmountTab[bfuIdx]);
199
+ const uint32_t bitsAvaliablePerBfus = TAtrac1Data::SoundUnitSize * 8 -
200
+ TAtrac1Data::BitsPerBfuAmountTabIdx - 32 - 2 - 3 -
201
+ bitsPerEachBlock.size () * (TAtrac1Data::BitsPerIDWL + TAtrac1Data::BitsPerIDSF);
202
+
201
203
TFloat maxShift = 15 ;
202
204
TFloat minShift = -3 ;
203
205
TFloat shift = 3.0 ;
@@ -206,11 +208,11 @@ uint32_t TAtrac1SimpleBitAlloc::Write(const std::vector<TScaledBlock>& scaledBlo
206
208
207
209
bool bfuNumChanged = false ;
208
210
for (;;) {
209
- const vector<uint32_t >& tmpAlloc = CalcBitsAllocation (scaledBlocks, BfuAmountTab[bfuIdx],
211
+ const vector<uint32_t >& tmpAlloc = CalcBitsAllocation (scaledBlocks, TAtrac1Data:: BfuAmountTab[bfuIdx],
210
212
spread, shift, blockSize, loudness);
211
213
uint32_t bitsUsed = 0 ;
212
214
for (size_t i = 0 ; i < tmpAlloc.size (); i++) {
213
- bitsUsed += SpecsPerBlock[i] * tmpAlloc[i];
215
+ bitsUsed += TAtrac1Data:: SpecsPerBlock[i] * tmpAlloc[i];
214
216
}
215
217
216
218
if (bitsUsed < minBits) {
@@ -247,7 +249,7 @@ uint32_t TAtrac1SimpleBitAlloc::Write(const std::vector<TScaledBlock>& scaledBlo
247
249
}
248
250
ApplyBoost (&bitsPerEachBlock, curBitsPerBfus, targetBitsPerBfus);
249
251
WriteBitStream (bitsPerEachBlock, scaledBlocks, bfuIdx, blockSize);
250
- return BfuAmountTab[bfuIdx];
252
+ return TAtrac1Data:: BfuAmountTab[bfuIdx];
251
253
}
252
254
253
255
TAtrac1BitStreamWriter::TAtrac1BitStreamWriter (ICompressedOutput* container)
@@ -262,7 +264,7 @@ void TAtrac1BitStreamWriter::WriteBitStream(const vector<uint32_t>& bitsPerEachB
262
264
const TBlockSize& blockSize) {
263
265
NBitStream::TBitStream bitStream;
264
266
size_t bitUsed = 0 ;
265
- if (bfuAmountIdx >= (1 << BitsPerBfuAmountTabIdx)) {
267
+ if (bfuAmountIdx >= (1 << TAtrac1Data:: BitsPerBfuAmountTabIdx)) {
266
268
cerr << " Wrong bfuAmountIdx (" << bfuAmountIdx << " ), frame skiped" << endl;
267
269
return ;
268
270
}
@@ -276,8 +278,8 @@ void TAtrac1BitStreamWriter::WriteBitStream(const vector<uint32_t>& bitsPerEachB
276
278
bitStream.Write (0 , 2 );
277
279
bitUsed+=4 ;
278
280
279
- bitStream.Write (bfuAmountIdx, BitsPerBfuAmountTabIdx);
280
- bitUsed += BitsPerBfuAmountTabIdx;
281
+ bitStream.Write (bfuAmountIdx, TAtrac1Data:: BitsPerBfuAmountTabIdx);
282
+ bitUsed += TAtrac1Data:: BitsPerBfuAmountTabIdx;
281
283
282
284
bitStream.Write (0 , 2 );
283
285
bitStream.Write (0 , 3 );
@@ -318,8 +320,8 @@ void TAtrac1BitStreamWriter::WriteBitStream(const vector<uint32_t>& bitsPerEachB
318
320
bitStream.Write (0x0 , 8 );
319
321
320
322
bitUsed+=8 ;
321
- if (bitUsed > SoundUnitSize * 8 ) {
322
- cerr << " ATRAC1 bitstream corrupted, used: " << bitUsed << " exp: " << SoundUnitSize * 8 << endl;
323
+ if (bitUsed > TAtrac1Data:: SoundUnitSize * 8 ) {
324
+ cerr << " ATRAC1 bitstream corrupted, used: " << bitUsed << " exp: " << TAtrac1Data:: SoundUnitSize * 8 << endl;
323
325
abort ();
324
326
}
325
327
Container->WriteFrame (bitStream.GetBytes ());
0 commit comments