(b, huffman_groups, symbols_in_use)
| 324 | return selectors_list |
| 325 | |
| 326 | def compute_tables(b, huffman_groups, symbols_in_use): |
| 327 | groups_lengths = [] |
| 328 | for j in range(huffman_groups): |
| 329 | length = start_huffman_length = b.readbits(5) |
| 330 | #print 'start_huffman_length', start_huffman_length |
| 331 | lengths = [] |
| 332 | for i in range(symbols_in_use): |
| 333 | if not 0 <= length <= 20: |
| 334 | raise "Bzip2 Huffman length code outside range 0..20" |
| 335 | while b.readbits(1): |
| 336 | length -= (b.readbits(1) * 2) - 1 |
| 337 | lengths += [length] |
| 338 | groups_lengths += [lengths] |
| 339 | #print groups_lengths |
| 340 | |
| 341 | tables = [] |
| 342 | for g in groups_lengths: |
| 343 | codes = OrderedHuffmanTable(g) |
| 344 | codes.populate_huffman_symbols() |
| 345 | codes.min_max_bits() |
| 346 | tables.append(codes) |
| 347 | return tables |
| 348 | |
| 349 | def decode_huffman_block(b, out): |
| 350 | print 'bzip2 Huffman block' |
no test coverage detected