| 7706 | } |
| 7707 | |
| 7708 | bool basisu_lowlevel_etc1s_transcoder::decode_tables(const uint8_t* pTable_data, uint32_t table_data_size) |
| 7709 | { |
| 7710 | basist::bitwise_decoder sym_codec; |
| 7711 | if (!sym_codec.init(pTable_data, table_data_size)) |
| 7712 | { |
| 7713 | BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_tables: fail 0\n"); |
| 7714 | return false; |
| 7715 | } |
| 7716 | |
| 7717 | if (!sym_codec.read_huffman_table(m_endpoint_pred_model)) |
| 7718 | { |
| 7719 | BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_tables: fail 1\n"); |
| 7720 | return false; |
| 7721 | } |
| 7722 | |
| 7723 | if (m_endpoint_pred_model.get_code_sizes().size() == 0) |
| 7724 | { |
| 7725 | BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_tables: fail 1a\n"); |
| 7726 | return false; |
| 7727 | } |
| 7728 | |
| 7729 | if (!sym_codec.read_huffman_table(m_delta_endpoint_model)) |
| 7730 | { |
| 7731 | BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_tables: fail 2\n"); |
| 7732 | return false; |
| 7733 | } |
| 7734 | |
| 7735 | if (m_delta_endpoint_model.get_code_sizes().size() == 0) |
| 7736 | { |
| 7737 | BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_tables: fail 2a\n"); |
| 7738 | return false; |
| 7739 | } |
| 7740 | |
| 7741 | if (!sym_codec.read_huffman_table(m_selector_model)) |
| 7742 | { |
| 7743 | BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_tables: fail 3\n"); |
| 7744 | return false; |
| 7745 | } |
| 7746 | |
| 7747 | if (m_selector_model.get_code_sizes().size() == 0) |
| 7748 | { |
| 7749 | BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_tables: fail 3a\n"); |
| 7750 | return false; |
| 7751 | } |
| 7752 | |
| 7753 | if (!sym_codec.read_huffman_table(m_selector_history_buf_rle_model)) |
| 7754 | { |
| 7755 | BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_tables: fail 4\n"); |
| 7756 | return false; |
| 7757 | } |
| 7758 | |
| 7759 | if (m_selector_history_buf_rle_model.get_code_sizes().size() == 0) |
| 7760 | { |
| 7761 | BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_tables: fail 4a\n"); |
| 7762 | return false; |
| 7763 | } |
| 7764 | |
| 7765 | m_selector_history_buf_size = sym_codec.get_bits(13); |
no test coverage detected