Skip to content

Reach the JBIG2 decoder through the fleet's codec registry - #28

Merged
tannevaled merged 1 commit into
mainfrom
jbig2
Aug 28, 2026
Merged

Reach the JBIG2 decoder through the fleet's codec registry#28
tannevaled merged 1 commit into
mainfrom
jbig2

Conversation

@tannevaled

@tannevaled tannevaled commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

#27 landed JBIG2 decoding and named the decoder here. go-gfx/gfx/codec — where the fleet keeps its image decoders — names the same one, for the JBIG2 file form. Two modules were choosing the same third-party decoder without either knowing about the other.

codec.DecodeEmbeddedJBIG2 (go-gfx/gfx v0.14.0, added in go-gfx/gfx#24) takes the headerless form a PDF embeds, so this module asks for a decoded picture and stops holding an opinion about who decodes it.

That matters more than usual for this decoder:

  • its resource limits are process-global rather than per-decode, so a library cannot raise them without changing them for everything else in the binary;
  • it publishes no tagged version — this module now depends on it only indirectly.

No pixel moves: same decoder, same inversion, same packed rows.

100% statement coverage, go vet and -race clean, nine cross-compile targets.

The JBIG2 decoder was named here, in the module that draws PDF pages. It is
also named in go-gfx/gfx/codec, which is where the fleet keeps its image
decoders and which reads the JBIG2 FILE form. Two modules were choosing the
same third-party decoder without either knowing about the other.

codec.DecodeEmbeddedJBIG2 (go-gfx/gfx v0.14.0) takes the headerless form a PDF
embeds, so this module asks for a decoded picture and stops holding an opinion
about who decodes it.

That matters more than usual for this decoder. Its resource limits are
process-global rather than per-decode, so a library cannot raise them without
changing them for everything else in the binary, and it publishes no tagged
version — this module now depends on it only indirectly. The day it is swapped
should be a change in one place, and now it is.

No pixel moves: same decoder, same inversion, same packed rows. The pages this
was measured on come out identical.

100% statement coverage, go vet and -race clean, nine cross-compile targets.
@tannevaled tannevaled changed the title Decode the JBIG2 that gives a scanned page's ink its shape Reach the JBIG2 decoder through the fleet's codec registry Aug 28, 2026
@tannevaled
tannevaled merged commit 0fa32f2 into main Aug 28, 2026
1 check passed
@tannevaled
tannevaled deleted the jbig2 branch August 28, 2026 19:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant