Repository navigation
Releases
Releases · Remade-With-Rust/rusty_h264
rusty_h264-v0.17.2
Other
- decoder speed against 0.17.1 in the READMEs
rusty_h264-v0.17.1
Other
- encoder speed against 0.17.0 -- all three presets, CPU time and Ir
rusty_h264-encoder-v0.17.2
Other
- encoder speed against 0.17.0 -- all three presets, CPU time and Ir
- drop needless borrows in the B drivers (clippy -D warnings)
- release the plane pools when an encode finishes
- Merge origin/main (v0.17.0, decoder fixes #24-#26) into perf/encoder-ir-veins
- enc V15-3: mb-tree intra cost from the SATD and SAD kernels
- accel V15-2: exact SSD kernels; mb_ssd (the RD trials' distortion) uses them
- enc V15-1: the frame probes' 16x16 SAD runs on the accel kernel
- enc V14-2: the trial rate model walks nonzero levels only
- enc V14-1: the RD snapshot (MbState) as fixed arrays
- enc V13-3: half-pel planes rebuilt into a retired picture's planes
- enc V13-2: reconstruction planes recycled from retired pictures, not re-zeroed
- enc V9-3: significance map coded from the bitmask, split at the last coefficient
- enc V9-2: residual levels visit only the nonzero positions
- enc V9-1: residual blocks build a nonzero bitmask once (popcnt + lzcnt)
- enc V5-3: CABAC writes four bytes per slow-path entry; carries ripple back
- enc V5-2: one packed byte per CABAC context; slow path as a tail call
- enc V5-1: byte-wise CABAC interval coder (x264 low/queue form)
- enc V3-3: lam_r is resolved once per motion search, not per evaluation
- enc V3-2: one bounds-free table for every mvbits cost kind
- enc V3-1: mc_sad prices every interior shape through the SAD kernels
- enc V2-3: macroblock variance moments from an SSE2/NEON kernel
- enc V2-2: the me_wide coherence probe abandons losing shifts too
- enc V2-1: the B-decision global-motion search abandons losing shifts
- enc V1-3: the B bi-average runs pavgb at the implicit weights' midpoint
- enc V1-2: a spatial-direct MB with uniform motion is one 16x16 MC per list
- enc V1-1: spatial direct does one MC per 8x8 quadrant, not per 4x4
- enc V7-3: SatdGrid -- the rescue grid computes kernel values a row at a time
- enc V7-2: separable rate tables for the rescue grid
- enc V7-1: the me_wide rescue grid batches every P partition shape
- enc V6-3: a fused pavgb+psadbw kernel for the quarter-pel SAD
- enc V6-2: the 16x16 SAD reads the source plane in place
- enc V6-1: an 8x8 SAD kernel arm for sad_strided
- enc V11-3: the B 16x16 arm takes the drivers' mvd predictors
- enc V11-2: b_direct takes the neighbour sets the B drivers already built
- enc V11-1: the B_Direct arm reuses the driver's direct prediction
- enc V12-3: one RFF_POLYTIER read per frame, cached RFF_ME_COH_DBG
- enc V12-2: resolve the four B-slice env overrides once per process
- enc V12-1: cache the UNSET RFF_SUBPEL_PAT, not just the set one
rusty_h264-encoder-v0.17.1
Other
- encoder speed against 0.17.0 -- all three presets, CPU time and Ir
- drop needless borrows in the B drivers (clippy -D warnings)
- release the plane pools when an encode finishes
- Merge origin/main (v0.17.0, decoder fixes #24-#26) into perf/encoder-ir-veins
- enc V15-3: mb-tree intra cost from the SATD and SAD kernels
- accel V15-2: exact SSD kernels; mb_ssd (the RD trials' distortion) uses them
- enc V15-1: the frame probes' 16x16 SAD runs on the accel kernel
- enc V14-2: the trial rate model walks nonzero levels only
- enc V14-1: the RD snapshot (MbState) as fixed arrays
- enc V13-3: half-pel planes rebuilt into a retired picture's planes
- enc V13-2: reconstruction planes recycled from retired pictures, not re-zeroed
- enc V9-3: significance map coded from the bitmask, split at the last coefficient
- enc V9-2: residual levels visit only the nonzero positions
- enc V9-1: residual blocks build a nonzero bitmask once (popcnt + lzcnt)
- enc V5-3: CABAC writes four bytes per slow-path entry; carries ripple back
- enc V5-2: one packed byte per CABAC context; slow path as a tail call
- enc V5-1: byte-wise CABAC interval coder (x264 low/queue form)
- enc V3-3: lam_r is resolved once per motion search, not per evaluation
- enc V3-2: one bounds-free table for every mvbits cost kind
- enc V3-1: mc_sad prices every interior shape through the SAD kernels
- enc V2-3: macroblock variance moments from an SSE2/NEON kernel
- enc V2-2: the me_wide coherence probe abandons losing shifts too
- enc V2-1: the B-decision global-motion search abandons losing shifts
- enc V1-3: the B bi-average runs pavgb at the implicit weights' midpoint
- enc V1-2: a spatial-direct MB with uniform motion is one 16x16 MC per list
- enc V1-1: spatial direct does one MC per 8x8 quadrant, not per 4x4
- enc V7-3: SatdGrid -- the rescue grid computes kernel values a row at a time
- enc V7-2: separable rate tables for the rescue grid
- enc V7-1: the me_wide rescue grid batches every P partition shape
- enc V6-3: a fused pavgb+psadbw kernel for the quarter-pel SAD
- enc V6-2: the 16x16 SAD reads the source plane in place
- enc V6-1: an 8x8 SAD kernel arm for sad_strided
- enc V11-3: the B 16x16 arm takes the drivers' mvd predictors
- enc V11-2: b_direct takes the neighbour sets the B drivers already built
- enc V11-1: the B_Direct arm reuses the driver's direct prediction
- enc V12-3: one RFF_POLYTIER read per frame, cached RFF_ME_COH_DBG
- enc V12-2: resolve the four B-slice env overrides once per process
- enc V12-1: cache the UNSET RFF_SUBPEL_PAT, not just the set one
rusty_h264-decoder-v0.17.2
Other
- decoder speed against 0.17.1 in the READMEs
- (decoder) 44 byte-identical instruction-count wins across 15 veins
rusty_h264-decoder-v0.17.1
Fixed
- the profile census compiles again, and the decoder builds no_std (#20)
Other
- Merge remote-tracking branch 'origin/main' into fix16
- gate the field-picture refusal too (#16)
- Decode frame pictures of streams that permit field coding
- 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)
rusty_h264-common-v0.17.2
Other
- (common) keep the 8x8 reconstruct oracle light under Miri
- (decoder) 44 byte-identical instruction-count wins across 15 veins
rusty_h264-common-v0.17.1
Other
- nz_map without expect() (the crate's clippy policy)
- Merge origin/main (v0.17.0, decoder fixes #24-#26) into perf/encoder-ir-veins
- common V14-3: CAVLC block scan over the nonzero map (the intra trial's rate)
- enc V13-3: half-pel planes rebuilt into a retired picture's planes
- common V13-1: MC edge windows -- constant-width rows, no zero-length fills
- common V4-3: mc_chroma builds an edge tile row-wise
- common V4-2: luma_tile_into builds an edge halo row-wise
- common V4-1: mc_luma's edge full-pel copy is row-wise, not per-pixel
- common V8-3: interior sub-pel luma MC runs on the reference in place
- common V8-2: const-width full-pel luma copies for every partition width
- common V8-1: interior sub-pel chroma MC reads the reference in place
rusty_h264-accel-v0.17.2
Other
- (decoder) 44 byte-identical instruction-count wins across 15 veins
rusty_h264-accel-v0.17.1
Other
- Merge origin/main (v0.17.0, decoder fixes #24-#26) into perf/encoder-ir-veins
- accel V15-2: exact SSD kernels; mb_ssd (the RD trials' distortion) uses them
- accel V10-3: band Hadamard's last stage as 2*max (exact half-sums)
- accel V10-2: band SATD carries one accumulator and halves once
- accel V10-1: single-block SIMD 4x4 SATD (was scalar)
- enc V2-3: macroblock variance moments from an SSE2/NEON kernel
- enc V7-3: SatdGrid -- the rescue grid computes kernel values a row at a time
- enc V6-3: a fused pavgb+psadbw kernel for the quarter-pel SAD
- enc V6-1: an 8x8 SAD kernel arm for sad_strided