hcs's update for IMA decoder in vgmstream

This commit is contained in:
soneek 2014-06-01 20:14:57 -07:00
parent bf5f0ebbaf
commit cd5f1e0821

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_byte = read_8bit(stream->offset + i / 2, stream->streamfile);
sample_nibble = (sample_byte >> (i & 1 ? 4 : 0)) & 0xf; sample_nibble = (sample_byte >> (i & 1 ? 4 : 0)) & 0xf;
sample_decoded = hist1; sample_decoded = hist1 << 3;
delta = step >> 3;
if (sample_nibble & 1) delta += step >> 2; delta = step * (sample_nibble & 7) * 2 + step;
if (sample_nibble & 2) delta += step >> 1;
if (sample_nibble & 4) delta += step;
if (sample_nibble & 8) if (sample_nibble & 8)
sample_decoded -= delta; sample_decoded -= delta;
else else
sample_decoded += delta; sample_decoded += delta;
hist1=clamp16(sample_decoded); hist1 = clamp16(sample_decoded >> 3);
step_index += IMA_IndexTable[sample_nibble & 0x7]; step_index += IMA_IndexTable[sample_nibble & 0x7];
if (step_index < 0) step_index = 0; if (step_index < 0) step_index = 0;