Guide
Per-Title vs Per-Shot Encoding Explained
A cartoon and a grainy night scene do not need the same bitrate. Per-title encoding adapts the bitrate ladder to each title, per-shot encoding goes further and adapts it to each shot. This guide compares both approaches, explains the convex hull method behind most per-shot systems and shows how per-shot encoding works in a single pass.
From fixed ladders to per-title
Adaptive streaming with HLS or DASH offers each video in several renditions, the bitrate ladder. The player switches between them depending on the available bandwidth. For years, one fixed ladder was used for all content, for example 1080p at a fixed bitrate for every title. Simple content was over-encoded and wasted bandwidth, complex content was under-encoded and showed artifacts.
Per-title encoding analyzes the complexity of a whole title and builds a ladder for it. An animated film gets lower bitrates, a sports event or a film with heavy grain gets higher ones. The limit: a title is not uniform. A two-hour film contains calm dialogue, fast action and dark scenes with a lot of noise, and one ladder for all of them is still a compromise.
What per-shot encoding adds
Per-shot encoding splits the video at the cuts and treats every shot as its own encoding problem. Each shot gets exactly the bits its complexity needs, no more and no less. Shots are a natural unit: within a shot the content is similar, so encoder settings chosen for it stay valid, and a change of settings at a cut is not visible. The whole stream stays inside the bandwidth target without over or under encoding single scenes.
Netflix reports around 30% bitrate savings for its shot-based Dynamic Optimizer. The question is how the right settings per shot are found.
The convex hull method and its cost
The common answer is brute force. Every shot is encoded many times at different resolutions and quality settings, each trial encode is measured with VMAF, and the best points of all trials form the convex hull, the best quality you can get for each bitrate. From this hull the final ladder is chosen.
The method works, but it has two weaknesses:
- Compute, time and energy. Many trial encodes per shot multiply the processing cost before the first real encode even starts.
- It trusts the average. The points on the hull are usually selected by mean VMAF. Averages hide short quality collapses, so the hull can select bitrate points that look good on paper but fail in reality. Our guide on VMAF pooling shows why.
Per-shot encoding in a single pass
At Wavelet Beam we reach the same goal without encoding loops. IRIS.ANALYST analyzes the spatial and temporal complexity of every shot and the noise level in one pass. It selects the optimal noise profile automatically, and its metadata drives the encoder settings for each shot.
- Analyze: IRIS.ANALYST measures resolution, noise levels and spatial energy per shot.
- Clean: IRIS-Denoising removes noise and grain, which alone take up to 30% of the bitrate budget. The encoder spends its bits on real image content. See why denoise before encoding.
- Encode: a single pass with FFmpeg and industry-standard tools, no proprietary encoder. Massive parallel chunk processing uses all available CPU and GPU resources.
- Deliver: HLS or DASH in H.264, HEVC or AV1, optionally with AV1 film grain synthesis.
- Verify: QBVE checks every rendition for quality drops below the floor, as a VMAF-based control instance instead of a search loop.
Comparison at a glance
| Fixed ladder | Per-title | Per-shot, convex hull | Per-shot, single pass (IRIS) | |
|---|---|---|---|---|
| Adapts to | Nothing | Whole title | Each shot | Each shot, including its noise level |
| How settings are found | Fixed table | Complexity analysis or trial encodes | Many trial encodes per shot | One analysis pass |
| Compute cost | Lowest | Low to medium | High | Low |
| Quality control | None | Usually mean VMAF | Usually mean VMAF | QBVE, quality drops below the floor |
| Noise handling | Encoder spends bits on noise | Encoder spends bits on noise | Encoder spends bits on noise | Noise removed before encoding |
Results
On Netflix "Meridian" in UHD at 59.94 fps, IRIS per-shot encoding with denoising delivered HEVC via HLS at 7.54 Mbit/s with a VMAF of 96.02 and a QBVE of 5.06. A standard encode of the same content at a comparable bitrate reached a QBVE of 9.46, nearly twice the failure energy. With per-shot adaptive encoding, all UHD streams stay below 10 Mbit/s. Details on the per-shot encoding page.
Run it on your content
Send us a sample and we compare your current ladder with IRIS per-shot encoding, measured with VMAF, PSNR and QBVE. Contact info@waveletbeam.com.