Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
0b19f27
encoder: keep matrix words in Int32Array
shreeve Sep 18, 2026
2d1e1b7
encoder: roll the N3 window down each stripe
shreeve Sep 18, 2026
dbfc610
encoder: mask predicates from a 72-entry table
shreeve Sep 18, 2026
85081b3
encoder: build only the shorter SVG move command
shreeve Sep 18, 2026
f191066
encoder: copy GIF spans with a byte loop
shreeve Sep 18, 2026
8c52886
decoder: create payload views on first use
shreeve Sep 18, 2026
5829702
decoder: keep bitmap words in Int32Array
shreeve Sep 18, 2026
d98a39b
decoder: walk finder runs straight off the packed row
shreeve Sep 18, 2026
70764cc
decoder: binarize eight pixels a row with word-wise compares
shreeve Sep 18, 2026
1d81df7
decoder: convert luma and build the pyramid a word at a time
shreeve Sep 18, 2026
6f3df09
decoder: settle intact blocks with the encoder's LFSR remainder
shreeve Sep 18, 2026
5456466
dom: wait for a decoded frame before constructing a VideoFrame
shreeve Sep 18, 2026
b654ecf
dom: skip frame capture while an async decode reads the arena
shreeve Sep 18, 2026
1cdda65
dom: mute the player through the property as well
shreeve Sep 18, 2026
f42824d
decoder: walk vertical runs down the column without bit()
shreeve Sep 18, 2026
aefa25b
decoder: leave cross() as soon as a run cannot pass ratio()
shreeve Sep 18, 2026
0ddf95d
decoder: test finder ratios on integer bounds
shreeve Sep 18, 2026
143595b
decoder: keep the current bitmap word resident across finder runs
shreeve Sep 18, 2026
ae70226
decoder: sample the module grid without per-module calls
shreeve Sep 18, 2026
af8a66b
decoder: walk codewords with packed column masks and whole-byte stores
shreeve Sep 18, 2026
f587166
decoder: read payload fields through a three-byte window
shreeve Sep 18, 2026
e05175e
encoder: run the Reed-Solomon remainder four coefficients a word
shreeve Sep 18, 2026
b5bdc58
decoder: fold the Reed-Solomon remainder four coefficients at a time
shreeve Sep 18, 2026
8b01495
decoder: derive syndromes from the remainder register
shreeve Sep 18, 2026
bd31694
encoder: cache SVG path commands per output width
shreeve Sep 18, 2026
8c4b733
encoder: emit four ASCII glyphs per concatenation
shreeve Sep 18, 2026
056e097
encoder: copy GIF pixel rows whole, then spread them into LZW chunks
shreeve Sep 18, 2026
2e86b2a
encoder: validate numeric and alphanumeric text through the value table
shreeve Sep 18, 2026
2197c0b
encoder: fill raw rows from the packed words
shreeve Sep 18, 2026
3e956fd
encoder: place data bits two at a time
shreeve Sep 18, 2026
d3f57b7
decoder: wipe each luma arena once in clean()
shreeve Sep 18, 2026
80bc6c3
decoder: slide the 5x5 threshold smoother along each block row
shreeve Sep 18, 2026
34be497
decoder: fold three-byte RGB input a word at a time
shreeve Sep 18, 2026
d3a5667
decoder: grow finder records on demand
shreeve Sep 18, 2026
16c02b1
decoder: size version scratch to the symbol actually attempted
shreeve Sep 18, 2026
023913d
decoder: opt-in nativeLimit skips the full-resolution finder search
shreeve Sep 18, 2026
4b86f34
changelog: note the decoder, encoder and DOM changes
shreeve Sep 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Changelog for qr

## Unreleased

- Decoder: 3-5x faster on small symbols and 1.5-2x on camera frames with identical results: word-wise luma conversion, pyramid and binarizer, finder runs walked straight off the packed row with exact early-outs, call-free grid sampling, packed codeword extraction, Reed-Solomon over packed words with syndromes taken from the remainder, and per-call arenas sized to the symbol instead of Version 40
- Decoder: opt-in `nativeLimit` (and `nativeEvery` in `QRCanvas`) skips the full-resolution finder search on large camera frames
- Encoder: byte-identical output 10-30% faster for `raw`, `ascii`, `gif` and `data-url`, up to 3x for `svg`
- DOM: fix the native VideoFrame path being disabled for a stream started before its first frame; do not overwrite the luma arena while an async decode reads it; mute through the property for mobile autoplay

## 0.7.0 (2026-08-31)

- Decoder: new architecture, focusing on camera latency. 2x more accurate than previous version on BoofCV
Expand Down
Loading