Bilinear, bicubic, Lanczos: video scaling filters explained
Lanczos vs bicubic vs bilinear: how do video scaling algorithms work? Compare sharpness, ringing, blur, EWA Lanczos, and how MacLC renders them in Metal.
In short
- Bilinear scaling is computationally fast but causes noticeable edge blur on high-density Mac displays.
- Bicubic filters like Mitchell-Netravali provide a balanced compromise between sharpness and ringing artifacts.
- Lanczos preserves high-frequency detail up to the Nyquist limit, but can create faint ringing halos around sharp contrast lines.
- EWA Lanczos (Jinc) applies a true 2D circular filter, eliminating the axis-aligned distortion of standard separable scalers.
- MacLC decodes in hardware and lets you choose the scaling filter its Metal renderer uses, in Settings › HDR & Colour.
On this page
- What is the fundamental trade-off in video scaling?
- How does bilinear scaling work?
- How does bicubic scaling balance blur and ringing?
- How does Lanczos scaling maximize high-frequency detail?
- What is EWA Lanczos (Jinc scaling)?
- Why does downscaling require different care?
- Which scaling filter should you choose?
When choosing between Lanczos and bicubic video scaling, Lanczos delivers noticeably sharper edges and preserves finer detail, while bicubic produces a smoother image with significantly less ringing artifact halos. Bilinear is the fastest option of the three, but its basic linear blending creates a blurry picture on modern high-resolution Mac displays.
Every time a 720p or 1080p video fills a 4K monitor or a MacBook Pro Liquid Retina XDR screen, your video player’s rendering engine must calculate millions of new pixels. The mathematical algorithm handling this interpolation governs the sharpness of actors’ hair, the clarity of hard text edges, and the presence of unwanted visual artifacts. Understanding the trade-offs between blur, ringing, and aliasing reveals which filter matches your viewing preferences.
What is the fundamental trade-off in video scaling?
In classical digital signal processing, perfect image scaling is mathematically impossible when resizing a discrete grid of pixels. Every scaling algorithm must navigate a three-way compromise defined by libplacebo filter architecture:
- Blur: A filter that blends too many neighboring pixels together softens the image, erasing fine textures, film grain, and crisp outlines.
- Ringing (The Gibbs Phenomenon): A filter designed to preserve extreme edge sharpness creates phantom light and dark ripples—known as ringing halos—along high-contrast borders, such as dark hair against a bright sky.
- Aliasing (Jaggies): A filter that samples too few pixels creates staircase-like jagged diagonal lines and moiré interference patterns.
A video scaling filter’s quality is determined by its mathematical kernel—the formula it uses to sample surrounding pixels and assign them weighted values.
Try it
Video resolutions to scale, with Mac screens on top
How does bilinear scaling work?
Bilinear interpolation is the baseline scaling method used across computer graphics:
- Kernel Size: Samples a 2 × 2 grid of four adjacent pixels.
- The Mathematics: It calculates a linear weighted average along the horizontal X-axis, followed by a linear weighted average along the vertical Y-axis.
- Visual Characteristics: Bilinear scaling never produces ringing artifacts because it cannot generate values higher or lower than its four sample points. However, linear weighting discards high-frequency spatial frequencies, making 1080p content look muddy and soft when stretched across a 4K screen.
- Best Use Case: Low-power mobile devices and battery-saving modes where GPU computational overhead must be kept to an absolute minimum.
How does bicubic scaling balance blur and ringing?
Bicubic interpolation improves upon bilinear by sampling a 4 × 4 grid of 16 surrounding pixels using third-order cubic polynomial splines.
The shape of a bicubic curve is determined by two mathematical coefficients, B (spline) and C (ringing/blur), standardized in the landmark 1988 ACM SIGGRAPH paper by Don P. Mitchell and Arun N. Netravali.
The Mitchell-Netravali formula defines the filter weight across a two-pixel radius using cubic polynomials governed by B and C. Within one pixel of the center, the curve blends cubic and quadratic terms to maintain smooth continuity; between one and two pixels out, it tapers to zero.
By adjusting these two parameters, developers create distinct bicubic profiles:
| Bicubic Variant | Parameters | Visual Characteristics |
|---|---|---|
| Mitchell-Netravali | B = 1/3, C = 1/3 | A widely used standard for general video. Perceptually balanced between sharpness and halo ringing. |
| Catmull-Rom | B = 0, C = 0.5 | Sharp, crisp edges with slightly higher ringing along high-contrast borders. |
| B-Spline | B = 1, C = 0 | Extremely smooth with zero ringing, but produces a very soft, blurry image. |
| Hermite | B = 0, C = 0 | Moderate sharpness, smooth gradients, low computational overhead. |
Mitchell-Netravali is widely favored for animated content and vintage film because it smooths compression noise without creating distracting halos around characters.
How does Lanczos scaling maximize high-frequency detail?
Lanczos scaling is named after mathematician Cornelius Lanczos. It uses a windowed sinc mathematical function to reconstruct continuous signals:
- Kernel Size: Samples a 6 × 6 grid of 36 surrounding pixels (Lanczos3, where radius a = 3).
- The Sinc Function: A sinc function, sin(πx) ÷ (πx), is the theoretically ideal low-pass filter in signal processing. Because a true sinc function extends to infinity, Lanczos multiplies the sinc curve by a secondary windowing sinc function to taper it cleanly to zero at radius a.
- The Lanczos kernel multiplies sinc(x) by sinc(x ÷ a) when x is between −a and a, and drops to zero everywhere else.
- Visual Characteristics: Lanczos preserves spatial detail right up to the theoretical Nyquist frequency limit of the video. Eye reflections, distant foliage, and hair strands appear crisp and distinct. However, its negative lobes can cause noticeable ringing halos around dark lines on bright backgrounds.
Bicubic samples a 4 × 4 grid of 16 neighboring pixels, keeping ringing low while offering moderate reach. Lanczos3 samples a wider 6 × 6 grid of 36 pixels, maximizing sharpness at the cost of potential edge halos.
What is EWA Lanczos (Jinc scaling)?
Advanced media players like mpv (via vo=gpu-next) frequently recommend a filter called ewa_lanczos.
Standard Lanczos is a separable filter: it runs a 1D filter horizontally across rows, then runs another 1D filter vertically down columns. Because pixels are processed along straight axes, circular objects can develop faint diamond-shaped distortion artifacts.
Elliptically Weighted Average (EWA) Lanczos—often referred to as Jinc scaling—replaces separable 1D passes with a true 2D circular Bessel function, J₁(πr) ÷ (πr). It evaluates pixel distance radially from the center point in all 360 degrees equally. This produces clean diagonal lines and organic textures, making it widely regarded as the highest-quality classical video scaler available.
Why does downscaling require different care?
Most discussions focus on upscaling, but downscaling—shrinking a 4K video to fit a 1080p laptop window or a standard HD monitor—presents visual challenges:
- The Aliasing Threat: When a 4K frame (8.29 million pixels) is crammed into a 1080p display (2.07 million pixels), three out of every four pixels must be discarded. If a scaler samples points too narrowly, fine patterns—like pin-striped suits, chain fences, or brick walls—will strobe and flicker visibly during movement (moiré effect).
- Anti-Aliasing Kernel Extension: A proper downscaling algorithm must widen its filter kernel proportionally to the downscale factor. By expanding the sample radius, the filter acts as an anti-aliasing low-pass filter, blurring frequencies that exceed the new screen’s Nyquist limit before resampling.
Many budget media players fail to widen their downscaling kernels, resulting in shimmering, vibrating edges during camera pans. High-end renderers ensure downscaling remains smooth and flicker-free.
Which scaling filter should you choose?
When configuring video playback settings:
- For General 1080p Movies and Streaming: Choose Bicubic Mitchell-Netravali or Spline36. They deliver good sharpness while preventing harsh ringing artifacts on modern displays.
- For High-Bitrate Live Action and Nature Documentaries: Choose Lanczos or EWA Lanczos (Jinc). The wider sampling kernel extracts maximum clarity from high-bitrate sources.
- For Anime and 2D Animation: Stick with Mitchell-Netravali or Spline36. Animated line art is particularly prone to ringing halos, making balanced bicubic splines look cleaner than aggressive Lanczos kernels.
- When Conserving Laptop Battery: Select Bilinear or standard Bicubic. These require fewer GPU texture fetch instructions, reducing power usage.
To learn more about the broader mechanics of display scaling on macOS, explore our guides on what is upscaling, mpv on Mac, and what is libplacebo.
Questions people ask
Which is better: Lanczos or bicubic?
Lanczos produces noticeably sharper edges and crisper detail than bicubic when upscaling 720p or 1080p video, but can introduce faint halo ringing along high-contrast borders. Bicubic (especially Mitchell-Netravali) offers a softer, more forgiving picture with minimal ringing.
What is EWA Lanczos or Jinc scaling?
Standard Lanczos scales horizontal and vertical pixels separately along a grid. Elliptically Weighted Average (EWA) Lanczos, also called Jinc, uses a 2D circular filter kernel that samples in all directions equally, avoiding grid-aligned visual distortion.
Why does downscaling video need a different algorithm?
When shrinking high-resolution video to a smaller screen or window, fine details can cause moiré and flickering aliasing. Downscalers must widen their sampling filter to act as an anti-aliasing low-pass filter.
Does video scaling increase GPU battery drain on a MacBook?
Complex 36-tap filters like Lanczos3 or EWA Lanczos consume slightly more GPU shading power than basic 4-tap bilinear scaling, though modern Apple Silicon GPUs execute them with high efficiency.