MCPcopy Create free account
hub / github.com/demoth/jake2 / Huff1Decompress

Method Huff1Decompress

client/src/main/java/jake2/client/SCR.java:1565–1670  ·  view source on GitHub ↗

Huff1Decompress

(byte[] in, int size)

Source from the content-addressed store, hash-verified

1563 *
1564 */
1565 private static byte[] Huff1Decompress(byte[] in, int size) {
1566 // get decompressed count
1567 int count = (in[0] & 0xFF) | ((in[1] & 0xFF)<< 8) | ((in[2] & 0xFF) << 16) | ((in[3] & 0xFF) << 24);
1568 // used as index for in[];
1569 int input = 4;
1570 byte[] out = new byte[count];
1571 // used as index for out[];
1572 int out_p = 0;
1573
1574 // read bits
1575
1576 int hnodesbase = -256 * 2; // nodes 0-255 aren't stored
1577 int index = hnodesbase;
1578 int[] hnodes = cin.hnodes1;
1579 int nodenum = cin.numhnodes1[0];
1580 int inbyte;
1581 while (count != 0) {
1582 inbyte = in[input++] & 0xFF;
1583
1584 if (nodenum < 256) {
1585 index = hnodesbase + (nodenum << 9);
1586 out[out_p++] = (byte) nodenum;
1587 if (--count == 0)
1588 break;
1589 nodenum = cin.numhnodes1[nodenum];
1590 }
1591 nodenum = hnodes[index + nodenum * 2 + (inbyte & 1)];
1592 inbyte >>= 1;
1593
1594 if (nodenum < 256) {
1595 index = hnodesbase + (nodenum << 9);
1596 out[out_p++] = (byte) nodenum;
1597 if (--count == 0)
1598 break;
1599 nodenum = cin.numhnodes1[nodenum];
1600 }
1601 nodenum = hnodes[index + nodenum * 2 + (inbyte & 1)];
1602 inbyte >>= 1;
1603
1604 if (nodenum < 256) {
1605 index = hnodesbase + (nodenum << 9);
1606 out[out_p++] = (byte) nodenum;
1607 if (--count == 0)
1608 break;
1609 nodenum = cin.numhnodes1[nodenum];
1610 }
1611 nodenum = hnodes[index + nodenum * 2 + (inbyte & 1)];
1612 inbyte >>= 1;
1613
1614 if (nodenum < 256) {
1615 index = hnodesbase + (nodenum << 9);
1616 out[out_p++] = (byte) nodenum;
1617 if (--count == 0)
1618 break;
1619 nodenum = cin.numhnodes1[nodenum];
1620 }
1621 nodenum = hnodes[index + nodenum * 2 + (inbyte & 1)];
1622 inbyte >>= 1;

Callers 1

ReadNextFrameMethod · 0.95

Calls 1

PrintfMethod · 0.95

Tested by

no test coverage detected