mirror of
https://github.com/claunia/cuetools.net.git
synced 2025-12-16 18:14:25 +00:00
Backed out changeset: 92ab3497a8f2
This commit is contained in:
@@ -71,11 +71,11 @@ namespace CUETools.Codecs
|
||||
#endregion
|
||||
|
||||
private byte* buffer_m;
|
||||
public byte* bptr_m;
|
||||
public int buffer_len_m;
|
||||
public int have_bits_m;
|
||||
public ulong cache_m;
|
||||
public ushort crc16_m;
|
||||
private byte* bptr_m;
|
||||
private int buffer_len_m;
|
||||
private int have_bits_m;
|
||||
private ulong cache_m;
|
||||
private ushort crc16_m;
|
||||
|
||||
public int Position
|
||||
{
|
||||
@@ -296,38 +296,6 @@ namespace CUETools.Codecs
|
||||
return v;
|
||||
}
|
||||
|
||||
public void read_int_block(int n, int k, int* r)
|
||||
{
|
||||
fill();
|
||||
byte* bptr = bptr_m;
|
||||
int have_bits = have_bits_m;
|
||||
ulong cache = cache_m;
|
||||
ushort crc = crc16_m;
|
||||
|
||||
fixed (ushort* t = Crc16.table)
|
||||
{
|
||||
for (int i = n; i > 0; i--)
|
||||
{
|
||||
while (have_bits < 56)
|
||||
{
|
||||
have_bits += 8;
|
||||
byte b = *(bptr++);
|
||||
cache |= (ulong)b << (64 - have_bits);
|
||||
crc = (ushort)((crc << 8) ^ t[(crc >> 8) ^ b]);
|
||||
}
|
||||
int res = (int)((long)cache >> 64 - k);
|
||||
cache <<= k;
|
||||
have_bits -= k;
|
||||
*(r++) = res;
|
||||
}
|
||||
}
|
||||
|
||||
have_bits_m = have_bits;
|
||||
cache_m = cache;
|
||||
bptr_m = bptr;
|
||||
crc16_m = crc;
|
||||
}
|
||||
|
||||
public void read_rice_block(int n, int k, int* r)
|
||||
{
|
||||
fill();
|
||||
|
||||
@@ -755,170 +755,160 @@ namespace CUETools.Codecs
|
||||
}
|
||||
|
||||
public static unsafe void
|
||||
decode_residual(int* smp, int n, int order,
|
||||
decode_residual(int* res, int* smp, int n, int order,
|
||||
int* coefs, int shift)
|
||||
{
|
||||
for (int i = 0; i < order; i++)
|
||||
smp[i] = res[i];
|
||||
|
||||
int* s = smp;
|
||||
int* cc = stackalloc int[12];
|
||||
for (int i = 0; i < 12; i++)
|
||||
cc[i] = 0;
|
||||
if (order <= 12)
|
||||
{
|
||||
for (int i = 0; i < order; i++)
|
||||
cc[i] = coefs[order - 1 - i];
|
||||
}
|
||||
switch (order)
|
||||
int* r = res + order;
|
||||
int c0 = coefs[0];
|
||||
int c1 = coefs[1];
|
||||
switch (order)
|
||||
{
|
||||
case 1:
|
||||
for (int i = n - order; i > 0; i--)
|
||||
{
|
||||
int pred = *cc * *(s++);
|
||||
*s += pred >> shift;
|
||||
int pred = c0 * *(s++);
|
||||
*s = *(r++) + (pred >> shift);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for (int i = n - order; i > 0; i--)
|
||||
{
|
||||
int* co = cc;
|
||||
int pred =
|
||||
*(co++) * *(s++) + *co * *(s++);
|
||||
*(s--) += pred >> shift;
|
||||
int pred = c1 * *(s++) + c0 * *(s++);
|
||||
*(s--) = *(r++) + (pred >> shift);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
for (int i = n - order; i > 0; i--)
|
||||
{
|
||||
int* co = cc;
|
||||
int pred =
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*co * *(s++);
|
||||
*s += pred >> shift;
|
||||
int* co = coefs + order - 1;
|
||||
int pred =
|
||||
*(co--) * *(s++) +
|
||||
c1 * *(s++) + c0 * *(s++);
|
||||
*s = *(r++) + (pred >> shift);
|
||||
s -= 2;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
for (int i = n - order; i > 0; i--)
|
||||
{
|
||||
int* co = cc;
|
||||
int pred =
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *co * *(s++);
|
||||
*s += pred >> shift;
|
||||
int* co = coefs + order - 1;
|
||||
int pred =
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
c1 * *(s++) + c0 * *(s++);
|
||||
*s = *(r++) + (pred >> shift);
|
||||
s -= 3;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
for (int i = n - order; i > 0; i--)
|
||||
{
|
||||
int* co = cc;
|
||||
int pred =
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co) * *(s++);
|
||||
*s += pred >> shift;
|
||||
int* co = coefs + order - 1;
|
||||
int pred =
|
||||
*(co--) * *(s++) +
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
c1 * *(s++) + c0 * *(s++);
|
||||
*s = *(r++) + (pred >> shift);
|
||||
s -= 4;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
for (int i = n - order; i > 0; i--)
|
||||
{
|
||||
int* co = cc;
|
||||
int pred =
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++);
|
||||
*s += pred >> shift;
|
||||
int* co = coefs + order - 1;
|
||||
int pred =
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
c1 * *(s++) + c0 * *(s++);
|
||||
*s = *(r++) + (pred >> shift);
|
||||
s -= 5;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
for (int i = n - order; i > 0; i--)
|
||||
{
|
||||
int* co = cc;
|
||||
int pred =
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++);
|
||||
*s += pred >> shift;
|
||||
int* co = coefs + order - 1;
|
||||
int pred =
|
||||
*(co--) * *(s++) +
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
c1 * *(s++) + c0 * *(s++);
|
||||
*s = *(r++) + (pred >> shift);
|
||||
s -= 6;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
for (int i = n - order; i > 0; i--)
|
||||
{
|
||||
int* co = cc;
|
||||
int pred =
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++);
|
||||
*s += pred >> shift;
|
||||
int* co = coefs + order - 1;
|
||||
int pred =
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
c1 * *(s++) + c0 * *(s++);
|
||||
*s = *(r++) + (pred >> shift);
|
||||
s -= 7;
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
for (int i = n - order; i > 0; i--)
|
||||
{
|
||||
int* co = cc;
|
||||
int pred =
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++);
|
||||
*s += pred >> shift;
|
||||
s -= 8;
|
||||
int* co = coefs + order - 1;
|
||||
int pred =
|
||||
*(co--) * *(s++) +
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
c1 * *(s++) + c0 * *(s++);
|
||||
*s = *(r++) + (pred >> shift);
|
||||
s -= 8;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
for (int i = n - order; i > 0; i--)
|
||||
{
|
||||
int* co = cc;
|
||||
int pred =
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++);
|
||||
*s += pred >> shift;
|
||||
s -= 9;
|
||||
int* co = coefs + order - 1;
|
||||
int pred =
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
c1 * *(s++) + c0 * *(s++);
|
||||
*s = *(r++) + (pred >> shift);
|
||||
s -= 9;
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
for (int i = n - order; i > 0; i--)
|
||||
{
|
||||
int* co = cc;
|
||||
int pred =
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++);
|
||||
*s += pred >> shift;
|
||||
s -= 10;
|
||||
int* co = coefs + order - 1;
|
||||
int pred =
|
||||
*(co--) * *(s++) +
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
c1 * *(s++) + c0 * *(s++);
|
||||
*s = *(r++) + (pred >> shift);
|
||||
s -= 10;
|
||||
}
|
||||
break;
|
||||
case 12:
|
||||
for (int i = n - order; i > 0; i--)
|
||||
{
|
||||
int* co = cc;
|
||||
int pred =
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++) +
|
||||
*(co++) * *(s++) + *(co++) * *(s++);
|
||||
// cc[00] * s[00] + cc[01] * s[01]
|
||||
//+ cc[02] * s[02] + cc[03] * s[03]
|
||||
//+ cc[04] * s[04] + cc[05] * s[05]
|
||||
//+ cc[06] * s[06] + cc[07] * s[07]
|
||||
//+ cc[08] * s[08] + cc[09] * s[09]
|
||||
//+ cc[10] * s[10] + cc[11] * s[11];
|
||||
*s += pred >> shift;
|
||||
s -= 11;
|
||||
int* co = coefs + order - 1;
|
||||
int pred =
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
*(co--) * *(s++) + *(co--) * *(s++) +
|
||||
c1 * *(s++) + c0 * *(s++);
|
||||
*s = *(r++) + (pred >> shift);
|
||||
s -= 11;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@@ -936,10 +926,10 @@ namespace CUETools.Codecs
|
||||
pred += coefs[4] * *(s++);
|
||||
pred += coefs[3] * *(s++);
|
||||
pred += coefs[2] * *(s++);
|
||||
pred += coefs[1] * *(s++);
|
||||
pred += coefs[0] * *(s++);
|
||||
*s += pred >> shift;
|
||||
}
|
||||
pred += c1 * *(s++);
|
||||
pred += c0 * *(s++);
|
||||
*s = *(r++) + (pred >> shift);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user