How akirco/vt works
vt is a terminal media player whose main workflow parses CLI options, selects an output protocol, then loads an image or decodes video (including piped input) and renders frames in the terminal. Video playback also handles optional audio and timing; image loading can fall back to FFmpeg. The rendering layer dispatches to several terminal graphics encoders. The README documents an optional Ratatui image widget and optional sixel-rs backend; their paths are shown, but unsampled wiring is not expanded.
Main entry points: encoder.rs Encoder dispatch · video.rs Video input · player.rs Playback loop · main.rs CLI workflow
Components 22
Application entry
- CLI workflow
src/main.rs - Arguments
src/args.rs - Playback config
src/config.rs - Protocol selection
src/protocol.rs
Media playback
- Image loading
src/image.rs - Video input
src/video.rs - Video decoder
src/video.rs - Playback loop
src/player.rs - Audio playback
src/audio.rs
Terminal rendering
- Sizing and terminal
src/terminal.rs - Encoder dispatch
src/encoder.rs - Sixel encoder
src/sixel.rs - Kitty encoder
src/kitty.rs - HalfBlock encoder
src/halfblock.rs - Braille encoder
src/braille.rs - ASCII encoder
src/ascii.rs
Optional integrations
- Ratatui widget
src/ratatui.rs - Sixel-rs backend
src/sixel_rs.rs
Other components
- User / pipe
- Terminal
- Audio output
- FFmpeg
Connections 27
- User / pipe → CLI workflow: provides input
- CLI workflow → Arguments: parses options
- Arguments → Playback config: creates config
- CLI workflow → Protocol selection: selects protocol
- CLI workflow → Image loading: loads image
- CLI workflow → Video input: runs video
- Image loading → Video input: falls back
- Video input → FFmpeg: opens media
- Video input → Video decoder: creates decoder
- Video input → Sizing and terminal: fits dimensions
- Video input → Audio playback: initializes audio
- Video input → Playback loop: starts playback
- Playback loop → Video decoder: decodes packets
- Playback loop → Encoder dispatch: encodes frames
- Playback loop → Audio playback: sends samples
- Playback loop → Sizing and terminal: controls display
- Audio playback → Audio output: plays samples
- Encoder dispatch → Sixel encoder: dispatches Sixel
- Encoder dispatch → Kitty encoder: dispatches Kitty
- Encoder dispatch → HalfBlock encoder: dispatches HalfBlock
- Encoder dispatch → Braille encoder: dispatches Braille
- Encoder dispatch → ASCII encoder: dispatches ASCII
- Encoder dispatch → Terminal: writes render stream
- Playback loop → Terminal: writes playback
- Ratatui widget → Encoder dispatch: encodes widget image
- Ratatui widget → Terminal: writes widget output
- Encoder dispatch → Sixel-rs backend: optional backend