Netflix — AV1 @ Scale: Film Grain Synthesis, The Awakening¶
Netflix's Video Algorithms team describes the global rollout of AV1 Film Grain Synthesis (FGS) on the streaming service. FGS has been part of the AV1 standard since inception; Netflix enabled it for a limited number of titles during their 2021 AV1-on-TVs launch but has only now deployed it at scale. The architectural bet: instead of encoding film grain as texture (which is a worst-case signal for block-transform codecs — near-random noise), denoise the source, encode the clean signal, transmit the grain as a tiny parameter set, and re-synthesize the grain on the decoder. This preserves artistic intent while producing significant bitrate savings.
Authors: Li-Heng Chen, Andrey Norkin, Liwei Guo, Zhi Li, Agata Opalach, Anush Moorthy.
Summary¶
Film grain — whether the chemical artefact of film stock or the intentional grain added in post-production for mood — is "as elusive as it is beautiful". Its near-random spatial structure defeats conventional compression algorithms, which are built on spatial and temporal correlation. Traditional encoders therefore face a forced choice: preserve the grain and blow bitrate, or crush the grain and lose artistic intent. AV1's FGS tool breaks the trade-off by moving grain out of the compressed bitstream entirely. The encoding pipeline estimates two small parameter sets — an auto-regressive (AR) model for the grain pattern (a 64×64 noise template generated from AR coefficients and a white-Gaussian-noise source) and a piecewise-linear scaling function mapping pixel value to grain intensity — then denoises the source video before compression. During playback, the decoder re-synthesizes the grain layer block-by-block (32×32 patches pulled from the 64×64 template) using the transmitted parameters and adds it back to the decoded frame. Netflix reports "significant bitrate savings" and "improved visual quality" on grain-heavy content with this approach. The post uses Netflix's They Cloned Tyrone as the visual example.
Key takeaways¶
-
AV1 FGS is decoder-side synthesis, not encoder-side improvement. The AV1 standard specifies the synthesis model — AR coefficients + scaling function — but does not mandate the denoising algorithm the encoder uses to strip grain out of the source before compression. "The standard does not mandate a specific method for this step, allowing users to choose their preferred denoiser." That freedom is where vendor-specific pipeline investment lands. (Source: sources/2025-07-03-netflix-av1scale-film-grain-synthesis-the-awakening)
-
Two orthogonal parameter sets model grain. An auto-regressive model captures the spatial pattern of the grain (fine / coarse); a piecewise-linear scaling function captures the intensity as a function of pixel value (grain is usually more visible in mid-tones than in blacks or highlights). "The film grain strength is adapted to the areas of the picture, closely recreating the look of the original video." See concepts/auto-regressive-grain-model
-
A 64×64 noise template is generated at playback, then 32×32 patches are tiled randomly across the frame. "With these coefficients, a 64x64 noise template is generated… To construct the noise layer during playback, random 32x32 patches are extracted from the 64x64 noise template and added to the decoded video." Block-based tiling is deliberately chosen to stay cheap on commodity consumer devices (TVs, mobile, set-top boxes): "This approach is optimized for consumer devices, ensuring smooth playback and high-quality visuals." Decoder- side cost is a first-class design constraint for any rollout at Netflix scale.
-
The encoding pipeline is denoise → encode → transmit grain parameters → re-synthesize at decoder. The full three-stage transformation — concepts/denoise-encode-synthesize — is what makes the grain "easier to compress": the denoised signal is low-entropy where the original was high-entropy, so block-transform + entropy coding do much more of the work, at the cost of emitting a tiny side-channel of AR coefficients + scaling-function points. Both are transmitted alongside the compressed video data.
-
FGS has been in the AV1 standard since inception; the 4-year gap 2021→2025 was rollout engineering, not spec work. "While FGS has been part of the AV1 standard since its inception, we only enabled it for a limited number of titles during our initial launch of the AV1 codec in 2021." The delta to "enabling this innovative technology at scale" is the Netflix-specific encoder-side denoiser, parameter estimation, quality validation, device-compatibility testing on the long tail of AV1 decoders, and deployment into the streaming encoding ladder — see patterns/codec-feature-gradual-rollout.
-
The specific wins claimed are bitrate reduction and preserved artistic intent, not raw perceptual-quality gain. "In our pursuit of premium streaming quality, enabling AV1 Film Grain Synthesis has led to significant bitrate reduction, allowing us to deliver high-quality video with less data while preserving the artistic integrity of film grain." The post hedges the visual-quality claim to "high-quality" + "the artistic integrity of film grain" rather than "higher VMAF" — reflecting that FGS changes what "source" means from a reference-metric point of view (synthesized grain ≠ original grain sample-by-sample). See concepts/visual-quality-metric for why this framing matters.
-
Grain is a worst-case signal for conventional codecs. "Its random nature makes it notoriously difficult to compress. Traditional compression algorithms struggle to manage it, often forcing a choice between preserving the grain and reducing file size." Block-transform codecs (DCT / DST families — including AV1's transform stack) rely on spatial correlation for energy compaction. Grain, by construction, has no exploitable spatial correlation; it is the adversarial input. This is why the architectural move is to eject grain from the compressed bitstream entirely rather than to tune the encoder harder.
-
Noise is everywhere in production video, not just on period pieces. "Camera sensor noise introduces its own characteristics, while filmmakers often add intentional grain during post-production to evoke mood or a vintage feel." FGS therefore pays off across the catalogue, not just on explicitly grainy titles — sensor noise on digitally-captured content is a similar worst-case signal for the encoder, even when viewers would not describe the result as "grainy".
Architecture at a glance¶
Encoder side Decoder side (consumer device)
───────────────────────────── ────────────────────────────────────
Source video with grain Compressed bitstream + grain metadata
│ │
▼ ▼
┌───────────┐ ┌──────────┐
│ Denoiser │ ◄── not specified by AV1 │ AV1 │
│ (vendor- │ standard; vendor choice │ decoder │
│ chosen) │ └────┬─────┘
└─────┬─────┘ │
│ Denoised clean video │ Decoded clean frame
▼ ▼
┌───────────┐ ┌─────────────────┐ ┌───────────────┐
│ AV1 │ │ Residual = │ │ Generate 64×64│
│ encoder │ │ source − denoised│ │ noise template│
└─────┬─────┘ └────────┬────────┘ │ from AR coefs │
│ │ └───────┬───────┘
│ compressed │ estimate AR coefs │
│ bitstream │ + scaling function │ Tile random
│ │ │ 32×32 patches
│ ▼ │ at intensity
│ grain parameters │ from scaling fn
│ │ │
└───────────────────┴───────────────────────┴────► Final frame
to screen
The standard specifies everything on the decoder side (right) plus the grain parameter format. Everything on the encoder side (left) — particularly the denoiser — is vendor-implementation territory.
Operational numbers¶
| Quantity | Value |
|---|---|
| Noise template size | 64 × 64 |
| Patch size tiled on decoded frame | 32 × 32 (random position) |
| Grain parameters transmitted per encode | AR coefficients (a₀…aₙ) + piecewise-linear scaling function |
| AV1 FGS availability in standard | Since AV1 inception |
| Netflix first enabled FGS | 2021 AV1-on-TVs launch (limited titles) |
| Netflix enabled FGS at scale | 2025-07 (this post) |
| Encoder denoiser choice | Not mandated by AV1; vendor-specific |
| Bitrate savings on grain-heavy content | "significant" (unquantified on this post) |
| HN attention | 255 points (news.ycombinator.com/item?id=44456779) |
The blog publishes no fleet-wide numbers, no ladder positions, no specific bitrate-delta percentages, no VMAF curves, no catalogue-coverage percentage, no CPU cost of the Netflix denoiser, and no decoder-side overhead breakdown. Values are structural where possible and the perf claim is paraphrased as "significant bitrate savings".
Caveats¶
- Announcement voice, not architecture deep-dive. The post explains the AV1-FGS model (standard-level) and the encode-then-synthesize architectural shape, but publishes no numbers on bitrate savings (beyond "significant"), no VMAF curves, no per-title deltas, no comparison of Netflix's chosen denoiser against alternatives, and no breakdown of which fraction of the catalogue now uses FGS.
- Netflix's specific denoiser is not described. The post explicitly calls out that AV1 leaves the denoiser up to the encoder vendor, but does not reveal what Netflix uses internally (classic DSP filter? learned denoiser? temporal filter? per-title tuned?). This is the "secret sauce" of the Netflix FGS pipeline and is omitted.
- Decoder-side overhead is asserted to be low but not benchmarked. "This approach is optimized for consumer devices, ensuring smooth playback and high-quality visuals." No numbers: no decode cycles, no memory footprint for the noise template, no per-frame cost of 32×32 patch tiling, no behaviour on low-end AV1 decoders.
- Visual-quality framing is hedged. The post says "high- quality video with less data while preserving the artistic integrity of film grain" — not "higher VMAF". FGS- synthesized grain is sample-wise different from source grain even when perceptually equivalent, so reference metrics (PSNR / SSIM / VMAF; see concepts/visual-quality-metric) break down as an FGS evaluation tool; the post does not discuss the evaluation methodology Netflix uses in its place.
- Original paper is cited but not distilled here. "For a more detailed explanation, please refer to the original paper" (norkin.org/pdf/DCC_2018_AV1_film_grain.pdf — Norkin & Birkbeck, DCC 2018). The wiki's FGS pages summarise the blog-post content; deeper mathematical detail of the AR kernel + scaling-function estimation lives in the paper.
- Netflix-only data point on AV1 FGS scale rollout. This is the first wiki source on FGS at scale; there is no cross-company comparison (YouTube, Apple, Amazon, Hulu) yet.
- The full raw article is truncated at the worked-example introduction — the blog continues beyond the They Cloned Tyrone mention into visual comparisons that the raw markdown did not capture beyond the "Press enter or click to view image" placeholder.
Source¶
- Original: https://netflixtechblog.com/av1-scale-film-grain-synthesis-the-awakening-ee09cfdff40b
- Raw markdown:
raw/netflix/2025-07-03-av1scale-film-grain-synthesis-the-awakening-e8a7e249.md - Referenced prior post: Bringing AV1 Streaming to Netflix Members' TVs (2021)
- Underlying paper: A Film Grain Synthesis Tool in AV1 (Norkin & Birkbeck, DCC 2018)
- HN discussion: news.ycombinator.com/item?id=44456779
Related¶
- systems/av1-codec — the codec itself
- concepts/film-grain-synthesis — the AV1 tool as a wiki concept
- concepts/auto-regressive-grain-model — pattern model
- concepts/grain-intensity-scaling-function — intensity model
- concepts/denoise-encode-synthesize — encoding-pipeline shape
- patterns/decoder-side-synthesis-for-compression — the architectural bet (transmit parameters, reconstruct signal)
- patterns/codec-feature-gradual-rollout — 2021→2025 staged deployment pattern
- concepts/video-transcoding — parent concept
- concepts/visual-quality-metric — why VMAF/PSNR/SSIM don't cleanly evaluate synthesized-grain outputs
- companies/netflix — corpus page