static inline uint64_t get_val(BitstreamContext *bc, unsigned n)
{
#ifdef BITSTREAM_READER_LE
    uint64_t ret = bc->bits & ((UINT64_C(1) << n) - 1);
    bc->bits >>= n;
#else
    uint64_t ret = bc->bits >> (64 - n);
    bc->bits <<= n;
#endif
    bc->bits_left -= n;
    return ret;
}
['static void mp_get_code(MotionPixelsContext *mp, BitstreamContext *bc,\n                        int size, int code)\n{\n    while (bitstream_read_bit(bc)) {\n        ++size;\n        if (size > mp->max_codes_bits) {\n            av_log(mp->avctx, AV_LOG_ERROR, "invalid code size %d/%d\\n", size, mp->max_codes_bits);\n            return;\n        }\n        code <<= 1;\n        mp_get_code(mp, bc, size, code + 1);\n    }\n    if (mp->current_codes_count >= MAX_HUFF_CODES) {\n        av_log(mp->avctx, AV_LOG_ERROR, "too many codes\\n");\n        return;\n    }\n    mp->codes[mp->current_codes_count  ].code = code;\n    mp->codes[mp->current_codes_count++].size = size;\n}', 'static inline unsigned bitstream_read_bit(BitstreamContext *bc)\n{\n    if (!bc->bits_left)\n        refill_64(bc);\n    return get_val(bc, 1);\n}', 'static inline uint64_t get_val(BitstreamContext *bc, unsigned n)\n{\n#ifdef BITSTREAM_READER_LE\n    uint64_t ret = bc->bits & ((UINT64_C(1) << n) - 1);\n    bc->bits >>= n;\n#else\n    uint64_t ret = bc->bits >> (64 - n);\n    bc->bits <<= n;\n#endif\n    bc->bits_left -= n;\n    return ret;\n}']