1
/* Delta.c -- Delta converter
2
2009-05-26 : Igor Pavlov : Public domain */
6
void Delta_Init(Byte *state)
9
for (i = 0; i < DELTA_STATE_SIZE; i++)
13
static void MyMemCpy(Byte *dest, const Byte *src, unsigned size)
16
for (i = 0; i < size; i++)
20
void Delta_Encode(Byte *state, unsigned delta, Byte *data, SizeT size)
22
Byte buf[DELTA_STATE_SIZE];
24
MyMemCpy(buf, state, delta);
27
for (i = 0; i < size;)
29
for (j = 0; j < delta && i < size; i++, j++)
32
data[i] = (Byte)(b - buf[j]);
39
MyMemCpy(state, buf + j, delta - j);
40
MyMemCpy(state + delta - j, buf, j);
43
void Delta_Decode(Byte *state, unsigned delta, Byte *data, SizeT size)
45
Byte buf[DELTA_STATE_SIZE];
47
MyMemCpy(buf, state, delta);
50
for (i = 0; i < size;)
52
for (j = 0; j < delta && i < size; i++, j++)
54
buf[j] = data[i] = (Byte)(buf[j] + data[i]);
60
MyMemCpy(state, buf + j, delta - j);
61
MyMemCpy(state + delta - j, buf, j);