AI super-resolution as one POST. No inference service to stand up.
Send a clip to /v1/enhance. Every frame lands on the model's fixed 224×224 canvas and comes back at 672×672, upscaled 3× by ESPCN running in-graph inside FFmpeg 9's ONNX Runtime backend. $0.60 per minute of output rendered.
The fixed canvas
One pixel in becomes nine pixels out. Every artifact leaves at 672×672.
Each square stands for 28 pixels and is drawn the same size on both sides, so what changes between them is the count: 8 across becomes 24 across. The outlined cell on the left is the outlined block on the right. The exact 3× factor lives in ESPCN's trained sub-pixel convolution layer, not in a runtime flag, which is why the output resolution is fixed rather than negotiated. The two hairlines resolve at 672 and smear at 224. Resolution is the product.
One call back
curl -X POST https://api.wave.online/v1/enhance \ -H "Authorization: Bearer <key>" \ -F "file=@clip.mp4" \ -F "model=espcn" → 672×672 super-resolved video, billed per minute of output rendered
Before the model sees it
Aspect is preserved, never stretched. A 1280×720 frame fits to 224×126 and takes a 49px pad bar top and bottom.
FFmpeg 9's ONNX backend reads a concrete input shape out of this model and holds every frame to it, so v1 letterboxes first and upscales after. Native-resolution tiling needs an overlap-blend pass to keep seams out of the output, and that work is named as the next release rather than attempted quietly here.
The spec
WAVE is media infrastructure for the agentic internet: one call shape moves live and on-demand media across every transport, and both kinds of user, people and agents, discover it, call it, and pay for it per call.