FWC-1§2Normative

Terminology

Precise vocabulary. Later sections use these words with exactly these meanings.

TermDefinition
payloadThe original bytes the author wants delivered — for FWC-1 always UTF-8 text, in practice an HTML document.
bodyThe payload after optional compression and optional encryption. This is what the CRC covers and what the length field counts.
headerThe fixed 12-byte prefix described in §3.
containerheader ‖ body — the complete byte stream written into the carrier.
carrierThe RGBA pixel buffer of a square PNG image, together with a mapping rule (§4) that says which bits of which channels hold container bytes.
modeThe carrier mapping in use: noise or lsb.
capacityThe maximum body length a given image size and mode can hold, i.e. total carrier bytes minus 12.
coverIn lsb mode, the visible image whose two least-significant bits per channel are overwritten.
host pageThe tiny HTML document that references the favicon and embeds the loader (§8).
loaderThe dependency-free script in the host page that decodes the container and replaces the document.
encoder / decoderAny software that produces, respectively consumes, an FWC-1 PNG. The Studio and the loader are one encoder and one decoder among many possible.

Notation

  • a ‖ b denotes byte concatenation.
  • Multi-byte integers are big-endian (network byte order) unless stated otherwise.
  • Bit 0 is the least-significant bit. flags & 0b01 therefore tests bit 0.
  • Pixel data is addressed as the flat Uint8ClampedArray returned by getImageData: index i is channel i % 4 (0 = R, 1 = G, 2 = B, 3 = A) of pixel ⌊i / 4⌋, pixels in row-major order from the top-left.