diff options
-rw-r--r-- | libavcodec/golomb.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/libavcodec/golomb.h b/libavcodec/golomb.h index 76da6a2387..134e6aca47 100644 --- a/libavcodec/golomb.h +++ b/libavcodec/golomb.h @@ -334,8 +334,16 @@ static inline int get_ur_golomb_jpegls(GetBitContext *gb, int k, int limit, if (i < limit - 1) { if (k) { - buf = SHOW_UBITS(re, gb, k); - LAST_SKIP_BITS(re, gb, k); + if (k > MIN_CACHE_BITS - 1) { + buf = SHOW_UBITS(re, gb, 16) << (k-16); + LAST_SKIP_BITS(re, gb, 16); + UPDATE_CACHE(re, gb); + buf |= SHOW_UBITS(re, gb, k-16); + LAST_SKIP_BITS(re, gb, k-16); + } else { + buf = SHOW_UBITS(re, gb, k); + LAST_SKIP_BITS(re, gb, k); + } } else { buf = 0; } |