compress.cafe
Hi, I’m cancername. This is my personal website. I program mainly in Zig and C, and I enjoy working with and learning more about multimedia.
Resources
Communities
Discord
Despite being proprietary, Discord is a great place to talk to like-minded people. Here are a few Discord communities – they will be focused on AV1, but you can have great conversations about anything multimedia there.
- AV1 for dummies. The official server for the codec wiki. Small and new. I’m active here.
- AV1 Community. The largest AV1 Discord community, but I find the atmosphere unpleasant.
- The AV1 EX dev hub. Split from AV1 Community, probably the second largest one.
- AV1 weeb edition. This is the community of the AV1 “unofficial content distribution” scene.
- JPEG XL is the inofficial Discord community for the JPEG XL image codec.
- Jaded Encoding Thaumaturgy (JET). Formerly known as Irrational Encoding Wizardry, JET focuses on appealing anime encoding.
- VapourSynth is the official Discord community for the VapourSynth programmatic video editor. It’s often used for filtering to remove artifacts.
- VVC is the Discord community for Versatile Video Coding.
- Av1an is the official Discord community for the Av1an encoding toolkit.
- AWCY is the Discord community for Are We Compressed Yet.
Wikis
- The codec wiki (info on many codec-related programs and standards)
- MultimediaWiki (not technically a wiki, since it’s read-only)
Blogs
- Kostya’s boring codec world (frequent posts on multimedia reversing)
- Breaking eggs and making omelettes (infrequent posts on multimedia reversing)
- Niklas Haas’ blog (very infrequent posts on multimedia)
Articles
Introductions
- A digital media primer for geeks, watch this to learn what digital media is!
- Digital show and tell (more in-depth on sampling)
- Introduction to video coding
AV1
General
- Falsehoods programmers believe about [video stuff]
- comp.compression FAQ [1] [2] [3]
Encoding
- Soichiro’s encoding guide describes a ton of stuff around encoding in useful ways.
- JET encoding guide
- The fansubbing guide gives you some background knowledge for encoding anime.
Resampling
- ImageWorsenser has many pages on resampling. They’re great!
- on the theory of the Spline16/36/64 resizers - Doom9’s Forum
- The Magic Kernel (no consensus on accuracy, but seems good)
Motion estimation
Color
- The hitchhiker’s guide to digital color gives a good overview of color.
- RGB/XYZ matrices tells you how to convert between any color space and CIE XYZ.
- Completely painless programmer’s guide to XYZ, RGB, ICC, xyY, and TRCs
- The luminance of an sRGB color, among other things, answers the question of “Why is there a Y channel in the xyY components of some primaries, but not others?”
- History of the very odd sRGB color space
- Cone fundamentals & the LMS color space
Neural compression and machine learning enhancement
Specific coding technologies
- Atkinson Dithering
- The constrained directional enhancement filter
- Linearly constrained generalized Lloyd algorithm for reduced codebook vector quantization describes an algorithm to do what S3TC does.
- Theora spec
- Notes on the implementation of trellis quantization in H.264
- Applying perceptual vector quantization outside of Daala
- Technical articles on the PNG file format and the related compression technologies
Blog entries
Projects
Zig Multimedia
Zig Multimedia is an attempt at creating a multimedia framework for Zig. It was mainly driven by my frustration with zigimg, a Zig image library, and FFmpeg. It’s very unfinished, but has decoders for Y4M, P[BGP]M, and QOI.
Core
There’s a kind of chicken-and-egg problem here, where you need to write code that uses Core to know what needs to be in it. The source code is still unreleased.
- 2024-04-14, colorspace improvements
Queue
A single-producer, single-consumer atomic queue in preparation for filtergraphs in Core. Source code is on Codeberg. It’s usable, but basic.
Cpuid
A Zig library to detect x86 CPU features in an ergonomic way. Source code is on Codeberg.
Simd
Some temporary inline asm replacements for intrinsics, or lack thereof.
File upload
You can upload to files.compress.cafe
. To do this, ask me for a key, then use the following
script:
expand
#! /bin/sh key='insert the key I gave you here' url="https://files.compress.cafe/upload?${key}" if test -z "${1}" then curl -X POST --data-binary '@-' "${url}" else if test -z "${1##*.}" then curl -X POST --data-binary "@${1}" "${url}" else curl -X POST -H "X-Extension: ${1##*.}" --data-binary "@${1}" "${url}" fi fi
(Is this cursed? Would love to hear some feedback.)