Skip to content

Releases

rusty_h264-v0.17.2

Choose a tag to compare

@github-actions github-actions released this 09 Nov 02:02
995fe06

Other

  • decoder speed against 0.17.1 in the READMEs

rusty_h264-v0.17.1

Choose a tag to compare

@github-actions github-actions released this 09 Nov 01:14
ffe8341

Other

  • encoder speed against 0.17.0 -- all three presets, CPU time and Ir

rusty_h264-encoder-v0.17.2

Choose a tag to compare

@github-actions github-actions released this 09 Nov 02:02
995fe06

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

Choose a tag to compare

@github-actions github-actions released this 09 Nov 01:14
ffe8341

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

Choose a tag to compare

@github-actions github-actions released this 09 Nov 02:02
995fe06

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

Choose a tag to compare

@github-actions github-actions released this 09 Nov 01:14
ffe8341

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

Choose a tag to compare

@github-actions github-actions released this 09 Nov 02:01
995fe06

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

Choose a tag to compare

@github-actions github-actions released this 09 Nov 01:14
ffe8341

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

Choose a tag to compare

@github-actions github-actions released this 09 Nov 02:01
995fe06

Other

  • (decoder) 44 byte-identical instruction-count wins across 15 veins

rusty_h264-accel-v0.17.1

Choose a tag to compare

@github-actions github-actions released this 09 Nov 01:13
ffe8341

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