diff options
author | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2020-09-23 04:57:53 +0200 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2020-09-26 20:38:30 +0200 |
commit | a902c24994dea7cbdf84bff70ad8709958b1008d (patch) | |
tree | 684d7abbe66cc14d2acc91891a21c341fba3d236 /libavcodec/photocd.c | |
parent | abebd87764992dc22c82802bdc75d40aac14ab86 (diff) | |
download | ffmpeg-a902c24994dea7cbdf84bff70ad8709958b1008d.tar.gz |
avcodec/photocd: Simplify parsing Huffman tables a bit
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Diffstat (limited to 'libavcodec/photocd.c')
-rw-r--r-- | libavcodec/photocd.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/libavcodec/photocd.c b/libavcodec/photocd.c index 057c9d33d4..8fd4536a65 100644 --- a/libavcodec/photocd.c +++ b/libavcodec/photocd.c @@ -245,21 +245,20 @@ static av_noinline int decode_huff(AVCodecContext *avctx, AVFrame *frame, int x2, idx; for (; get_bits_left(&g) > 0;) { - if ((show_bits(&g, 24) & 0xfff000) == 0xfff000) + if (show_bits(&g, 12) == 0xfff) break; skip_bits(&g, 8); } - shiftreg = show_bits_long(&g, 32) & 0xffffff00; - while (shiftreg != 0xfffffe00) { + shiftreg = show_bits(&g, 24); + while (shiftreg != 0xfffffe) { if (get_bits_left(&g) <= 0) return AVERROR_INVALIDDATA; skip_bits(&g, 1); - shiftreg = show_bits_long(&g, 32) & 0xffffff00; + shiftreg = show_bits(&g, 24); } - skip_bits(&g, 16); - y = show_bits_long(&g, 23) & 0x1fff; - skip_bits(&g, 8); + skip_bits(&g, 24); + y = show_bits(&g, 15) & 0x1fff; if (y >= height) break; type = get_bits(&g, 2); |