| 1807 | } |
| 1808 | |
| 1809 | void palette_index_reorderer::find_initial(uint32_t num_syms) |
| 1810 | { |
| 1811 | uint32_t max_count = 0, max_index = 0; |
| 1812 | for (uint32_t i = 0; i < num_syms * num_syms; i++) |
| 1813 | if (m_hist[i] > max_count) |
| 1814 | max_count = m_hist[i], max_index = i; |
| 1815 | |
| 1816 | uint32_t a = max_index / num_syms, b = max_index % num_syms; |
| 1817 | |
| 1818 | const size_t ofs = m_entries_picked.size(); |
| 1819 | |
| 1820 | m_entries_picked.push_back(a); |
| 1821 | m_entries_picked.push_back(b); |
| 1822 | |
| 1823 | for (uint32_t i = 0; i < num_syms; i++) |
| 1824 | if ((i != m_entries_picked[ofs + 1]) && (i != m_entries_picked[ofs])) |
| 1825 | m_entries_to_do.push_back(i); |
| 1826 | |
| 1827 | for (uint32_t i = 0; i < m_entries_to_do.size(); i++) |
| 1828 | for (uint32_t j = 0; j < m_entries_picked.size(); j++) |
| 1829 | m_total_count_to_picked[m_entries_to_do[i]] += get_hist(m_entries_to_do[i], m_entries_picked[j], num_syms); |
| 1830 | } |
| 1831 | |
| 1832 | void palette_index_reorderer::find_next_entry(uint32_t &best_entry, double &best_count, pEntry_dist_func pDist_func, void *pCtx, float dist_func_weight) |
| 1833 | { |