FB24664874
Thanks for looking at this. I found the missing piece in the meantime, and I think it explains why it did not reproduce in your test app.
The trigger is AVCaptureDepthDataOutput. With one attached to the session, setExposureModeCustom is ignored on the front camera. Remove that output and the same call is honored, on the same device and the same OS build, with nothing else changed. My original post listed the depth output in the session description but never called it out as the condition, and the repro snippet did not mention it at all, which was my mistake.
The minimal setup:
AVCaptureDeviceInput on .builtInTrueDepthCamera
AVCaptureVideoDataOutput (BGRA)
AVCaptureDepthDataOutput, connection enabled, activeDepthDataFormat set
Let auto-exposure settle, call setExposureModeCustom, then poll device.iso and device.exposureDuration. Repeat after removing the depth output:
session.beginConfiguration()
session.removeOutput(depthDataOutput)
session.commitConfiguration()
The readback then matches the request.
One thing I could not isolate is whether it is the depth output being in the session graph or activeDepthDataFormat being non-nil, because removing the output also clears the active format.
The FB has the full steps, the readback numbers for both cases, and the device list. I did not attach a sample app, but adding an AVCaptureDepthDataOutput to a TrueDepth test app you already have should be enough to reproduce it.
Topic:
Media Technologies
SubTopic:
Photos & Camera
Tags: