| 7747 | } |
| 7748 | |
| 7749 | bool basisu_lowlevel_etc1s_transcoder::decode_tables(const uint8_t* pTable_data, uint32_t table_data_size) |
| 7750 | { |
| 7751 | basist::bitwise_decoder sym_codec; |
| 7752 | if (!sym_codec.init(pTable_data, table_data_size)) |
| 7753 | { |
| 7754 | BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_tables: fail 0\n"); |
| 7755 | return false; |
| 7756 | } |
| 7757 | |
| 7758 | if (!sym_codec.read_huffman_table(m_endpoint_pred_model)) |
| 7759 | { |
| 7760 | BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_tables: fail 1\n"); |
| 7761 | return false; |
| 7762 | } |
| 7763 | |
| 7764 | if (m_endpoint_pred_model.get_code_sizes().size() == 0) |
| 7765 | { |
| 7766 | BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_tables: fail 1a\n"); |
| 7767 | return false; |
| 7768 | } |
| 7769 | |
| 7770 | if (!sym_codec.read_huffman_table(m_delta_endpoint_model)) |
| 7771 | { |
| 7772 | BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_tables: fail 2\n"); |
| 7773 | return false; |
| 7774 | } |
| 7775 | |
| 7776 | if (m_delta_endpoint_model.get_code_sizes().size() == 0) |
| 7777 | { |
| 7778 | BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_tables: fail 2a\n"); |
| 7779 | return false; |
| 7780 | } |
| 7781 | |
| 7782 | if (!sym_codec.read_huffman_table(m_selector_model)) |
| 7783 | { |
| 7784 | BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_tables: fail 3\n"); |
| 7785 | return false; |
| 7786 | } |
| 7787 | |
| 7788 | if (m_selector_model.get_code_sizes().size() == 0) |
| 7789 | { |
| 7790 | BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_tables: fail 3a\n"); |
| 7791 | return false; |
| 7792 | } |
| 7793 | |
| 7794 | if (!sym_codec.read_huffman_table(m_selector_history_buf_rle_model)) |
| 7795 | { |
| 7796 | BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_tables: fail 4\n"); |
| 7797 | return false; |
| 7798 | } |
| 7799 | |
| 7800 | if (m_selector_history_buf_rle_model.get_code_sizes().size() == 0) |
| 7801 | { |
| 7802 | BASISU_DEVEL_ERROR("basisu_lowlevel_etc1s_transcoder::decode_tables: fail 4a\n"); |
| 7803 | return false; |
| 7804 | } |
| 7805 | |
| 7806 | m_selector_history_buf_size = sym_codec.get_bits(13); |
no test coverage detected