Skip to content

cargo: bump rusty_h264 from 0.12.0 to 0.15.0 - #465

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/cargo/rusty_h264-0.15.0
Open

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/cargo/rusty_h264-0.15.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Sep 9, 2026

Copy link
Copy Markdown
Contributor

Bumps rusty_h264 from 0.12.0 to 0.15.0.

Changelog

Sourced from rusty_h264's changelog.

[0.15.0] - 2026-09-05

A decoder speed release. Every change is byte-identical: the 68-stream ffmpeg identity gate and the x264 corpus hash gate pass on every commit, and each round landed behind a pinned CPU-time ABBA clock. No public signature moved except the removals listed below.

Changed — decoder speed (rusty_h264-decoder, rusty_h264-common, rusty_h264-accel)

  • Entropy decode. The CAVLC residual decoder was reshaped (ten instruction cuts), the CABAC engine is register-resident, the CABAC residual parser is one call per macroblock over a significance bitmask with bypass-coded signs, and the significance map walks a reversed bitmask with tzcnt/blsr. The CAVLC syntax layer parses straight into the pooled per-macroblock job with an N-generic residual output (cavlc::decode_residual_block_into). Clocked per round on the dense CABAC stream: +5% CAVLC, +10-11% CABAC bins.
  • SIMD reachability. A post-LTO census of the whole decode binary found ten functions still running scalar behind a kernel that existed: the 4×4 IDCT+add, 4-wide and 2-wide motion compensation, intra 4×4 prediction, the chroma MC rounding, and two kernels with no caller. All are now reached (accel::idct4x4_add, w4_via_w8 composition, mc_chroma_w4 for the 2-wide case, an intra 4×4 rewrite on an edge run). The batched multi-block IDCT that the first fix introduced measured as a loss (its gather/scatter was scalar) and was replaced by the per-block kernel.
  • Kernel round. Ten instruction cuts inside the kernels themselves: pmulhrsw rounding in luma and chroma MC, pmaddubsw chroma MC with row reuse, pabsw/pblendvb in the deblock filter, register-resident vertical-edge filtering through an in-register 8×8 transpose, and the in-register 4×4 IDCT transpose.
  • Routing round. Ten reroutes of content gates, priced with a scatter cost model (37 + 6·L + 9·nnz vs a flat ~60 for the dense AVX2 dequant): the nnz <= 6 sparse-dequant gate had routed the wrong way, so every coded block now takes the dense dequant; I16 and chroma reconstruction take coded masks from the parse side; intra 4×4 availability is a z-order table; the intra boundary-strength table is a constant. Clock vs the entropy rounds: crowd CABAC +7.4% (13/13, z=3.61), all-intra +2.4%, shields CAVLC +6.9%.
  • Dense-over-scatter round. A fused scan-order dequant + IDCT + add kernel (accel::idct4x4_deq_add) on every 4×4 route, driven by a precomputed transform::DequantQp (flat and weighted) and predict::reconstruct_4x4_scan_into; a fused I16 luma DC path (accel::luma_dc_from_scan); prebuilt 8×8 dequant constants (Dequant8Qp, DQ8_FLAT); the nnz raster as lane shuffles (nnz_raster_from_z). The 42-instruction dequantize pass and the scan/scatter helpers have no caller left on the decode path (they stay exported). Clock on top of the routing round: crowd +1.8% (11/13), all-intra +1.1%.
  • The decoder's static text shrank from 174,748 to 169,427 instructions across the last two rounds (post-LTO census of the decode binary).

Added

... (truncated)

Commits
  • 425d76c release: 0.15.0
  • e95024b Merge origin/main (0.14.0: no_std common/decoder, chip API, legacy-knob const...
  • 7b9c10c docs: dense-over-scatter round — ten wins, dequant pass retired, clocks
  • 02fd997 codec: dense-over-scatter round E — fused I16 luma DC, prebuilt 8x8 dequant c...
  • 1fca392 docs: routing round clock — +9.0% vs kernel round, +7.4%/+2.4%/+6.9% vs round...
  • df7c91c codec: dense-over-scatter round D — fused scan-order dequant+IDCT+add kernel ...
  • a667159 docs: routing round — ten reroutes with the DQROUTE model
  • 2ec4652 codec: routing round C — all coded blocks take the dense dequant, AVX2 twin o...
  • 9bd44c0 codec: routing round B — coded-mask routes, parse-side chroma counts, z-order...
  • 63523a2 codec: routing round A — build-time routing for env knobs, stats taps out of ...
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [rusty_h264](https://github.com/remade-with-rust/rusty_h264) from 0.12.0 to 0.15.0.
- [Changelog](https://github.com/Remade-With-Rust/rusty_h264/blob/main/CHANGELOG.md)
- [Commits](Remade-With-Rust/rusty_h264@v0.12.0...v0.15.0)

---
updated-dependencies:
- dependency-name: rusty_h264
  dependency-version: 0.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file rust Pull requests that update rust code labels Sep 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file rust Pull requests that update rust code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants