Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
14 changes: 7 additions & 7 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ members = [
exclude = ["fuzz"]

[workspace.package]
version = "0.16.0"
version = "0.17.0"
edition = "2021"
license = "BSD-2-Clause"
repository = "https://github.com/remade-with-rust/rusty_h264"
Expand All @@ -48,9 +48,9 @@ wide = { version = "0.7", default-features = false }
# scalar oracle arm would be dead while every gate claimed to test it. Members
# that want defaults opt back IN (enabling is allowed; only disabling is
# ignored).
rusty_h264-common = { path = "crates/rusty_h264-common", version = "0.16.0", default-features = false }
rusty_h264-encoder = { path = "crates/rusty_h264-encoder", version = "0.16.0", default-features = false }
rusty_h264-decoder = { path = "crates/rusty_h264-decoder", version = "0.16.0", default-features = false }
rusty_h264-common = { path = "crates/rusty_h264-common", version = "0.17.0", default-features = false }
rusty_h264-encoder = { path = "crates/rusty_h264-encoder", version = "0.17.0", default-features = false }
rusty_h264-decoder = { path = "crates/rusty_h264-decoder", version = "0.17.0", default-features = false }

[profile.release]
opt-level = 3
Expand Down
20 changes: 20 additions & 0 deletions crates/rusty_h264-accel/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.17.0](https://github.com/Remade-With-Rust/rusty_h264/compare/rusty_h264-accel-v0.16.0...rusty_h264-accel-v0.17.0) - 2026-10-25

### Other

- overflow-checks cost 22.5% of decode β€” moved to release-checked
- audit pass 2 β€” 6% to 89% of in-scope gates, every unit >=85%
- close H-03/04/05/07/13/14/15/16/31/39 + threat model
- use-protection-please first pass β€” 41 gates x 8 units, depth=deep
- an intra record is one boolean, and the filter stops touching a TLS
- pack a uniform macroblock from one block, not sixteen
- one motion test per macroblock edge when both sides are uniform
2 changes: 1 addition & 1 deletion crates/rusty_h264-cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ path = "src/main.rs"
[dependencies]
# CLI default = asm. rusty_alloc comes from rusty_h264-common's default features
# (pulled transitively); keep common's defaults on when disabling facade asm.
rusty_h264 = { path = "../rusty_h264", version = "0.16.0", default-features = false, features = ["std", "global-alloc"] }
rusty_h264 = { path = "../rusty_h264", version = "0.17.0", default-features = false, features = ["std", "global-alloc"] }
rusty_h264-common = { workspace = true, features = ["std"] }


Expand Down
36 changes: 36 additions & 0 deletions crates/rusty_h264-common/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.17.0](https://github.com/Remade-With-Rust/rusty_h264/compare/rusty_h264-common-v0.16.0...rusty_h264-common-v0.17.0) - 2026-10-25

### Other

- bump rusty_alloc-api to =2.2.6 ([#19](https://github.com/Remade-With-Rust/rusty_h264/pull/19))
- bump rusty_alloc-api to =2.2.5 ([#17](https://github.com/Remade-With-Rust/rusty_h264/pull/17))
- 87% of every allocation was one Box::new that skipped its own pool
- narrow the motion grids to (i16,i16) - 2.90 GB of pool clear removed
- narrow the reference-index grids i32 -> i8 (-103 MB of memset)
- overflow-checks cost 22.5% of decode β€” moved to release-checked
- audit pass 2 β€” 6% to 89% of in-scope gates, every unit >=85%
- close H-03/04/05/07/13/14/15/16/31/39 + threat model
- use-protection-please first pass β€” 41 gates x 8 units, depth=deep
- put the 8x8-transform flag in the intra table, so the filter stops asking
- record one more refutation on the derivation's argument list
- move the derivation's output pointer into a register argument
- build the packed record where it lives (spills -72%)
- add a spill column to the row-hook census, and record what it settled
- outline the per-lane edge arms, now the minority case
- the filter keeps boundary strengths at byte width
- an intra record is one boolean, and the filter stops touching a TLS
- coded flags a word at a time, and a provable kind row
- pack a uniform macroblock from one block, not sixteen
- one motion test per macroblock edge when both sides are uniform
- take the uniformity answer from mb_kind instead of recomputing it
- fold the paired motion tests, share the edge nnz mask, split the hot prefix
- derive boundary strengths at u8, not i32 (-223 instrs on the decoder's derivation path)
2 changes: 1 addition & 1 deletion crates/rusty_h264-common/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ wide = { workspace = true }
bytemuck = "1"
# Optional openh264 asm kernels (deblock, …). The unsafe FFI is quarantined inside
# that crate; we call only its safe wrappers, so this crate stays forbid(unsafe).
rusty_h264-accel = { path = "../rusty_h264-accel", version = "0.16.0", optional = true }
rusty_h264-accel = { path = "../rusty_h264-accel", version = "0.17.0", optional = true }
# Our own allocator, installed process-wide. Declared HERE because every crate and
# every one of the 43 example/bench binaries links this crate, so one declaration
# covers all routes. See the hazard note in src/lib.rs before making this non-optional.
Expand Down
41 changes: 41 additions & 0 deletions crates/rusty_h264-decoder/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.17.0](https://github.com/Remade-With-Rust/rusty_h264/compare/rusty_h264-decoder-v0.16.0...rusty_h264-decoder-v0.17.0) - 2026-10-25

### Fixed

- the profile census compiles again, and the decoder builds no_std ([#20](https://github.com/Remade-With-Rust/rusty_h264/pull/20))

### Other

- 87% of every allocation was one Box::new that skipped its own pool
- the plane recycle pool was never fed - 4.34 GB of wasted zeroing
- narrow the motion grids to (i16,i16) - 2.90 GB of pool clear removed
- the List-1 grids are B-only, so stop clearing them without B (-36%)
- four more, from the encoder and the PPS-gated grids
- the mvd cache stores what the context can read, not what was parsed
- second pass of the copy hunt β€” the census's own two blind spots
- carry the POC lookup table, not its per-block expansion (-37 MB)
- narrow the reference-index grids i32 -> i8 (-103 MB of memset)
- overflow-checks cost 22.5% of decode β€” moved to release-checked
- audit pass 2 β€” 6% to 89% of in-scope gates, every unit >=85%
- close H-03/04/05/07/13/14/15/16/31/39 + threat model
- use-protection-please first pass β€” 41 gates x 8 units, depth=deep
- no production panic sites β€” 47 to 0 (H-18)
- put the 8x8-transform flag in the intra table, so the filter stops asking
- move the derivation's output pointer into a register argument
- build the packed record where it lives (spills -72%)
- mark single-partition B macroblocks uniform (mb_uniform now -86..-96%)
- coded flags a word at a time, and a provable kind row
- pack a uniform macroblock from one block, not sixteen
- mark the B classes whose motion the decoder already knows is uniform
- one motion test per macroblock edge when both sides are uniform
- take the uniformity answer from mb_kind instead of recomputing it
- derive boundary strengths at u8, not i32 (-223 instrs on the decoder's derivation path)
24 changes: 24 additions & 0 deletions crates/rusty_h264-encoder/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.17.0](https://github.com/Remade-With-Rust/rusty_h264/compare/rusty_h264-encoder-v0.16.0...rusty_h264-encoder-v0.17.0) - 2026-10-25

### Fixed

- the profile census compiles again, and the decoder builds no_std ([#20](https://github.com/Remade-With-Rust/rusty_h264/pull/20))

### Other

- narrow the motion grids to (i16,i16) - 2.90 GB of pool clear removed
- four more, from the encoder and the PPS-gated grids
- narrow the reference-index grids i32 -> i8 (-103 MB of memset)
- overflow-checks cost 22.5% of decode β€” moved to release-checked
- audit pass 2 β€” 6% to 89% of in-scope gates, every unit >=85%
- close H-03/04/05/07/13/14/15/16/31/39 + threat model
- use-protection-please first pass β€” 41 gates x 8 units, depth=deep
2 changes: 1 addition & 1 deletion crates/rusty_h264-encoder/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ rusty_h264-common = { workspace = true, default-features = false }
# Optional hand-tuned asm acceleration (openh264 BSD-2 kernels). The unsafe FFI is
# fully quarantined inside that crate; this crate calls only its safe wrappers, so
# it stays forbid(unsafe) even with `--features asm`.
rusty_h264-accel = { path = "../rusty_h264-accel", version = "0.16.0", optional = true }
rusty_h264-accel = { path = "../rusty_h264-accel", version = "0.17.0", optional = true }

[dev-dependencies]
# The decoder is our round-trip oracle: encoder tests decode their own output and
Expand Down
17 changes: 17 additions & 0 deletions crates/rusty_h264/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.17.0](https://github.com/Remade-With-Rust/rusty_h264/compare/rusty_h264-v0.16.0...rusty_h264-v0.17.0) - 2026-10-25

### Other

- overflow-checks cost 22.5% of decode β€” moved to release-checked
- audit pass 2 β€” 6% to 89% of in-scope gates, every unit >=85%
- close H-03/04/05/07/13/14/15/16/31/39 + threat model
- use-protection-please first pass β€” 41 gates x 8 units, depth=deep