What the collection does
Mainstream formats usually optimize for storage, speed, or invisible loss. goopCodecs uses the codec as a practical instrument: the encode/decode process determines what kinds of damage can happen and what those errors look like.
The main operation is simple: import or generate a source image, encode it into the codec's native body, apply non-destructive damage or edit the bytes directly, then decode the altered file back into an image.
ooid
.ooidGaussian blobs → round loss
A still, colour-field, and video codec based on layered anisotropic Gaussian blobs. Images are stored as records for position, colour, size, orientation, and alpha, then composited in record order.
Corruption produces swelling blobs, relayering, fog, teleports, recolouring, and soft lesions. Video uses independent ooid frames in an OOIV container, so damage can stay frame-local or be pushed across boundaries.
Open the blob codec.
scute
.scuteVoronoi seeds → cellular loss
A Voronoi-cell image codec. The image is reconstructed from seed-defined territories: every output pixel belongs to its nearest encoded seed.
Corruption moves seeds, buckles borders, flares cell colours, and lets surviving territories annex space after truncation. Record order is intentionally not meaningful, so shuffle is not part of the format grammar.
Open the cell codec.
vermis
.vermisHilbert thread → flowing loss
A Hilbert-thread image codec. The image is sampled along a Hilbert curve as DPCM colour deltas, then repainted as one continuous filament instead of a square pixel grid.
Corruption accumulates downstream. A damaged delta becomes a travelling stain, bruise, or phase shift through the body of the worm.
Open the thread codec.