Page actions
instrument mechanism / verified-clean
Frame Rate Conversion / Pulldown Calculator mechanism
The inspectable method record for Frame Rate Conversion / Pulldown Calculator, kept separate from implementation and qualification.
Model scope
The arithmetic formula is sound under explicit seconds and frames-per-second units, but the instrument claim is incomplete for frame-count inputs and ambiguous for pulldown. The honest label must distinguish exact 23.976-to-29.97 telecine from nominal 24-to-29.97 conversion and must disclose any fractional-frame or rounding behavior.
- newFrames=duration*newFps is correct only when duration is explicitly in seconds and is preserved during conversion.
- For a source frame-count input, the required formula is convertedFrames=(sourceFrameCount/sourceFps)*targetFps; this is not stated.
- A 3:2 pulldown cadence is exact for 23.976 fps to 29.97 fps when those rates are interpreted as 24000/1001 and 30000/1001. It is not an exact duration-preserving conversion from 24 fps to 29.97 fps because 29.97/24 is not exactly 5/4.
- The cadence phase and ordering are unspecified: 2:3 and 3:2 can describe the same cadence with different starting phases. The actual field pattern should be specified, such as 2:3:2:3 fields per four source frames.
- The specification does not state how fractional converted frame counts are rounded, accumulated, or represented when the result is not an integer.
Units and conventions
- Duration is measured in seconds.
- Frame rates are measured in frames per second.
- For standard broadcast rates, 23.976 means exactly 24000/1001 fps and 29.97 means exactly 30000/1001 fps, rather than approximate decimal rates.
- A duration-preserving frame-rate conversion may produce a fractional nominal frame count; an encoded output must define an integer-frame or timebase policy.
- Pulldown cadence is a field-display pattern, so the field order and starting phase must be defined.
Inspectable vector
One of 4 source-bound review vectors:
{
"inputs": {
"sourceFps": 24,
"targetFps": 30,
"durationSeconds": 10
},
"expected_outputs": {
"convertedDurationSeconds": 10,
"newFrames": 300
},
"working": "newFrames = duration × targetFps = 10 s × 30 frames/s = 300 frames. Duration remains 10 s because the conversion is duration-preserving."
}Failure boundary
BREAK_CLAIMED · SELF_FLAGGED
The specification exposes two failure modes: a zero source frame rate causes an undefined duration, and the 24-to-29.97 pulldown branch produces a nominal 30 cadence frames for one second of 24-fps material while direct arithmetic produces 29.97. The duration field also has an unresolved seconds-versus-frames convention ambiguity.
Other records
Sources and evidence
These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.
VERIFIED_LEDGER.jsonevidence-tranche4/tranche4-results.jsonBOUNDARY_HAZARD_CATALOG.json