| 94 | } |
| 95 | |
| 96 | static void mp_get_code(MotionPixelsContext *mp, GetBitContext *gb, int size, int code) |
| 97 | { |
| 98 | while (get_bits1(gb)) { |
| 99 | ++size; |
| 100 | if (size > mp->max_codes_bits) { |
| 101 | av_log(mp->avctx, AV_LOG_ERROR, "invalid code size %d/%d\n", size, mp->max_codes_bits); |
| 102 | return; |
| 103 | } |
| 104 | code <<= 1; |
| 105 | mp_get_code(mp, gb, size, code + 1); |
| 106 | } |
| 107 | if (mp->current_codes_count >= MAX_HUFF_CODES) { |
| 108 | av_log(mp->avctx, AV_LOG_ERROR, "too many codes\n"); |
| 109 | return; |
| 110 | } |
| 111 | mp->codes[mp->current_codes_count ].code = code; |
| 112 | mp->codes[mp->current_codes_count++].size = size; |
| 113 | } |
| 114 | |
| 115 | static void mp_read_codes_table(MotionPixelsContext *mp, GetBitContext *gb) |
| 116 | { |
no test coverage detected