Snapshots the current frame data so that latestCameraSample and the other accessors
can be called from any thread. Returns true when a frame is ready to be consumed, false
if no frame was available — in which case the caller should skip NSDKSession.update.
The default implementation returns true and does nothing; data sources that hold no
per-frame state do not need to override it.
Threading contract: the caller must ensure that prepareFrame, NSDKSession.update,
and any latest* accessor calls are serialized — i.e., a complete
prepareFrame → update → (accessors finish) cycle must complete before the next
prepareFrame call begins. This is typically achieved by driving the cycle from a
single-threaded executor or a coroutine with an in-flight gate.
Snapshots the current frame data so that
latestCameraSampleand the other accessorscan be called from any thread. Returns true when a frame is ready to be consumed, false
if no frame was available — in which case the caller should skip
NSDKSession.update.The default implementation returns true and does nothing; data sources that hold no
per-frame state do not need to override it.
Threading contract: the caller must ensure that
prepareFrame,NSDKSession.update,and any
latest*accessor calls are serialized — i.e., a completeprepareFrame → update → (accessors finish)cycle must complete before the nextprepareFramecall begins. This is typically achieved by driving the cycle from asingle-threaded executor or a coroutine with an in-flight gate.