• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/contrib/zstd/doc/educational_decoder/

Lines Matching defs:dtable

168 static inline u8 HUF_decode_symbol(const HUF_dtable *const dtable,
172 static inline void HUF_init_state(const HUF_dtable *const dtable,
178 static size_t HUF_decompress_1stream(const HUF_dtable *const dtable,
183 static size_t HUF_decompress_4stream(const HUF_dtable *const dtable,
196 static void HUF_free_dtable(HUF_dtable *const dtable);
217 static inline u8 FSE_peek_symbol(const FSE_dtable *const dtable,
221 static inline void FSE_update_state(const FSE_dtable *const dtable,
226 static inline u8 FSE_decode_symbol(const FSE_dtable *const dtable,
231 static inline void FSE_init_state(const FSE_dtable *const dtable,
238 static size_t FSE_decompress_interleaved2(const FSE_dtable *const dtable,
243 static void FSE_init_dtable(FSE_dtable *const dtable,
249 static void FSE_decode_header(FSE_dtable *const dtable, istream_t *const in,
254 static void FSE_init_dtable_rle(FSE_dtable *const dtable, const u8 symb);
257 static void FSE_free_dtable(FSE_dtable *const dtable);
697 static void decode_huf_table(HUF_dtable *const dtable, istream_t *const in);
868 static void decode_huf_table(HUF_dtable *const dtable, istream_t *const in) {
912 HUF_init_dtable_usingweights(dtable, weights, num_symbs);
919 FSE_dtable dtable;
924 FSE_decode_header(&dtable, in, MAX_ACCURACY_LOG);
927 *num_symbs = FSE_decompress_interleaved2(&dtable, weights, in);
929 FSE_free_dtable(&dtable);
1791 static inline u8 HUF_decode_symbol(const HUF_dtable *const dtable,
1795 const u8 symb = dtable->symbols[*state];
1796 const u8 bits = dtable->num_bits[*state];
1801 *state = ((*state << bits) + rest) & (((u16)1 << dtable->max_bits) - 1);
1806 static inline void HUF_init_state(const HUF_dtable *const dtable,
1809 // Read in a full `dtable->max_bits` bits to initialize the state
1810 const u8 bits = dtable->max_bits;
1814 static size_t HUF_decompress_1stream(const HUF_dtable *const dtable,
1838 HUF_init_state(dtable, &state, src, &bit_offset);
1841 while (bit_offset > -dtable->max_bits) {
1843 IO_write_byte(out, HUF_decode_symbol(dtable, &state, src, &bit_offset));
1852 // any data from the stream, so it should have "read" dtable->max_bits from
1855 // dtable->max_bits before the start of the stream
1856 if (bit_offset != -dtable->max_bits) {
1863 static size_t HUF_decompress_4stream(const HUF_dtable *const dtable,
1883 total_output += HUF_decompress_1stream(dtable, out, &in1);
1884 total_output += HUF_decompress_1stream(dtable, out, &in2);
1885 total_output += HUF_decompress_1stream(dtable, out, &in3);
1886 total_output += HUF_decompress_1stream(dtable, out, &in4);
2001 static void HUF_free_dtable(HUF_dtable *const dtable) {
2002 free(dtable->symbols);
2003 free(dtable->num_bits);
2004 memset(dtable, 0, sizeof(HUF_dtable));
2013 static inline u8 FSE_peek_symbol(const FSE_dtable *const dtable,
2015 return dtable->symbols[state];
2020 static inline void FSE_update_state(const FSE_dtable *const dtable,
2023 const u8 bits = dtable->num_bits[*state];
2025 *state = dtable->new_state_base[*state] + rest;
2029 static inline u8 FSE_decode_symbol(const FSE_dtable *const dtable,
2032 const u8 symb = FSE_peek_symbol(dtable, *state);
2033 FSE_update_state(dtable, state, src, offset);
2037 static inline void FSE_init_state(const FSE_dtable *const dtable,
2041 const u8 bits = dtable->accuracy_log;
2045 static size_t FSE_decompress_interleaved2(const FSE_dtable *const dtable,
2071 FSE_init_state(dtable, &state1, src, &offset);
2072 FSE_init_state(dtable, &state2, src, &offset);
2084 IO_write_byte(out, FSE_decode_symbol(dtable, &state1, src, &offset));
2088 IO_write_byte(out, FSE_peek_symbol(dtable, state2));
2093 IO_write_byte(out, FSE_decode_symbol(dtable, &state2, src, &offset));
2097 IO_write_byte(out, FSE_peek_symbol(dtable, state1));
2106 static void FSE_init_dtable(FSE_dtable *const dtable,
2116 dtable->accuracy_log = accuracy_log;
2119 dtable->symbols = malloc(size * sizeof(u8));
2120 dtable->num_bits = malloc(size * sizeof(u8));
2121 dtable->new_state_base = malloc(size * sizeof(u16));
2123 if (!dtable->symbols || !dtable->num_bits || !dtable->new_state_base) {
2141 dtable->symbols[--high_threshold] = s;
2162 dtable->symbols[pos] = s;
2180 u8 symbol = dtable->symbols[i];
2184 dtable->num_bits[i] = (u8)(accuracy_log - highest_set_bit(next_state_desc));
2187 dtable->new_state_base[i] =
2188 ((u16)next_state_desc << dtable->num_bits[i]) - size;
2194 static void FSE_decode_header(FSE_dtable *const dtable, istream_t *const in,
2294 FSE_init_dtable(dtable, frequencies, symb, accuracy_log);
2297 static void FSE_init_dtable_rle(FSE_dtable *const dtable, const u8 symb) {
2298 dtable->symbols = malloc(sizeof(u8));
2299 dtable->num_bits = malloc(sizeof(u8));
2300 dtable->new_state_base = malloc(sizeof(u16));
2302 if (!dtable->symbols || !dtable->num_bits || !dtable->new_state_base) {
2308 dtable->symbols[0] = symb;
2309 dtable->num_bits[0] = 0;
2310 dtable->new_state_base[0] = 0;
2311 dtable->accuracy_log = 0;
2314 static void FSE_free_dtable(FSE_dtable *const dtable) {
2315 free(dtable->symbols);
2316 free(dtable->num_bits);
2317 free(dtable->new_state_base);
2318 memset(dtable, 0, sizeof(FSE_dtable));