Repository navigation
v210 uncompressed 10-bit 4:2:2 output, and field-order flags for interlaced ProRes/v210 - #160
Draft
StuartCameronCode wants to merge 2 commits into
Draft
StuartCameronCode wants to merge 2 commits into
StuartCameronCode wants to merge 2 commits into
Conversation
…Res/v210 field order
Adds VideoCodec::V210 ("Uncompressed 10-bit 4:2:2 (v210)") on both sides,
in its own Uncompressed family: MOV (default), MKV, AVI; no quality,
presets or -crf. Requested on the videohelp forum (thread 419911, #154)
for Premiere/Resolve.
- The script always converts to YUV422P10 for v210
(effective_chroma_subsampling), field-aware. FFmpeg's -pix_fmt
conversion of interlaced 4:2:0 blends the two fields' chroma.
v210ChromaPinWarning says when the Color Format is overridden, and is
pinned to the worker's table.
- Every still-interlaced ProRes/v210 MOV was flagged progressive
(fiel 0x0100): vspipe's Y4M is always `Ip`, and -field_order is inert
in FFmpeg 9. The pipe input now gets -top 1|0 from
ScriptGenerator::output_field_order (fiel 0x0209/0x020e, MKV tb/bt),
and ProRes gets -flags +ildct so its frame header agrees.
- No +faststart for v210; restored audio beside it is PCM.
- probe_frame_count takes the first line of ffprobe's output (FFmpeg 9
repeats a stream under its stream group, which made a job without
totalFrames encode one frame).
Report: docs/reports/2026-11-v210-field-order.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eal v210 warning test Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds v210 (uncompressed 10-bit 4:2:2) as an output codec for editing in Premiere and Resolve, requested on the videohelp forum (thread 419911, post #154). While checking interlaced output, I found that every interlaced ProRes or v210 MOV was flagged progressive. That is fixed too.
v210
VideoCodec::V210/ DartVideoCodec.v210(serde"v210"), labelled "Uncompressed 10-bit 4:2:2 (v210)". It has its ownUncompressedfamily andisUncompressed, kept out ofisLossless, and everyisLosslesscall site was checked.-crf. The settings note gives the data rate (about 221 Mbit/s at 720x576 25p, 1.1 Gbit/s at 1080p25), worked out for the loaded source when there is one.effective_chroma_subsampling, Rust and Dart). There zimg respects_FieldBased; ffmpeg's-pix_fmtblends the two fields' chroma on an interlaced 4:2:0 source.forced_pix_fmtstill pinsyuv422p10leas a guard.v210ChromaPinWarningsays when the override ignores the user's choice or drops 4:4:4 chroma. It is pinned case for case to the worker's table,v210_stores_422_10_whatever_is_selected.+faststartfor v210, because it would rewrite a file of about 1 Gbit/s a second time. Restored audio beside v210 is PCM.Field order (ProRes and v210)
vspipe's Y4M header always says
Ip, so ffmpeg never learned that a still-interlaced picture's fields existed, and MOVs gotfiel 0x0100(progressive).-field_orderis inert in FFmpeg 9. Now:-top 1|0goes on the pipe input, fromScriptGenerator::output_field_order. That function starts fromstill_interlaced_tffand drops to progressive after Stabilize pitch, mpeg2stinx or the Frame Rate pass.test_221fails on anySetFieldBased(in the templates that it doesn't account for.-flags +ildct, so its own frame header is coded as fields.fiel 0x0209(TFF) /0x020e(BFF) in MOV, andtb/btin MKV. AVI cannot carry field order.Also
nb_read_framestwice for a MOV with a timecode track. The worker failed to parse that, so a job withouttotalFramesencoded one frame. It now takes the first line.docs/reports/2026-11-v210-field-order/.Testing
cargo test: all pass excepttest_subtitle_generation_srt_file, which needs a Whisper model that wasn't installed locally. After the review fixes, the library tests (416) andfilter_integration_test(213) were run again and passed.flutter test --exclude-tags heavy,gpu: 1475 passed, 7 skipped.integration_v210_output_test.dart, 11/11 passed:fielbytes are right for v210 and ProRes in MOV, and the field order for v210 in MKV and AVI;Follow-ups are tracked separately:
+faststartand PCM for ProRes.🤖 Generated with Claude Code