summaryrefslogtreecommitdiff
path: root/libavcodec/photocd.c
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-09-23 04:57:53 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-09-26 20:38:30 +0200
commita902c24994dea7cbdf84bff70ad8709958b1008d (patch)
tree684d7abbe66cc14d2acc91891a21c341fba3d236 /libavcodec/photocd.c
parentabebd87764992dc22c82802bdc75d40aac14ab86 (diff)
downloadffmpeg-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.c13
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);