[FFmpeg-cvslog] avcodec/golomb: get_ur_golomb_jpegls: Fix reading huge k values
Michael Niedermayer
git at videolan.org
Tue Jun 2 00:50:16 CEST 2015
ffmpeg | branch: release/2.4 | Michael Niedermayer <michaelni at gmx.at> | Sun May 17 19:07:17 2015 +0200| [666295ebabc46127b70deb16bba4496a873e83bb] | committer: Michael Niedermayer
avcodec/golomb: get_ur_golomb_jpegls: Fix reading huge k values
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
(cherry picked from commit c720b9ce9850710e74a103d9626869e397a89faa)
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=666295ebabc46127b70deb16bba4496a873e83bb
---
libavcodec/golomb.h | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/libavcodec/golomb.h b/libavcodec/golomb.h
index 81d8aee..a65c17e 100644
--- a/libavcodec/golomb.h
+++ b/libavcodec/golomb.h
@@ -346,8 +346,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;
}
More information about the ffmpeg-cvslog
mailing list