hcs's update for IMA decoder in vgmstream

CQTexperiment
soneek 2014-06-01 20:14:57 -07:00
parent bf5f0ebbaf
commit cd5f1e0821
1 changed files with 635 additions and 637 deletions

View File

@ -526,17 +526,15 @@ void decode_ima(VGMSTREAMCHANNEL * stream, sample * outbuf, int channelspacing,
sample_byte = read_8bit(stream->offset + i / 2, stream->streamfile);
sample_nibble = (sample_byte >> (i & 1 ? 4 : 0)) & 0xf;
sample_decoded = hist1;
delta = step >> 3;
if (sample_nibble & 1) delta += step >> 2;
if (sample_nibble & 2) delta += step >> 1;
if (sample_nibble & 4) delta += step;
sample_decoded = hist1 << 3;
delta = step * (sample_nibble & 7) * 2 + step;
if (sample_nibble & 8)
sample_decoded -= delta;
else
sample_decoded += delta;
hist1=clamp16(sample_decoded);
hist1 = clamp16(sample_decoded >> 3);
step_index += IMA_IndexTable[sample_nibble & 0x7];
if (step_index < 0) step_index = 0;