vivid_protocol 0.1.0

Wire types and deterministic codecs for the Vivid terminal media protocol
Documentation

Vivid Protocol

Vivid Protocol provides the shared wire-format implementation for the Vivid terminal media protocol. It is intended for terminal presenters, media producers, conformance tools, and protocol tracers that need to exchange Vivid records without depending on a renderer or terminal emulator.

The crate currently provides:

  • Vivid connection prefaces, record headers, ordered framing, endpoint parsing, and limits;
  • deterministic CBOR encoding with strict bounded decoding;
  • the Vivid 1.0 opcode, feature, error, and configuration registries;
  • control-message encoders and parsers;
  • full-frame RGBA raster and encoded-video packet layouts.
[dependencies]
vivid_protocol = "0.1"
use vivid_protocol::wire::{ConnectionKind, Preface, encode_preface};

let bytes = encode_preface(ConnectionKind::Control, 1024 * 1024);
let preface = Preface::decode(bytes)?;
assert_eq!(preface.kind, ConnectionKind::Control);
# Ok::<(), std::io::Error>(())

The public modules are organized by protocol plane:

  • wire — connections, prefaces, headers, sequencing, and record framing;
  • cbor — deterministic control-value encoding and bounded decoding;
  • messages — numeric registries plus control-message schemas;
  • media — raster-frame and video-packet binary layouts.

The crate follows the Vivid protocol version exposed by PROTOCOL_MAJOR and PROTOCOL_MINOR. Before Vivid 1.0 stabilizes, 0.x releases may make breaking API or wire-profile corrections.

License

Licensed under Apache-2.0.