Skip to main content

Module decoder

Module decoder 

Source
Expand description

Registry glue + minimal decode pipeline for the EVC crate.

Round-9 status: a working decoder for Baseline-profile bitstreams that satisfy:

  • 8-bit luma + chroma,
  • slice_deblocking_filter_flag = 0,
  • every CU has cbf_luma == cbf_cb == cbf_cr == 0 (pure intra/inter prediction with no residual; round-5 wires real residual decoding),
  • Inter MVs land on the Baseline 1/4-pel grid (sub-pel phases 4, 8, 12 for luma; 4, 8, 12, 16, 20, 24, 28 for chroma).

Round-9 lifts the round-4 single-reference constraint: an in-memory DPB keeps every previously-decoded short-term reference picture indexed by POC, and at each non-IDR slice the decoder builds the L0 / L1 lists by walking the slice’s ref_pic_list_struct() deltas (relative to slice_pic_order_cnt_lsb). Each inter CU’s RefIdxL0 / RefIdxL1 then resolves to the right DPB entry. Output ordering follows POC, not coding order.

Anything else (non-Baseline, 10-bit, deblocked, residuals present, sub-pel outside Baseline grid) bubbles up as Error::Unsupported. The decoder consumes length-prefixed NAL units (Annex B raw bitstream framing) per ISO/IEC 23094-1.

Structs§

EvcDecoder
Public-but-internal type that callers normally see via the Decoder trait. Wraps the per-stream parameter-set cache, the round-9 DPB and the POC-ordered output queue.

Functions§

make_decoder
Build the round-3 decoder for the registry.