aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authoryzrh <yzrh@noema.org>2022-12-31 21:17:28 +0000
committeryzrh <yzrh@noema.org>2022-12-31 21:17:28 +0000
commitbffb8ce8a4f21f3e20513e7f76a949acb190e14a (patch)
tree8d34d688ebc4f703699e2bb2b9165ed442faf48f /src
parent3ac51d66b9e7b7169c99676f39e7dab457f6b979 (diff)
downloadmelon-bffb8ce8a4f21f3e20513e7f76a949acb190e14a.tar.gz
melon-bffb8ce8a4f21f3e20513e7f76a949acb190e14a.tar.zst
Fix JBIG decoder.
Signed-off-by: yzrh <yzrh@noema.org>
Diffstat (limited to 'src')
-rw-r--r--src/jbig.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/jbig.c b/src/jbig.c
index 37afb50..c3c501b 100644
--- a/src/jbig.c
+++ b/src/jbig.c
@@ -209,6 +209,17 @@ _procline(int line, char *a, char *b, char *c)
/* The encoder must be erroneous */
uint16_t cx = 0;
+ if (line > 0) {
+ cx += (_ret[_width_padded * (_height - line)] & 0x20) << 2;
+ cx += _ret[_width_padded * (_height - line)] & 0x40;
+ cx += (_ret[_width_padded * (_height - line)] & 0x80) >> 2;
+ }
+
+ if (line > 1) {
+ cx += (_ret[_width_padded * (_height - line + 1)] & 0x40) >> 4;
+ cx += (_ret[_width_padded * (_height - line + 1)] & 0x80) >> 6;
+ }
+
for (int i = 0; i < _width; i++) {
_decode(cx);