returns the code. The bit reader must already have been ensured at least 15 bits */
| 1096 | returns the code. The bit reader must already have been ensured at least 15 bits |
| 1097 | */ |
| 1098 | static unsigned huffmanDecodeSymbol(LodePNGBitReader* reader, const HuffmanTree* codetree) { |
| 1099 | unsigned short code = peekBits(reader, FIRSTBITS); |
| 1100 | unsigned short l = codetree->table_len[code]; |
| 1101 | unsigned short value = codetree->table_value[code]; |
| 1102 | if(l <= FIRSTBITS) { |
| 1103 | advanceBits(reader, l); |
| 1104 | return value; |
| 1105 | } else { |
| 1106 | unsigned index2; |
| 1107 | advanceBits(reader, FIRSTBITS); |
| 1108 | index2 = value + peekBits(reader, l - FIRSTBITS); |
| 1109 | advanceBits(reader, codetree->table_len[index2] - FIRSTBITS); |
| 1110 | return codetree->table_value[index2]; |
| 1111 | } |
| 1112 | } |
| 1113 | #endif /*LODEPNG_COMPILE_DECODER*/ |
| 1114 | |
| 1115 | #ifdef LODEPNG_COMPILE_DECODER |
no test coverage detected