How dxur/vp-ate works
This repository combines a Rust VP8 keyframe decoder/debug executable with a SystemVerilog VP8-decoding design. The main Rust workflow reads an IVF file, selects its first keyframe, parses frame and macroblock data, reconstructs pixels, and emits a JSON debug record. The Rust decoder has distinct container, bitstream, frame, macroblock, prediction, and reconstruction stages. RTL paths indicate corresponding hardware functions, but the sampled source does not establish their wiring; those relationships are therefore omitted. The README is empty, and unsampled RTL implementation details are not inferred.
Main entry points: main.rs Debug executable · decode.rs Pixel reconstruction · macroblock.rs Macroblock decode · frame.rs Frame parser
Components 20
Rust Input Output
- IVF parser
src/container.rs - Debug executable
src/main.rs
Rust VP8 Decode
- Frame parser
src/frame.rs - Bit decoders
src/bit.rs - Macroblock decode
src/macroblock.rs - Pixel reconstruction
src/decode.rs - Intra prediction
src/prediction.rs - Codec tables
src/tables.rs - Transforms and color
src/util.rs
RTL Decode
- RTL top
rtl/vp_ate.sv - Frame buffer
rtl/frame_buffer.sv - Syntax parsing
rtl/syntax/frame.sv - Macroblock syntax
rtl/syntax/macroblock.sv - Token decoding
rtl/token_decoder.sv - Residue decoding
rtl/residue_decoder.sv - Boolean decoding
rtl/bool_decoder.sv - Prediction
rtl/predictor.sv - Inverse transform
rtl/idct4x4.sv - Ring buffer
rtl/ring_buffer.sv
Other components
- File provider
Connections 12
- File provider → Debug executable: supplies IVF path
- Debug executable → IVF parser: parses container
- Debug executable → Frame parser: parses keyframe
- Debug executable → Pixel reconstruction: decodes frame
- Debug executable → File provider: prints JSON
- Frame parser → Bit decoders: reads bitstream
- Frame parser → Macroblock decode: parses macroblocks
- Macroblock decode → Codec tables: uses probabilities
- Macroblock decode → Bit decoders: decodes tokens
- Pixel reconstruction → Macroblock decode: uses parsed blocks
- Pixel reconstruction → Intra prediction: predicts pixels
- Pixel reconstruction → Transforms and color: reconstructs pixels