Hello Apple AVFoundation team,
Could you clarify the supported iPhone models and OS versions for standalone locked video frame duration using AVCaptureDeviceInput.activeLockedVideoFrameDuration?
The API is documented as available from iOS 26.0, but I understand that OS availability alone does not mean every camera device/configuration supports it. I have read the API documentation and the DTS reply in iPhone 17 Pro's Genlock feature, but could not find a model compatibility list for the standalone locked-duration API.
Scope: I am investigating actual capture timing for multi-iPhone motion capture. This question is about locking each camera's frame period using its internal timing, without an external genlock accessory. I am not asking about encoding a constant-frame-rate file, ordinary equal min/max frame durations, timecode metadata, or synchronizing the first exposure across phones.
- iPhone 16 Pro, iOS 26.2 (23C55).
- Built with Xcode 26.3 and the iOS 26.2 SDK.
- One
AVCaptureSession, one physical rear.builtInWideAngleCamerainput, and oneAVCaptureVideoDataOutput. - 8-bit SDR 420v formats, tested at 1920 x 1080 and 3840 x 2160, each at 30 and 60 fps.
- Auto video frame rate disabled; no spatial video capture or multicam session.
- Manual exposure approximately 2 ms, shorter than half a frame at both tested rates.
- The session is running and delivering frames. Two separate probe runs produced the same results, including capability readbacks after a settling period.
For all four tested configurations:
input.isLockedVideoFrameDurationSupported = false
device.minSupportedLockedVideoFrameDuration = kCMTimeInvalid
input.activeLockedVideoFrameDuration = kCMTimeInvalid
device.isVideoFrameDurationLocked = false
Ordinary activeVideoMinFrameDuration and activeVideoMaxFrameDuration can both be set to the requested CMTime(value: 1, timescale: 30) or CMTime(value: 1, timescale: 60), and frames are delivered. This is only a configuration readback, not a claim of exact capture timing in the ordinary mode.
The app directly queries the public support properties; it has no model whitelist. It does not attempt to set a valid locked duration when support is false, as the documented setter contract would reject that. These tests cover the selected formats, not every camera/format on this phone.
- Which iPhone models support this standalone API? In particular, is
falseexpected on iPhone 16 Pro? Is there an official compatibility list covering iPhone 13/14/15/16 and iPhone 17 models? - Is the iPhone 16 Pro result a hardware capability restriction, an iOS 26.2 limitation/known issue, or a configuration requirement? Is there a released iOS version that enables this on iPhone 16 Pro, or is newer hardware required?
- What is the minimum supported capture configuration and correct time to query support? Are there restrictions involving the physical versus virtual camera input, pixel format, SDR/HDR, or exposure mode that could explain this result? If so, which configuration should be tested before concluding that the device does not support it?
- On supported hardware, can this standalone lock be enabled without an external accessory or a special entitlement, independently of
follow(_:videoFrameDuration:delegate:)?
Relevant documentation:
- activeLockedVideoFrameDuration
- isLockedVideoFrameDurationSupported
- minSupportedLockedVideoFrameDuration
I can provide a focused reproducer if needed. Thank you for clarifying the device requirements and whether an OS upgrade can change the result.