How B-ROLL Picks a ProRes or DNxHR Tier Automatically
In short
B-ROLL picks the lightest ProRes or DNxHR tier whose data rate, scaled to the clip's resolution and frame rate, is at least 10 times the measured source bitrate. A 1080p30 source at 8 Mbps gets ProRes 422 LT or DNxHR SQ. DNxHR HQX is reserved for 10-bit sources, and HQ is used when no tier reaches 10 times.
On this page
Why pick a ProRes or DNxHR tier automatically?
B-ROLL picks the tier for you because the right ProRes or DNxHR tier depends on numbers you rarely know before a download: the source bitrate, resolution and frame rate. Choosing by hand means guessing, and guessing high fills drives with data the stream never carried.
I cut YouTube videos in DaVinci Resolve Studio on Windows 11. On my own timeline, 4K60 AV1 footage downloaded from YouTube was heavy to play back, and AV1 or VP9 downloads crashed Resolve at times. The automatic conversion in Download YouTube Videos in ProRes or DNxHR exists to fix that problem: you pick ProRes or DNx in the Format menu, and B-ROLL writes an intraframe .mov with the source resolution and frame rate.
Converting everything to the top tier would have solved playback and created a storage problem. So B-ROLL has no tier setting at all: a rule in its code decides per video. I designed the app as an editor and built it with Claude as coding help, as told in Building a YouTube Downloader with Claude as Coding Help.
How does B-ROLL scale a tier’s data rate to resolution and frame rate?
B-ROLL stores one reference data rate per tier at 1920 x 1080 and 29.97 fps, then multiplies it by a scale factor for the video in hand. The scale factor is (width x height x fps) / (1920 x 1080 x 29.97), so it grows with pixel count and frame rate.
A 1080p30 video has a scale of 1.001, and a 2160p60 video has a scale of 8.008 (3840 x 2160 x 60 / (1920 x 1080 x 29.97)). A 720p30 video drops to 0.445. When B-ROLL cannot read the width, height or frame rate, it fills the missing value with the default written in its code: 1920 for the width, 1080 for the height, 30 for the frame rate.
The table compares B-ROLL’s internal reference rates with the rates Apple and Avid publish for the same frame size and frame rate. The DNxHR values are B-ROLL’s own figures, lower than Avid’s; Avid lists megabytes per second, converted here by multiplying by 8.
| Tier | Bit depth and sampling in B-ROLL | B-ROLL reference rate, 1080p 29.97 | Vendor published rate, 1080p 29.97 |
|---|---|---|---|
| ProRes 422 Proxy | 10-bit 4:2:2 | 45 Mbps | 45 Mbps (Apple) |
| ProRes 422 LT | 10-bit 4:2:2 | 102 Mbps | 102 Mbps (Apple) |
| ProRes 422 | 10-bit 4:2:2 | 147 Mbps | 147 Mbps (Apple) |
| ProRes 422 HQ | 10-bit 4:2:2 | 220 Mbps | 220 Mbps (Apple) |
| DNxHR LB | 8-bit 4:2:2 | 36 Mbps | 43.1 Mbps (5.39 MB/s x 8, Avid) |
| DNxHR SQ | 8-bit 4:2:2 | 124 Mbps | 137.7 Mbps (17.21 MB/s x 8, Avid) |
| DNxHR HQ | 8-bit 4:2:2 | 188 Mbps | 207.9 Mbps (25.99 MB/s x 8, Avid) |
| DNxHR HQX | 10-bit 4:2:2, 10-bit sources only | 188 Mbps, used only for the size estimate | 207.9 Mbps (25.99 MB/s x 8, Avid) |
The ProRes values match the Apple ProRes white paper exactly. The DNxHR vendor column comes from Avid’s DNxHR bandwidth specifications. What each tier is for sits in ProRes Proxy vs LT vs 422 vs HQ: Which to Use and DNxHR LB vs SQ vs HQ vs HQX: Tiers Explained.
Why does B-ROLL aim for ten times the source bitrate?
B-ROLL picks the lightest ProRes or DNxHR tier whose scaled data rate is at least 10 times the source bitrate. A one-line comment next to the rule in B-ROLL’s code gives the reason:
An intraframe codec is visually transparent to such a source at ~10x its bitrate, so any tier above that only wastes disk. The factor works because the two kinds of codec spend bits differently. A YouTube stream stores most frames as differences from neighboring frames, while ProRes and DNxHR encode every frame on its own, as Apple’s white paper describes for ProRes. An intraframe copy therefore needs many more bits to carry the same picture, and the factor of 10 sets that margin.
The source bitrate comes from the downloaded file, not from YouTube’s label. ffmpeg measures the MKV master that yt-dlp merged: the video stream bitrate when ffmpeg reports one, otherwise the file’s overall bitrate, otherwise size divided by duration. The number on the card, explained in See the Real Bitrate and Resolution of YouTube Files, is measured on the same file but as size over duration, so the two numbers can differ slightly.
When no tier reaches 10 times the source, B-ROLL uses HQ, the heaviest tier it writes.
What happens with 10-bit sources?
A 10-bit source exported as DNx always gets DNxHR HQX, whatever its bitrate. DNxHR LB, SQ and HQ are 8-bit, so any of them would throw away the extra bit depth, and HQX keeps it at the same data rate as HQ in Avid’s table.
B-ROLL reads the source’s bit depth with ffmpeg before converting and prints it in the log. An 8-bit source never gets HQX: 10-bit samples add nothing when the stream only holds 8 bits. If the HQX encode fails, B-ROLL falls back to DNxHR SQ at 8-bit.
ProRes skips the bit depth question. Every ProRes tier B-ROLL writes, Proxy included, is 10-bit 4:2:2, so a 10-bit source follows the normal 10x rule and keeps its depth on any tier. HDR videos are the common 10-bit case: as of September 2026, yt-dlp prefers HDR streams by default, and B-ROLL applies no tone mapping, so plan your color management around an HDR source.
Which tier do typical YouTube sources get?
At 1080p30, B-ROLL picks ProRes 422 LT for sources over 4.5 and up to 10.2 Mbps (102 x 1.001 / 10). DNxHR SQ covers sources over 3.6 and up to 12.4 Mbps (124 x 1.001 / 10). High frame rate 4K sources can drop to Proxy or LB, because doubling the frame rate doubles every tier’s scaled rate.
The table applies the rule to illustrative sources, not measurements of specific uploads. Estimated output is the reference rate x scale, rounded; the lightest tier at or above 10 times the source wins.
| Source | Source bitrate | 10 times the source | ProRes tier picked, estimated output | DNxHR tier picked, estimated output |
|---|---|---|---|---|
| 1080p 25 | 5 Mbps | 50 Mbps | LT, 85 Mbps | SQ, 103 Mbps |
| 1080p 30 | 8 Mbps | 80 Mbps | LT, 102 Mbps | SQ, 124 Mbps |
| 1080p 60 | 12 Mbps | 120 Mbps | LT, 204 Mbps | SQ, 248 Mbps |
| 1080p 30 | 30 Mbps | 300 Mbps | HQ, 220 Mbps (no tier reaches 300) | HQ, 188 Mbps (no tier reaches 300) |
| 2160p 30 | 20 Mbps | 200 Mbps | LT, 408 Mbps | SQ, 496 Mbps |
| 2160p 60 | 25 Mbps | 250 Mbps | Proxy, 360 Mbps | LB, 288 Mbps |
| 2160p 60, 10-bit HDR | 40 Mbps | 400 Mbps | LT, 817 Mbps | HQX, 1,506 Mbps |
Read one row to check the math. For 2160p60 at 25 Mbps, ProRes 422 Proxy scales to 360 Mbps (45 x 8.008), which already clears 250 Mbps, so Proxy wins. B-ROLL’s log prints each decision with the estimate, for example:
DNx tier auto-picked: SQ (source ~8.0 Mbps -> output ~124 Mbps, ~1.2 GB) The GB figure in the log line is the estimated size of the whole file for that video’s duration, not a per-minute rate. The line before the conversion also prints the source frame size and bit depth, for example source 1920x1080 8-bit.
What does the tier rule mean for disk space?
For a typical 1080p30 upload, the tier rule writes files less than half the size of a 422 HQ export. A 1080p30 source at 8 Mbps gets ProRes 422 LT at 0.77 GB per minute (102.1 Mbps x 60 / 8 / 1,000), where 422 HQ would take 1.65 GB per minute (220.2 Mbps x 60 / 8 / 1,000).
The gap grows with length. A ten-minute 1080p30 clip at those rates is 7.7 GB in LT (0.77 x 10) against 16.5 GB in 422 HQ (1.65 x 10), and both files hold the same 10-bit 4:2:2 picture of the same stream. The heavier tiers still arrive when a source needs them: a 10-bit 2160p60 source in DNx takes 11.3 GB per minute (1,505.5 Mbps x 60 / 8 / 1,000).
Treat the log’s size as an estimate. The Apple white paper describes ProRes as a variable bit rate codec, so the real file follows the picture’s complexity rather than the target rate. Per-minute sizes for every tier sit in ProRes and DNxHR File Size per Minute (1080p and 4K). How the app reached its first build is in The First Public Release of B-ROLL, July 2026, and more posts live on the B-ROLL Blog: Releases and Behind the Scenes.
Frequently asked questions
Why not always use ProRes 422 HQ?
Because a compressed YouTube stream carries far less picture data than 422 HQ is built to hold. For a 1080p30 source at 8 Mbps, 422 HQ would write 1.65 GB per minute (220 Mbps x 60 / 8 / 1,000), while ProRes 422 LT writes 0.77 GB. Both keep 10-bit 4:2:2, so the heavier file adds disk use, not detail from the source.
Does the rule apply to playlists?
Yes. B-ROLL runs the tier rule once per video, so every video in a playlist gets its own tier from its own resolution, frame rate and measured bitrate. A playlist can mix ProRes 422 Proxy, LT and HQ files, or DNxHR LB, SQ and HQX files, in one folder. The playlist workflow is in YouTube playlist and channel downloader.
What if B-ROLL cannot measure the source bitrate?
B-ROLL falls back to the lightest tier: ProRes 422 Proxy, or DNxHR LB. The one exception is a 10-bit source exported as DNx, which still gets DNxHR HQX. B-ROLL tries three measurements first: the video stream bitrate ffmpeg reports, then the file's overall bitrate, then file size divided by duration.
Sources
- Apple ProRes white paper (PDF) apple.com
- Avid Knowledge Base: DNxHR Codec Bandwidth Specifications kb.avid.com