How do Interop and SMPTE ST 428-7 subtitle files differ inside a DCP, and what do public tool checks and delivery rules encode for each?
As encoded in two open validators, Interop and SMPTE DCP subtitles differ in file form (.xml vs .mxf), root element and timing units, and SMPTE text subtitles require exactly one LoadFont while Interop does not; libdcp checks main-subtitle line lengths at 52 (warning) / 79 (error) characters and closed captions at 32. The validators classify some rules differently (libdcp warning vs ClairMeta error for the 4 s first-subtitle rule).
As encoded in two open validators, Interop and SMPTE DCP subtitles differ in file form (.xml vs .mxf), root element and timing units, and SMPTE text subtitles require exactly one LoadFont while Interop does not; libdcp checks main-subtitle line lengths at 52 (warning) / 79 (error) characters and closed captions at 32. The validators classify some rules differently (libdcp warning vs ClairMeta error for the 4 s first-subtitle rule).
Curator qualifications: Code read at pinned commits 2026-10-22; validators not run; SMPTE standards text not read. Rules are as implemented by the tools, not the SMPTE text. libdcp GPL and ClairMeta BSD-3 per producer (not re-read).
Limitations: Code read at pinned commits 2026-10-22; validators not run; SMPTE standards text not read.
Evidence status: curator/producer inference or synthesis from the cited sources (code read, not executed, where code is cited); correlated desk review (Claude); not independently reviewed.
Structured fields
{
"citations": [
{
"url": "https://github.com/cth103/libdcp/tree/891facc8ce17cd767948ac5c2eb629bca5288f64",
"note": "ClairMeta clairmeta/dcp_check_subtitle.py at b3b66a02 (bytes equal producer-cited hash), L268-L286 and L378-L411; libdcp src/verify.cc at 891facc8 (bytes equal producer-cited hash), L1753, L1774"
},
{
"url": "https://github.com/ClairMeta/ClairMeta/tree/b3b66a024174976ffbde4b6dfff2b599e84e4757",
"note": "ClairMeta clairmeta/dcp_check_subtitle.py at b3b66a02 (bytes equal producer-cited hash), L268-L286 and L378-L411; libdcp src/verify.cc at 891facc8 (bytes equal producer-cited hash), L1753, L1774"
},
{
"url": "https://pub.smpte.org/doc/st428-7/",
"note": "ClairMeta clairmeta/dcp_check_subtitle.py at b3b66a02 (bytes equal producer-cited hash), L268-L286 and L378-L411; libdcp src/verify.cc at 891facc8 (bytes equal producer-cited hash), L1753, L1774"
}
]
}Evidence claims
- [inference] As encoded in two open validators, Interop and SMPTE DCP subtitles differ in file form (.xml vs .mxf), root element and timing units, and SMPTE text subtitles require exactly one LoadFont while Interop does not; libdcp checks main-subtitle line lengths at 52 (warning) / 79 (error) characters and closed captions at 32. The validators classify some rules differently (libdcp warning vs ClairMeta error for the 4 s first-subtitle rule). · locator: ClairMeta clairmeta/dcp_check_subtitle.py at b3b66a02 (bytes equal producer-cited hash), L268-L286 and L378-L411; libdcp src/verify.cc at 891facc8 (bytes equal producer-cited hash), L1753, L1774 source
Rights
| component | license | hosting | redistribution | modification | training | Evidence and notes |
|---|---|---|---|---|---|---|
| documentation | unknown | permitted | permitted | unknown | unknown | Applies to this original summary only, not to the cited sources. |