vivid_protocol 1.1.0

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

Vivid Protocol

vivid_protocol is the shared wire implementation for the Vivid 1.1 terminal-media protocol. It is used by Vivi, Vivido, conformance tools, and protocol tracers without depending on a renderer.

The protocol selected by HELLO/WELCOME is 1.1 only. The 16-byte connection preface deliberately remains framing version 1.0, as required by the 1.1 specification.

The crate provides:

  • directional connection limits, ordered record framing, endpoint parsing, and the 64 MiB ceiling;
  • deterministic, bounded CBOR and typed 1.1 control-message schemas;
  • raw/zstd RGBA raster, straight or premultiplied alpha, and PNG/JPEG image bodies;
  • portable H.264/HEVC/VP9/AV1 access-unit validation and media sequence checking;
  • authenticated marker-v2 anchors using base64url and HMAC-SHA256.
[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>(())

Public modules:

  • wire — prefaces, records, directional limits, sequencing, and transports;
  • cbor — deterministic encoding and strict bounded decoding;
  • messages — the Vivid 1.1 registry and control schemas;
  • media — raster, image, and portable-video binary contracts;
  • anchor — token decoding, session-key derivation, and marker-v2 authentication.

License

Licensed under Apache-2.0.