Flutter Engine
The Flutter Engine
Typedefs | Functions
Frame

Typedefs

typedef struct ArFrame_ ArFrame
 

Functions

void ArFrame_create (const ArSession *session, ArFrame **out_frame)
 
void ArFrame_destroy (ArFrame *frame)
 Releases an ArFrame and any references it holds. More...
 
void ArFrame_getDisplayGeometryChanged (const ArSession *session, const ArFrame *frame, int32_t *out_geometry_changed)
 
void ArFrame_getTimestamp (const ArSession *session, const ArFrame *frame, int64_t *out_timestamp_ns)
 
void ArFrame_transformDisplayUvCoords (const ArSession *session, const ArFrame *frame, int32_t num_elements, const float *uvs_in, float *uvs_out)
 
void ArFrame_hitTest (const ArSession *session, const ArFrame *frame, float pixel_x, float pixel_y, ArHitResultList *hit_result_list)
 
void ArFrame_getLightEstimate (const ArSession *session, const ArFrame *frame, ArLightEstimate *out_light_estimate)
 
ArStatus ArFrame_acquirePointCloud (const ArSession *session, const ArFrame *frame, ArPointCloud **out_point_cloud)
 
void ArFrame_acquireCamera (const ArSession *session, const ArFrame *frame, ArCamera **out_camera)
 
ArStatus ArFrame_acquireImageMetadata (const ArSession *session, const ArFrame *frame, ArImageMetadata **out_metadata)
 
void ArFrame_getUpdatedAnchors (const ArSession *session, const ArFrame *frame, ArAnchorList *out_anchor_list)
 
void ArFrame_getUpdatedTrackables (const ArSession *session, const ArFrame *frame, ArTrackableType filter_type, ArTrackableList *out_trackable_list)
 

Detailed Description

Per-frame state.

Typedef Documentation

◆ ArFrame

typedef struct ArFrame_ ArFrame

The world state resulting from an update (value type).

Allocate with ArFrame_create()
Populate with ArSession_update()
Release with ArFrame_destroy()

Definition at line 203 of file arcore_c_api.h.

Function Documentation

◆ ArFrame_acquireCamera()

void ArFrame_acquireCamera ( const ArSession session,
const ArFrame frame,
ArCamera **  out_camera 
)

Returns the camera object for the session. Note that this Camera instance is long-lived so the same instance is returned regardless of the frame object this method was called on.

◆ ArFrame_acquireImageMetadata()

ArStatus ArFrame_acquireImageMetadata ( const ArSession session,
const ArFrame frame,
ArImageMetadata **  out_metadata 
)

Gets the camera metadata for the current camera image.

Returns
#AR_SUCCESS or any of:
  • #AR_ERROR_DEADLINE_EXCEEDED if frame is not the latest frame from by ArSession_update().
  • #AR_ERROR_RESOURCE_EXHAUSTED if too many metadata objects are currently held.
  • #AR_ERROR_NOT_YET_AVAILABLE if the camera failed to produce metadata for the given frame. Note: this will commonly happen for few frames right after ArSession_resume() due to the camera stack bringup.

◆ ArFrame_acquirePointCloud()

ArStatus ArFrame_acquirePointCloud ( const ArSession session,
const ArFrame frame,
ArPointCloud **  out_point_cloud 
)

Acquires the current set of estimated 3d points attached to real-world geometry. A matching call to PointCloud_release() must be made when the application is done accessing the point cloud.

Note: This information is for visualization and debugging purposes only. Its characteristics and format are subject to change in subsequent versions of the API.

Parameters
[in]sessionThe ARCore session.
[in]frameThe current frame.
[out]out_point_cloudPointer to an ArPointCloud* receive the address of the point cloud.
Returns
#AR_SUCCESS or any of:
  • #AR_ERROR_DEADLINE_EXCEEDED if frame is not the latest frame from by ArSession_update().
  • #AR_ERROR_RESOURCE_EXHAUSTED if too many point clouds are currently held.

◆ ArFrame_create()

void ArFrame_create ( const ArSession session,
ArFrame **  out_frame 
)

Allocates a new ArFrame object, storing the pointer into *out_frame.

Note: the same ArFrame can be used repeatedly when calling ArSession_update.

◆ ArFrame_destroy()

void ArFrame_destroy ( ArFrame frame)

Releases an ArFrame and any references it holds.

◆ ArFrame_getDisplayGeometryChanged()

void ArFrame_getDisplayGeometryChanged ( const ArSession session,
const ArFrame frame,
int32_t *  out_geometry_changed 
)

Checks if the display rotation or viewport geometry changed since the previous call to ArSession_update(). The application should re-query ArCamera_getProjectionMatrix() and ArFrame_transformDisplayUvCoords() whenever this emits non-zero.

◆ ArFrame_getLightEstimate()

void ArFrame_getLightEstimate ( const ArSession session,
const ArFrame frame,
ArLightEstimate out_light_estimate 
)

Gets the current ambient light estimate, if light estimation was enabled.

Parameters
[in]sessionThe ARCore session.
[in]frameThe current frame.
[in,out]out_light_estimateThe light estimate to fill. This object must have been previously created with ArLightEstimate_create().

◆ ArFrame_getTimestamp()

void ArFrame_getTimestamp ( const ArSession session,
const ArFrame frame,
int64_t *  out_timestamp_ns 
)

Returns the timestamp in nanoseconds when this image was captured. This can be used to detect dropped frames or measure the camera frame rate. The time base of this value is specifically not defined, but it is likely similar to clock_gettime(CLOCK_BOOTTIME).

◆ ArFrame_getUpdatedAnchors()

void ArFrame_getUpdatedAnchors ( const ArSession session,
const ArFrame frame,
ArAnchorList out_anchor_list 
)

Gets the set of anchors that were changed by the ArSession_update() that produced this Frame.

Parameters
[in]sessionThe ARCore session
[in]frameThe current frame.
[in,out]out_anchor_listThe list to fill. This list must have already been allocated with ArAnchorList_create(). If previously used, the list will first be cleared.

◆ ArFrame_getUpdatedTrackables()

void ArFrame_getUpdatedTrackables ( const ArSession session,
const ArFrame frame,
ArTrackableType  filter_type,
ArTrackableList out_trackable_list 
)

Gets the set of trackables of a particular type that were changed by the ArSession_update() call that produced this Frame.

Parameters
[in]sessionThe ARCore session
[in]frameThe current frame.
[in]filter_typeThe type(s) of trackables to return. See ::ArTrackableType for legal values.
[in,out]out_trackable_listThe list to fill. This list must have already been allocated with ArTrackableList_create(). If previously used, the list will first be cleared.

◆ ArFrame_hitTest()

void ArFrame_hitTest ( const ArSession session,
const ArFrame frame,
float  pixel_x,
float  pixel_y,
ArHitResultList hit_result_list 
)

Performs a ray cast from the user's device in the direction of the given location in the camera view. Intersections with detected scene geometry are returned, sorted by distance from the device; the nearest intersection is returned first.

Note: Significant geometric leeway is given when returning hit results. For example, a plane hit may be generated if the ray came close, but did not actually hit within the plane extents or plane bounds (ArPlane_isPoseInExtents() and ArPlane_isPoseInPolygon() can be used to determine these cases). A point (point cloud) hit is generated when a point is roughly within one finger-width of the provided screen coordinates.

The resulting list is ordered by distance, with the nearest hit first

Note: If not tracking, the hit_result_list will be empty.
Note: If called on an old frame (not the latest produced by ArSession_update() the hit_result_list will be empty).

Parameters
[in]sessionThe ARCore session.
[in]frameThe current frame.
[in]pixel_xLogical X position within the view, as from an Android UI event.
[in]pixel_yLogical X position within the view.
[in,out]hit_result_listThe list to fill. This list must have been previously allocated using ArHitResultList_create(). If the list has been previously used, it will first be cleared.

◆ ArFrame_transformDisplayUvCoords()

void ArFrame_transformDisplayUvCoords ( const ArSession session,
const ArFrame frame,
int32_t  num_elements,
const float *  uvs_in,
float *  uvs_out 
)

Transform the given texture coordinates to correctly show the background image. This will account for the display rotation, and any additional required adjustment. For performance, this function should be called only if ArFrame_hasDisplayGeometryChanged() emits true.

Parameters
[in]sessionThe ARCore session
[in]frameThe current frame.
[in]num_elementsThe number of floats to transform. Must be a multiple of 2. uvs_in and uvs_out must point to arrays of at least this many floats.
[in]uvs_inInput UV coordinates in normalized screen space.
[in,out]uvs_outOutput UV coordinates in texture coordinates.