- if (mp->max_codes_bits <= 0)
- goto end;
- if (init_vlc(&mp->vlc, mp->max_codes_bits, mp->codes_count, &mp->codes[0].size, sizeof(HuffCode), 1, &mp->codes[0].code, sizeof(HuffCode), 4, 0))
- goto end;
+ if (mp->codes_count > 1) {
+ /* The entries of the mp->codes array are sorted from right to left
+ * in the Huffman tree, hence -(int)sizeof(HuffCode). */
+ ret = ff_init_vlc_from_lengths(&mp->vlc, mp->max_codes_bits, mp->codes_count,
+ &mp->codes[mp->codes_count - 1].size, -(int)sizeof(HuffCode),
+ &mp->codes[mp->codes_count - 1].delta, -(int)sizeof(HuffCode), 1,
+ 0, 0, avctx);
+ if (ret < 0)
+ goto end;
+ }