pub struct SliceWalkStats {Show 16 fields
pub ctus: u32,
pub split_cu_flag_bins: u32,
pub coding_units: u32,
pub cbf_luma_bins: u32,
pub cbf_chroma_bins: u32,
pub cu_qp_delta_abs_bins: u32,
pub intra_pred_mode_bins: u32,
pub ibc_flag_bins: u32,
pub ibc_cus: u32,
pub ibc_abs_mvd_bins: u32,
pub ibc_mvd_sign_bins: u32,
pub coeff_runs: u32,
pub alf_ctb: AlfCtbStats,
pub end_of_tile_bits: u32,
pub tile_byte_alignments: u32,
pub hmvp_resets: u32,
}Expand description
Counters reported back to the caller after a successful walk. Each one is incremented every time the walker consumes the corresponding syntax element from the CABAC stream — handy for hand-built fixture tests.
Fields§
§ctus: u32Coding-tree units actually visited.
split_cu_flag_bins: u32split_cu_flag bins decoded (one per non-leaf split point).
coding_units: u32coding_unit() invocations (luma + chroma trees combined for an
I slice in dual-tree mode).
cbf_luma_bins: u32cbf_luma bins decoded.
cbf_chroma_bins: u32cbf_cb + cbf_cr bins decoded.
cu_qp_delta_abs_bins: u32cu_qp_delta_abs bins decoded (per CU when enabled).
intra_pred_mode_bins: u32intra_pred_mode bins decoded (per luma CU under sps_eipd=0).
ibc_flag_bins: u32ibc_flag regular bins decoded per §7.3.8.4 line 2845 (gated on
the round-90 isIbcAllowed predicate). One per IBC-eligible CU.
ibc_cus: u32Coding units that resolved CuPredMode == MODE_IBC after
ibc_flag = 1. Disjoint from the intra count tracked via
intra_pred_mode_bins.
ibc_abs_mvd_bins: u32abs_mvd_l0[0/1] EG-0 bypass invocations consumed by the IBC
coding_unit() branch (two per IBC CU — x and y components).
ibc_mvd_sign_bins: u32mvd_l0_sign_flag bypass bits consumed by the IBC coding_unit()
branch (one per non-zero abs_mvd component).
coeff_runs: u32Total coefficient runs consumed via residual_coding_rle().
alf_ctb: AlfCtbStatsPer-CTU alf_ctb_* map bins from coding_tree_unit()
(§7.3.8.2). Zero unless the slice signals an ALF applicability
map (slice_alf_map_flag for luma, etc.).
end_of_tile_bits: u32end_of_tile_one_bit terminate decisions consumed (§7.3.8.1).
One per tile in the slice walk — 1 for a single-tile slice,
NumTilesInSlice for a multi-tile slice.
tile_byte_alignments: u32byte_alignment() invocations between tiles (§7.3.8.1). Equal to
NumTilesInSlice − 1 (zero for a single-tile slice): the
alignment follows every non-final tile’s end_of_tile_one_bit.
hmvp_resets: u32NumHmvpCand = 0 resets performed in coding_tree_unit()
(§7.3.8.2 lines 2624-2625). The reset fires for every CTB whose
luma-sample column equals its tile’s first-CTB column
(xCtb == xFirstCtb) — i.e. the leftmost CTB of each CTB row
within each tile — clearing the history-based MV predictor list at
the start of every new row so HMVP candidates never cross a row (or
tile) boundary. One reset per CTB row per tile; for a single-tile
slice this equals PicHeightInCtbsY.
Trait Implementations§
Source§impl Clone for SliceWalkStats
impl Clone for SliceWalkStats
Source§fn clone(&self) -> SliceWalkStats
fn clone(&self) -> SliceWalkStats
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for SliceWalkStats
Source§impl Debug for SliceWalkStats
impl Debug for SliceWalkStats
Source§impl Default for SliceWalkStats
impl Default for SliceWalkStats
Source§fn default() -> SliceWalkStats
fn default() -> SliceWalkStats
impl Eq for SliceWalkStats
Source§impl PartialEq for SliceWalkStats
impl PartialEq for SliceWalkStats
Source§fn eq(&self, other: &SliceWalkStats) -> bool
fn eq(&self, other: &SliceWalkStats) -> bool
self and other values to be equal, and is used by ==.