# ArConfig

Session configuration.

To configure an `https://developers.google.com/ar/reference/c/group/ar-session#arsession:`


1. Use `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_create` to create an `https://developers.google.com/ar/reference/c/group/ar-config#arconfig` object.
2. Call any number of configuration functions on the newly created object.
3. To apply the configuration to the session, use `https://developers.google.com/ar/reference/c/group/ar-session#arsession_configure`.
4. To release the memory used by the `https://developers.google.com/ar/reference/c/group/ar-config#arconfig` object, use `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_destroy`.

<br />

Note: None of the `ArConfig_set*()` functions will actually affect the state of the given `https://developers.google.com/ar/reference/c/group/ar-session#arsession` until `https://developers.google.com/ar/reference/c/group/ar-session#arsession_configure` is called.

## Summary

| ### Enumerations ||
|---|---|
| `https://developers.google.com/ar/reference/c/group/ar-config#araugmentedfacemode{ https://developers.google.com/ar/reference/c/group/ar-config#ar_augmented_face_mode_disabled = 0, https://developers.google.com/ar/reference/c/group/ar-config#ar_augmented_face_mode_mesh3d = 2 }` | enumSelects the behavior of Augmented Faces subsystem. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arcloudanchormode{ https://developers.google.com/ar/reference/c/group/ar-config#ar_cloud_anchor_mode_disabled = 0, https://developers.google.com/ar/reference/c/group/ar-config#ar_cloud_anchor_mode_enabled = 1 }` | enumDescribes the desired behavior of the ARCore Cloud Anchor API. |
| `https://developers.google.com/ar/reference/c/group/ar-config#ardepthmode{ https://developers.google.com/ar/reference/c/group/ar-config#ar_depth_mode_disabled = 0, https://developers.google.com/ar/reference/c/group/ar-config#ar_depth_mode_automatic = 1, https://developers.google.com/ar/reference/c/group/ar-config#ar_depth_mode_raw_depth_only = 3 }` | enumSelects the desired depth mode. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arflashmode{ https://developers.google.com/ar/reference/c/group/ar-config#ar_flash_mode_off = 0, https://developers.google.com/ar/reference/c/group/ar-config#ar_flash_mode_torch = 2 }` | enumSelects the desired behavior of the camera flash subsystem. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arfocusmode{ https://developers.google.com/ar/reference/c/group/ar-config#ar_focus_mode_fixed = 0, https://developers.google.com/ar/reference/c/group/ar-config#ar_focus_mode_auto = 1 }` | enumSelects the desired behavior of the camera focus subsystem. |
| `https://developers.google.com/ar/reference/c/group/ar-config#argeospatialmode{ https://developers.google.com/ar/reference/c/group/ar-config#ar_geospatial_mode_disabled = 0, https://developers.google.com/ar/reference/c/group/ar-config#ar_geospatial_mode_enabled = 2 }` | enumDescribes the desired behavior of the ARCore Geospatial API. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arimagestabilizationmode{ https://developers.google.com/ar/reference/c/group/ar-config#ar_image_stabilization_mode_off = 0, https://developers.google.com/ar/reference/c/group/ar-config#ar_image_stabilization_mode_eis = 1 }` | enumDescribes the behavior of the Electronic Image Stabilization (EIS) API. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arlightestimationmode{ https://developers.google.com/ar/reference/c/group/ar-config#ar_light_estimation_mode_disabled = 0, https://developers.google.com/ar/reference/c/group/ar-config#ar_light_estimation_mode_ambient_intensity = 1, https://developers.google.com/ar/reference/c/group/ar-config#ar_light_estimation_mode_environmental_hdr = 2 }` | enumSelect the behavior of the Lighting Estimation subsystem. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arplanefindingmode{ https://developers.google.com/ar/reference/c/group/ar-config#ar_plane_finding_mode_disabled = 0, https://developers.google.com/ar/reference/c/group/ar-config#ar_plane_finding_mode_horizontal = 1, https://developers.google.com/ar/reference/c/group/ar-config#ar_plane_finding_mode_vertical = 2, https://developers.google.com/ar/reference/c/group/ar-config#ar_plane_finding_mode_horizontal_and_vertical = 3 }` | enumSelect the behavior of the plane detection subsystem. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arsemanticmode{ https://developers.google.com/ar/reference/c/group/ar-config#ar_semantic_mode_disabled = 0, https://developers.google.com/ar/reference/c/group/ar-config#ar_semantic_mode_enabled = 1 }` | enumDescribes the desired behavior of Scene Semantics. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arstreetscapegeometrymode{ https://developers.google.com/ar/reference/c/group/ar-config#ar_streetscape_geometry_mode_disabled = 0, https://developers.google.com/ar/reference/c/group/ar-config#ar_streetscape_geometry_mode_enabled = 1 }` | enumDescribes the desired behavior of the Geospatial Streetscape Geometry API. |
| `https://developers.google.com/ar/reference/c/group/ar-config#artextureupdatemode{ https://developers.google.com/ar/reference/c/group/ar-config#ar_texture_update_mode_bind_to_texture_external_oes = 0, https://developers.google.com/ar/reference/c/group/ar-config#ar_texture_update_mode_expose_hardware_buffer = 1 }` | enumDescribes how ARCore will update the camera texture. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arupdatemode{ https://developers.google.com/ar/reference/c/group/ar-config#ar_update_mode_blocking = 0, https://developers.google.com/ar/reference/c/group/ar-config#ar_update_mode_latest_camera_image = 1 }` | enumSelects the behavior of `https://developers.google.com/ar/reference/c/group/ar-session#arsession_update`. |

| ### Typedefs ||
|---|---|
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig` | typedef `struct ArConfig_` An opaque session configuration object ([value type](https://developers.google.com/ar/reference/c/group/concepts#object-ownership)). |

| ### Functions ||
|---|---|
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_create(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, https://developers.google.com/ar/reference/c/group/ar-config#arconfig **out_config)` | `void` Creates a new configuration object and initializes it to a sensible default configuration. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_destroy(https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config)` | `void` Releases memory used by the provided configuration object. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_getaugmentedfacemode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, const https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#araugmentedfacemode *augmented_face_mode)` | `void` Stores the currently configured augmented face mode into `*augmented_face_mode`. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_getaugmentedimagedatabase(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, const https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-augmented-image-database#araugmentedimagedatabase *out_augmented_image_database)` | `void` Returns the image database from the session configuration. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_getcloudanchormode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, const https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#arcloudanchormode *out_cloud_anchor_mode)` | `void` Gets the current Cloud Anchor mode from the `https://developers.google.com/ar/reference/c/group/ar-config#arconfig`. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_getdepthmode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, const https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#ardepthmode *out_depth_mode)` | `void` Gets the currently configured desired `https://developers.google.com/ar/reference/c/group/ar-config#ardepthmode`. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_getflashmode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, const https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#arflashmode *out_flash_mode)` | `void` Gets the current camera flash mode set on this config object. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_getfocusmode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#arfocusmode *focus_mode)` | `void` Stores the currently configured desired focus mode into `*focus_mode`. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_getgeospatialmode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, const https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#argeospatialmode *out_geospatial_mode)` | `void` Gets the current geospatial mode set on the configuration. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_getimagestabilizationmode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, const https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#arimagestabilizationmode *out_image_stabilization_mode)` | `void` Gets the camera image stabilization mode set on this config object. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_getinstantplacementmode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, const https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-instant-placement-point#arinstantplacementmode *instant_placement_mode)` | `void` Gets the current Instant Placement Region mode from the `https://developers.google.com/ar/reference/c/group/ar-config#arconfig`. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_getlightestimationmode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, const https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#arlightestimationmode *light_estimation_mode)` | `void` Stores the currently configured `https://developers.google.com/ar/reference/c/group/ar-config#arlightestimationmode` mode into `*light_estimation_mode`. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_getplanefindingmode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, const https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#arplanefindingmode *plane_finding_mode)` | `void` Stores the currently configured plane finding mode into `*plane_finding_mode`. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_getsemanticmode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, const https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#arsemanticmode *out_semantic_mode)` | `void` Gets the currently configured `https://developers.google.com/ar/reference/c/group/ar-config#arsemanticmode`. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_getstreetscapegeometrymode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, const https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#arstreetscapegeometrymode *out_streetscape_geometry_mode)` | `void` Gets the current Streetscape Geometry mode set on the configuration. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_gettextureupdatemode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, const https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#artextureupdatemode *out_texture_update_mode)` | `void` Stores the desired texture update mode from the given `config` into `out_texture_update_mode`. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_getupdatemode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, const https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#arupdatemode *update_mode)` | `void` Stores the currently configured behavior of `https://developers.google.com/ar/reference/c/group/ar-session#arsession_update` into `*update_mode`. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_setaugmentedfacemode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#araugmentedfacemode augmented_face_mode)` | `void` Sets the desired face mode. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_setaugmentedimagedatabase(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, const https://developers.google.com/ar/reference/c/group/ar-augmented-image-database#araugmentedimagedatabase *augmented_image_database)` | `void` Sets the image database in the session configuration. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_setcloudanchormode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#arcloudanchormode cloud_anchor_mode)` | `void` Sets the desired cloud configuration. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_setdepthmode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#ardepthmode mode)` | `void` Sets the desired `https://developers.google.com/ar/reference/c/group/ar-config#ardepthmode`. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_setflashmode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#arflashmode flash_mode)` | `void` Sets the camera flash mode. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_setfocusmode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#arfocusmode focus_mode)` | `void` On supported devices, selects the desired camera focus mode. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_setgeospatialmode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#argeospatialmode geospatial_mode)` | `void` Sets the Geospatial mode. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_setimagestabilizationmode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#arimagestabilizationmode image_stabilization_mode)` | `void` Sets the camera image stabilization mode. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_setinstantplacementmode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-instant-placement-point#arinstantplacementmode instant_placement_mode)` | `void` Sets the current Instant Placement mode from the `https://developers.google.com/ar/reference/c/group/ar-config#arconfig`. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_setlightestimationmode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#arlightestimationmode light_estimation_mode)` | `void` Sets the desired `https://developers.google.com/ar/reference/c/group/ar-config#arlightestimationmode`. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_setplanefindingmode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#arplanefindingmode plane_finding_mode)` | `void` Sets the desired plane finding mode. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_setsemanticmode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#arsemanticmode semantic_mode)` | `void` Sets the desired configuration for the Scene Semantics API. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_setstreetscapegeometrymode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#arstreetscapegeometrymode streetscape_geometry_mode)` | `void` Sets the desired configuration for the Streetscape Geometry API. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_settextureupdatemode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#artextureupdatemode texture_update_mode)` | `void` Sets the desired texture update mode. |
| `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_setupdatemode(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, https://developers.google.com/ar/reference/c/group/ar-config#arconfig *config, https://developers.google.com/ar/reference/c/group/ar-config#arupdatemode update_mode)` | `void` Sets the behavior of `https://developers.google.com/ar/reference/c/group/ar-session#arsession_update`. |

## Enumerations

### ArAugmentedFaceMode

```
 ArAugmentedFaceMode
```
Selects the behavior of Augmented Faces subsystem.

Default value is `https://developers.google.com/ar/reference/c/group/ar-config#ar_augmented_face_mode_disabled`.

| Properties ||
|---|---|
| `AR_AUGMENTED_FACE_MODE_DISABLED` | Disable augmented face mode. |
| `AR_AUGMENTED_FACE_MODE_MESH3D` | Face 3D mesh is enabled. Augmented Faces is currently only supported when using the front-facing (selfie) camera. |

### ArCloudAnchorMode

```
 ArCloudAnchorMode
```
Describes the desired behavior of the ARCore Cloud Anchor API.

The Cloud Anchor API uses feature maps to persist an anchor throughout sessions and across devices. See the [Cloud Anchors developer guide](https://developers.google.com/ar/develop/c/cloud-anchors/developer-guide) for more information.

The default value is `https://developers.google.com/ar/reference/c/group/ar-config#ar_cloud_anchor_mode_disabled`. Use `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_setcloudanchormode` to set the Cloud Anchor API mode and `https://developers.google.com/ar/reference/c/group/ar-session#arsession_configure` to configure the session.

| Properties ||
|---|---|
| `AR_CLOUD_ANCHOR_MODE_DISABLED` | The Cloud Anchor API is disabled. Calling `https://developers.google.com/ar/reference/c/group/ar-session#arsession_hostcloudanchorasync` and `https://developers.google.com/ar/reference/c/group/ar-session#arsession_resolvecloudanchorasync` will return `https://developers.google.com/ar/reference/c/group/shared-types#ar_error_cloud_anchors_not_configured`. This is the default value. |
| `AR_CLOUD_ANCHOR_MODE_ENABLED` | The Cloud Anchor API is enabled. `https://developers.google.com/ar/reference/c/group/ar-session#arsession_hostcloudanchorasync` and `https://developers.google.com/ar/reference/c/group/ar-session#arsession_resolvecloudanchorasync` can be used to host and resolve Cloud Anchors. Using this mode requires your app to do the following: - Include the [`ACCESS_INTERNET`](https://developer.android.com/training/basics/network-ops/connecting) permission to the app's AndroidManifest; otherwise, `https://developers.google.com/ar/reference/c/group/ar-session#arsession_configure` returns `https://developers.google.com/ar/reference/c/group/shared-types#ar_error_internet_permission_not_granted`. - Configure [Keyless or API Key authorization](https://developers.google.com/ar/develop/c/cloud-anchors/developer-guide#authorize_your_app_to_call_the_arcore_api). <br /> Use `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_setcloudanchormode` to set the Cloud Anchor API mode and `https://developers.google.com/ar/reference/c/group/ar-session#arsession_configure` to configure the session. |

### ArDepthMode

```
 ArDepthMode
```
Selects the desired depth mode.

Not all devices support all modes, use `https://developers.google.com/ar/reference/c/group/ar-session#arsession_isdepthmodesupported` to find whether the current device and the selected camera support a particular depth mode.

| Properties ||
|---|---|
| `AR_DEPTH_MODE_AUTOMATIC` | On supported devices the best possible depth is estimated based on hardware and software sources. Available sources of automatic depth are: - Depth from motion, using the main RGB camera - Hardware depth sensor, such as a time-of-flight sensor (or ToF sensor) <br /> Provides depth estimation for every pixel in the image, and works best for static scenes. For a list of supported devices, see: <https://developers.google.com/ar/devices> Adds significant computational load. With this mode enabled, `https://developers.google.com/ar/reference/c/group/ar-frame#arframe_hittest` also returns `https://developers.google.com/ar/reference/c/group/ar-depth-point#ardepthpoint` in the output `https://developers.google.com/ar/reference/c/group/ar-hit-result#arhitresultlist`, which are sampled from the generated depth image for the current frame if available. |
| `AR_DEPTH_MODE_DISABLED` | No depth information will be provided. Calling `https://developers.google.com/ar/reference/c/group/ar-frame#arframe_acquiredepthimage16bits` or `https://developers.google.com/ar/reference/c/group/ar-frame#arframe_acquirerawdepthimage16bits` will return `https://developers.google.com/ar/reference/c/group/shared-types#ar_error_illegal_state`. |
| `AR_DEPTH_MODE_RAW_DEPTH_ONLY` | On [ARCore supported devices](https://developers.google.com/ar/devices) that also support the Depth API, provides a "raw", mostly unfiltered, depth image (`https://developers.google.com/ar/reference/c/group/ar-frame#arframe_acquirerawdepthimage16bits`) and depth confidence image (`https://developers.google.com/ar/reference/c/group/ar-frame#arframe_acquirerawdepthconfidenceimage`). The raw depth image is sparse and does not provide valid depth for all pixels. Pixels without a valid depth estimate have a pixel value of 0. Raw depth data is also available when `https://developers.google.com/ar/reference/c/group/ar-config#ar_depth_mode_automatic` is selected. Raw depth is intended to be used in cases that involve understanding of the geometry in the environment. |

### ArFlashMode

```
 ArFlashMode
```
Selects the desired behavior of the camera flash subsystem.

See the [documentation page](https://developers.google.com/ar/develop/camera/flash/c) for more information on using the device's flash.

| Properties ||
|---|---|
| `AR_FLASH_MODE_OFF` | Flash is off. |
| `AR_FLASH_MODE_TORCH` | Flash is on. |

### ArFocusMode

```
 ArFocusMode
```
Selects the desired behavior of the camera focus subsystem.

| Properties ||
|---|---|
| `AR_FOCUS_MODE_AUTO` | Auto-focus is enabled. |
| `AR_FOCUS_MODE_FIXED` | Focus is fixed. |

### ArGeospatialMode

```
 ArGeospatialMode
```
Describes the desired behavior of the ARCore Geospatial API.

The Geospatial API uses a combination of Google's Visual Positioning System (VPS) and GPS to determine the geospatial pose.

The Geospatial API is able to provide the best user experience when it is able to generate high accuracy poses. However, the Geospatial API can be used anywhere, as long as the device is able to determine its location, even if the available location information has low accuracy.


- In areas with VPS coverage, the Geospatial API is able to generate high accuracy poses. This can work even where GPS accuracy is low, such as dense urban environments. Under typical conditions, VPS can be expected to provide positional accuracy typically better than 5 meters and often around 1 meter, and a rotational accuracy of better than 5 degrees. Use `https://developers.google.com/ar/reference/c/group/ar-session#arsession_checkvpsavailabilityasync` to determine if a given location has VPS coverage.
- In outdoor environments with few or no overhead obstructions, GPS may be sufficient to generate high accuracy poses. GPS accuracy may be low in dense urban environments and indoors.

<br />

A small number of ARCore supported devices do not support the Geospatial API. Use `https://developers.google.com/ar/reference/c/group/ar-session#arsession_isgeospatialmodesupported` to determine if the current device is supported. Affected devices are also indicated on the [ARCore supported devices page](https://developers.google.com/ar/devices).

When the Geospatial API and the Depth API are enabled, output images from the Depth API will include terrain and building geometry when in a location with VPS coverage. See the [Geospatial Depth Developer Guide](https://developers.google.com/ar/develop/c/depth/geospatial-depth) for more information.

The default value is `https://developers.google.com/ar/reference/c/group/ar-config#ar_geospatial_mode_disabled`. Use `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_setgeospatialmode` to set the desired mode.

| Properties ||
|---|---|
| `AR_GEOSPATIAL_MODE_DISABLED` | The Geospatial API is disabled. When a configuration with `https://developers.google.com/ar/reference/c/group/ar-config#ar_geospatial_mode_disabled` becomes active on the `https://developers.google.com/ar/reference/c/group/ar-session#arsession`, current `https://developers.google.com/ar/reference/c/group/ar-earth#arearth` and `https://developers.google.com/ar/reference/c/group/ar-anchor#aranchor` objects created from `https://developers.google.com/ar/reference/c/group/ar-earth#arearth_acquirenewanchor` will stop updating; have their `https://developers.google.com/ar/reference/c/group/shared-types#artrackingstate` set to `https://developers.google.com/ar/reference/c/group/shared-types#ar_tracking_state_stopped` and should be released; and `https://developers.google.com/ar/reference/c/group/ar-session#arsession_acquireearth` will return `NULL`. If re-enabled, you will need to call `https://developers.google.com/ar/reference/c/group/ar-session#arsession_acquireearth` to acquire `https://developers.google.com/ar/reference/c/group/ar-earth#arearth` again. |
| `AR_GEOSPATIAL_MODE_ENABLED` | The Geospatial API is enabled. `https://developers.google.com/ar/reference/c/group/ar-session#arsession_acquireearth` will create valid `https://developers.google.com/ar/reference/c/group/ar-earth#arearth` objects when a configuration becomes active with this mode through `https://developers.google.com/ar/reference/c/group/ar-session#arsession_configure`. Using this mode requires your app do the following: - Add the [ACCESS_INTERNET](https://developer.android.com/training/basics/network-ops/connecting) permission to the AndroidManifest; otherwise, `https://developers.google.com/ar/reference/c/group/ar-session#arsession_configure` returns `https://developers.google.com/ar/reference/c/group/shared-types#ar_error_internet_permission_not_granted`. - Include the Google Play Services Location Library as a dependency for your app. See [Declare dependencies for Google Play services](https://developers.google.com/android/guides/setup#declare-dependencies) for instructions on how to include this library in your app. If this library is not linked, `https://developers.google.com/ar/reference/c/group/ar-session#arsession_configure` returns `https://developers.google.com/ar/reference/c/group/shared-types#ar_error_google_play_services_location_library_not_linked`. - Request and be granted the [Android ACCESS_FINE_LOCATION permission](https://developer.android.com/training/location/permissions); otherwise, `https://developers.google.com/ar/reference/c/group/ar-session#arsession_configure` returns `https://developers.google.com/ar/reference/c/group/shared-types#ar_error_fine_location_permission_not_granted`. <br /> Location is tracked only while `https://developers.google.com/ar/reference/c/group/ar-session#arsession` is resumed. While `https://developers.google.com/ar/reference/c/group/ar-session#arsession` is paused, `https://developers.google.com/ar/reference/c/group/ar-earth#arearth's``https://developers.google.com/ar/reference/c/group/shared-types#artrackingstate` will be `https://developers.google.com/ar/reference/c/group/shared-types#ar_tracking_state_paused`. For more information, see documentation on [the Geospatial API on Google Developers](https://developers.google.com/ar/develop/c/geospatial/developer-guide). When the Geospatial API and the Depth API are enabled, output images from the Depth API will include terrain and building geometry when in a location with VPS coverage. See the [Geospatial Depth Developer Guide](https://developers.google.com/ar/develop/c/depth/geospatial-depth) for more information. This mode is not compatible with the front-facing (selfie) camera. If `https://developers.google.com/ar/reference/c/group/ar-config#argeospatialmode` is `https://developers.google.com/ar/reference/c/group/ar-config#ar_geospatial_mode_enabled` on a session using `https://developers.google.com/ar/reference/c/group/ar-camera-config#ar_camera_config_facing_direction_front`, `https://developers.google.com/ar/reference/c/group/ar-session#arsession_configure` will return `https://developers.google.com/ar/reference/c/group/shared-types#ar_error_unsupported_configuration`. Not all devices support `https://developers.google.com/ar/reference/c/group/ar-config#ar_geospatial_mode_enabled`, use `https://developers.google.com/ar/reference/c/group/ar-session#arsession_isgeospatialmodesupported` to check if the current device and selected camera support enabling this mode. |

### ArImageStabilizationMode

```
 ArImageStabilizationMode
```
Describes the behavior of the Electronic Image Stabilization (EIS) API.

When enabled, EIS smoothes the camera feed and helps correct video shakes in the camera preview. See the [Electronic Image Stabilization Developer Guide](https://developers.google.com/ar/develop/c/electronic-image-stabilization) for more information.

Not all devices support all modes. Use `https://developers.google.com/ar/reference/c/group/ar-session#arsession_isimagestabilizationmodesupported` to detect if a `https://developers.google.com/ar/reference/c/group/ar-config#arimagestabilizationmode` is supported with the selected camera configuration.

Attempting to use `https://developers.google.com/ar/reference/c/group/ar-session#arsession_configure` to configure a `https://developers.google.com/ar/reference/c/group/ar-config#arimagestabilizationmode` mode on a device that isn't supported, `https://developers.google.com/ar/reference/c/group/ar-session#arsession_configure` will return [AR_ERROR_UNSUPPORTED_CONFIGURATION](https://developers.google.com/ar/reference/c/group/shared-types#ar_error_unsupported_configuration).

The default value is [AR_IMAGE_STABILIZATION_MODE_OFF](https://developers.google.com/ar/reference/c/group/ar-config#ar_image_stabilization_mode_off). Use `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_setimagestabilizationmode` to set the desired mode.

| Properties ||
|---|---|
| `AR_IMAGE_STABILIZATION_MODE_EIS` | Image stabilization is on. `https://developers.google.com/ar/reference/c/group/ar-frame#arframe_transformcoordinates3d` can be use to convert 2D coordinates to `https://developers.google.com/ar/reference/c/group/ar-frame#ar_coordinates_3d_eis_texture_normalized` and `https://developers.google.com/ar/reference/c/group/ar-frame#ar_coordinates_3d_eis_normalized_device_coordinates`. See the [Electronic Image Stabilization Developer Guide](https://developers.google.com/ar/develop/c/electronic-image-stabilization) for more information. |
| `AR_IMAGE_STABILIZATION_MODE_OFF` | Image stabilization is off. This is the default mode. |

### ArLightEstimationMode

```
 ArLightEstimationMode
```
Select the behavior of the Lighting Estimation subsystem.

| Properties ||
|---|---|
| `AR_LIGHT_ESTIMATION_MODE_AMBIENT_INTENSITY` | Lighting Estimation is enabled, generating a single-value intensity estimate and three (R, G, B) color correction values. |
| `AR_LIGHT_ESTIMATION_MODE_DISABLED` | Lighting Estimation is disabled. |
| `AR_LIGHT_ESTIMATION_MODE_ENVIRONMENTAL_HDR` | Lighting Estimation is enabled, generating inferred Environmental HDR Lighting Estimation in linear color space. Note, `https://developers.google.com/ar/reference/c/group/ar-config#ar_light_estimation_mode_environmental_hdr` is not supported when using the front-facing (selfie) camera. |

### ArPlaneFindingMode

```
 ArPlaneFindingMode
```
Select the behavior of the plane detection subsystem.

| Properties ||
|---|---|
| `AR_PLANE_FINDING_MODE_DISABLED` | Plane detection is disabled. |
| `AR_PLANE_FINDING_MODE_HORIZONTAL` | Detection of only horizontal planes is enabled. |
| `AR_PLANE_FINDING_MODE_HORIZONTAL_AND_VERTICAL` | Detection of horizontal and vertical planes is enabled. |
| `AR_PLANE_FINDING_MODE_VERTICAL` | Detection of only vertical planes is enabled. |

### ArSemanticMode

```
 ArSemanticMode
```
Describes the desired behavior of Scene Semantics.

Scene Semantics uses a machine learning model to label each pixel from the camera feed with a `https://developers.google.com/ar/reference/c/group/ar-semantic-label#arsemanticlabel`. See the [Scene Semantics Developer Guide](https://developers.google.com/ar/develop/c/scene-semantics) for more information.

The Scene Semantics API is currently able to distinguish between outdoor labels specified by `https://developers.google.com/ar/reference/c/group/ar-semantic-label#arsemanticlabel`. Usage indoors is currently unsupported and may yield unreliable results.

A small number of ARCore supported devices do not support the Scene Semantics API. Use `https://developers.google.com/ar/reference/c/group/ar-session#arsession_issemanticmodesupported` to query for support for Scene Semantics. Affected devices are also indicated on the [ARCore supported devices page](https://developers.google.com/ar/devices).

The default value is `https://developers.google.com/ar/reference/c/group/ar-config#ar_semantic_mode_disabled`. Use `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_setsemanticmode` to set the desired mode.

| Properties ||
|---|---|
| `AR_SEMANTIC_MODE_DISABLED` | The Scene Semantics API is disabled. Calls to `https://developers.google.com/ar/reference/c/group/ar-frame#arframe_acquiresemanticimage`, `https://developers.google.com/ar/reference/c/group/ar-frame#arframe_acquiresemanticconfidenceimage`, and `https://developers.google.com/ar/reference/c/group/ar-frame#arframe_getsemanticlabelfraction` will not return valid results. This is the default mode. |
| `AR_SEMANTIC_MODE_ENABLED` | The Scene Semantics API is enabled. Calls to `https://developers.google.com/ar/reference/c/group/ar-frame#arframe_acquiresemanticimage`, `https://developers.google.com/ar/reference/c/group/ar-frame#arframe_acquiresemanticconfidenceimage`, and `https://developers.google.com/ar/reference/c/group/ar-frame#arframe_getsemanticlabelfraction` will return valid results. Use `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_setsemanticmode` to set this mode. |

### ArStreetscapeGeometryMode

```
 ArStreetscapeGeometryMode
```
Describes the desired behavior of the Geospatial Streetscape Geometry API.

The Streetscape Geometry API provides polygon meshes of terrain, buildings, and other structures in a radius surrounding the device. See the [Streetscape Geometry Developer Guide](https://developers.google.com/ar/develop/c/geospatial/streetscape-geometry) for additional information.

When Streetscape Geometry is enabled, `https://developers.google.com/ar/reference/c/group/ar-session#arsession_getalltrackables` and `https://developers.google.com/ar/reference/c/group/ar-frame#arframe_getupdatedtrackables` may additionally return `https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometry` trackables.

The Streetscape Geometry API requires both `https://developers.google.com/ar/reference/c/group/ar-config#arstreetscapegeometrymode` to be set to `https://developers.google.com/ar/reference/c/group/ar-config#ar_streetscape_geometry_mode_enabled` and `https://developers.google.com/ar/reference/c/group/ar-config#argeospatialmode` to be set to `https://developers.google.com/ar/reference/c/group/ar-config#ar_geospatial_mode_enabled`.

The default value is `https://developers.google.com/ar/reference/c/group/ar-config#ar_streetscape_geometry_mode_disabled`. Use `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_setstreetscapegeometrymode` to set the desired mode.

| Properties ||
|---|---|
| `AR_STREETSCAPE_GEOMETRY_MODE_DISABLED` | The Streetscape Geometry API is disabled. This is the default mode. |
| `AR_STREETSCAPE_GEOMETRY_MODE_ENABLED` | The Streetscape Geometry API is enabled. `https://developers.google.com/ar/reference/c/group/ar-session#arsession_getalltrackables` and `https://developers.google.com/ar/reference/c/group/ar-frame#arframe_getupdatedtrackables` may additionally return `https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometry` trackables. This mode requires `https://developers.google.com/ar/reference/c/group/ar-config#argeospatialmode` to be set to `https://developers.google.com/ar/reference/c/group/ar-config#ar_geospatial_mode_enabled`. Use `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_setstreetscapegeometrymode` to set this mode. |

### ArTextureUpdateMode

```
 ArTextureUpdateMode
```
Describes how ARCore will update the camera texture.

See [Vulkan Rendering developer guide](https://developers.google.com/ar/develop/c/vulkan) for more information.

The default value is `https://developers.google.com/ar/reference/c/group/ar-config#ar_texture_update_mode_bind_to_texture_external_oes`. Use `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_settextureupdatemode` to set the desired mode.

| Properties ||
|---|---|
| `AR_TEXTURE_UPDATE_MODE_BIND_TO_TEXTURE_EXTERNAL_OES` | ARCore provides the camera image through the `GL_TEXTURE_EXTERNAL_OES` texture provided to `https://developers.google.com/ar/reference/c/group/ar-session#arsession_setcameratexturename` or `https://developers.google.com/ar/reference/c/group/ar-session#arsession_setcameratexturenames`. This is the default mode. |
| `AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER` | ARCore provides the camera image through an `AHardwareBuffer`. The hardware buffer for an `https://developers.google.com/ar/reference/c/group/ar-frame#arframe` is accessible via `https://developers.google.com/ar/reference/c/group/ar-frame#arframe_gethardwarebuffer`. See documentation on [Native Hardware Buffer](https://developer.android.com/ndk/reference/group/a-hardware-buffer) in the Android NDK. The client app is responsible for binding it to a `GL_TEXTURE_EXTERNAL_OES` (OpenGL ES) or `VkImage` (Vulkan). When a configuration is active with `https://developers.google.com/ar/reference/c/group/ar-config#ar_texture_update_mode_expose_hardware_buffer`, texture names provided to `https://developers.google.com/ar/reference/c/group/ar-session#arsession_setcameratexturename` and `https://developers.google.com/ar/reference/c/group/ar-session#arsession_setcameratexturenames` are ignored. This is only available on Android API levels 27 and above. Using `https://developers.google.com/ar/reference/c/group/ar-session#arsession_configure` to set [AR_TEXTURE_UPDATE_MODE_EXPOSE_HARDWARE_BUFFER](https://developers.google.com/ar/reference/c/group/ar-config#ar_texture_update_mode_expose_hardware_buffer) on an incompatible device will return `https://developers.google.com/ar/reference/c/group/shared-types#ar_error_unsupported_configuration`. |

### ArUpdateMode

```
 ArUpdateMode
```
Selects the behavior of `https://developers.google.com/ar/reference/c/group/ar-session#arsession_update`.

| Properties ||
|---|---|
| `AR_UPDATE_MODE_BLOCKING` | `https://developers.google.com/ar/reference/c/group/ar-session#arsession_update` will wait until a new camera image is available, or until the built-in timeout (currently 66ms) is reached. On most devices the camera is configured to capture 30 frames per second. If the camera image does not arrive by the built-in timeout, then `https://developers.google.com/ar/reference/c/group/ar-session#arsession_update` will return the most recent `https://developers.google.com/ar/reference/c/group/ar-frame#arframe` object. |
| `AR_UPDATE_MODE_LATEST_CAMERA_IMAGE` | `https://developers.google.com/ar/reference/c/group/ar-session#arsession_update` will return immediately without blocking. If no new camera image is available, then `https://developers.google.com/ar/reference/c/group/ar-session#arsession_update` will return the most recent `https://developers.google.com/ar/reference/c/group/ar-frame#arframe` object. |

## Typedefs

### ArConfig

```
struct ArConfig_ ArConfig
```
An opaque session configuration object ([value type](https://developers.google.com/ar/reference/c/group/concepts#object-ownership)).


- Create with: `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_create`
- Release with: `https://developers.google.com/ar/reference/c/group/ar-config#arconfig_destroy`

<br />

## Functions

### ArConfig_create

```
void ArConfig_create(
  const ArSession *session,
  ArConfig **out_config
)
```
Creates a new configuration object and initializes it to a sensible default configuration.

Plane detection and Lighting Estimation are enabled, and blocking update is selected. This configuration is guaranteed to be supported on all devices that support ARCore.

### ArConfig_destroy

```
void ArConfig_destroy(
  ArConfig *config
)
```
Releases memory used by the provided configuration object.

### ArConfig_getAugmentedFaceMode

```
void ArConfig_getAugmentedFaceMode(
  const ArSession *session,
  const ArConfig *config,
  ArAugmentedFaceMode *augmented_face_mode
)
```
Stores the currently configured augmented face mode into `*augmented_face_mode`.

### ArConfig_getAugmentedImageDatabase

```
void ArConfig_getAugmentedImageDatabase(
  const ArSession *session,
  const ArConfig *config,
  ArAugmentedImageDatabase *out_augmented_image_database
)
```
Returns the image database from the session configuration.

This function returns a copy of the internally stored image database, so any changes to the copy will not affect the current configuration or session.

If no `https://developers.google.com/ar/reference/c/group/ar-augmented-image-database#araugmentedimagedatabase` has been configured, a new empty database will be constructed using `https://developers.google.com/ar/reference/c/group/ar-augmented-image-database#araugmentedimagedatabase_create`.

### ArConfig_getCloudAnchorMode

```
void ArConfig_getCloudAnchorMode(
  const ArSession *session,
  const ArConfig *config,
  ArCloudAnchorMode *out_cloud_anchor_mode
)
```
Gets the current Cloud Anchor mode from the `https://developers.google.com/ar/reference/c/group/ar-config#arconfig`.

### ArConfig_getDepthMode

```
void ArConfig_getDepthMode(
  const ArSession *session,
  const ArConfig *config,
  ArDepthMode *out_depth_mode
)
```
Gets the currently configured desired `https://developers.google.com/ar/reference/c/group/ar-config#ardepthmode`.

### ArConfig_getFlashMode

```
void ArConfig_getFlashMode(
  const ArSession *session,
  const ArConfig *config,
  ArFlashMode *out_flash_mode
)
```
Gets the current camera flash mode set on this config object.


Details Parameters `session` The ARCore session. `config` The configuration object. `out_flash_mode` The current camera flash mode.

### ArConfig_getFocusMode

```
void ArConfig_getFocusMode(
  const ArSession *session,
  ArConfig *config,
  ArFocusMode *focus_mode
)
```
Stores the currently configured desired focus mode into `*focus_mode`.

Note: The desired focus mode may be different from the actual focus mode. See the [ARCore supported devices page](https://developers.google.com/ar/devices) for a list of affected devices.

### ArConfig_getGeospatialMode

```
void ArConfig_getGeospatialMode(
  const ArSession *session,
  const ArConfig *config,
  ArGeospatialMode *out_geospatial_mode
)
```
Gets the current geospatial mode set on the configuration.


Details Parameters `session` The ARCore session. `config` The configuration object. `out_geospatial_mode` The current geospatial mode set on the config.

### ArConfig_getImageStabilizationMode

```
void ArConfig_getImageStabilizationMode(
  const ArSession *session,
  const ArConfig *config,
  ArImageStabilizationMode *out_image_stabilization_mode
)
```
Gets the camera image stabilization mode set on this config object.


Details Parameters `session` The ARCore session. `config` The configuration object. `out_image_stabilization_mode` The current EIS mode.

### ArConfig_getInstantPlacementMode

```
void ArConfig_getInstantPlacementMode(
  const ArSession *session,
  const ArConfig *config,
  ArInstantPlacementMode *instant_placement_mode
)
```
Gets the current Instant Placement Region mode from the `https://developers.google.com/ar/reference/c/group/ar-config#arconfig`.

### ArConfig_getLightEstimationMode

```
void ArConfig_getLightEstimationMode(
  const ArSession *session,
  const ArConfig *config,
  ArLightEstimationMode *light_estimation_mode
)
```
Stores the currently configured `https://developers.google.com/ar/reference/c/group/ar-config#arlightestimationmode` mode into `*light_estimation_mode`.

### ArConfig_getPlaneFindingMode

```
void ArConfig_getPlaneFindingMode(
  const ArSession *session,
  const ArConfig *config,
  ArPlaneFindingMode *plane_finding_mode
)
```
Stores the currently configured plane finding mode into `*plane_finding_mode`.

### ArConfig_getSemanticMode

```
void ArConfig_getSemanticMode(
  const ArSession *session,
  const ArConfig *config,
  ArSemanticMode *out_semantic_mode
)
```
Gets the currently configured `https://developers.google.com/ar/reference/c/group/ar-config#arsemanticmode`.

### ArConfig_getStreetscapeGeometryMode

```
void ArConfig_getStreetscapeGeometryMode(
  const ArSession *session,
  const ArConfig *config,
  ArStreetscapeGeometryMode *out_streetscape_geometry_mode
)
```
Gets the current Streetscape Geometry mode set on the configuration.


Details Parameters `session` The ARCore session. `config` The configuration object. `out_streetscape_geometry_mode` The current `https://developers.google.com/ar/reference/c/group/ar-streetscape-geometry#arstreetscapegeometry` mode set on the config.

### ArConfig_getTextureUpdateMode

```
void ArConfig_getTextureUpdateMode(
  const ArSession *session,
  const ArConfig *config,
  ArTextureUpdateMode *out_texture_update_mode
)
```
Stores the desired texture update mode from the given `config` into `out_texture_update_mode`.

### ArConfig_getUpdateMode

```
void ArConfig_getUpdateMode(
  const ArSession *session,
  const ArConfig *config,
  ArUpdateMode *update_mode
)
```
Stores the currently configured behavior of `https://developers.google.com/ar/reference/c/group/ar-session#arsession_update` into `*update_mode`.

### ArConfig_setAugmentedFaceMode

```
void ArConfig_setAugmentedFaceMode(
  const ArSession *session,
  ArConfig *config,
  ArAugmentedFaceMode augmented_face_mode
)
```
Sets the desired face mode.

See `https://developers.google.com/ar/reference/c/group/ar-config#araugmentedfacemode` for available options. Augmented Faces is currently only supported when using the front-facing (selfie) camera.

### ArConfig_setAugmentedImageDatabase

```
void ArConfig_setAugmentedImageDatabase(
  const ArSession *session,
  ArConfig *config,
  const ArAugmentedImageDatabase *augmented_image_database
)
```
Sets the image database in the session configuration.

Any images in the currently active image database that have a `https://developers.google.com/ar/reference/c/group/shared-types#ar_tracking_state_tracking` or `https://developers.google.com/ar/reference/c/group/shared-types#ar_tracking_state_paused` state will immediately be set to the `https://developers.google.com/ar/reference/c/group/shared-types#ar_tracking_state_stopped` state if a different or `NULL` image database is set.

This function makes a copy of the image database.

### ArConfig_setCloudAnchorMode

```
void ArConfig_setCloudAnchorMode(
  const ArSession *session,
  ArConfig *config,
  ArCloudAnchorMode cloud_anchor_mode
)
```
Sets the desired cloud configuration.

See `https://developers.google.com/ar/reference/c/group/ar-config#arcloudanchormode` for available options.

### ArConfig_setDepthMode

```
void ArConfig_setDepthMode(
  const ArSession *session,
  ArConfig *config,
  ArDepthMode mode
)
```
Sets the desired `https://developers.google.com/ar/reference/c/group/ar-config#ardepthmode`.

Notes:

- Not all devices support all modes. Use `https://developers.google.com/ar/reference/c/group/ar-session#arsession_isdepthmodesupported` to determine whether the current device and the selected camera support a particular depth mode.
- With depth enabled through this call, calls to `https://developers.google.com/ar/reference/c/group/ar-frame#arframe_acquiredepthimage16bits` and `https://developers.google.com/ar/reference/c/group/ar-frame#arframe_acquirerawdepthimage16bits` can be made to acquire the latest computed depth image.
- With depth enabled through this call, calling `https://developers.google.com/ar/reference/c/group/ar-frame#arframe_hittest` generates an `https://developers.google.com/ar/reference/c/group/ar-hit-result#arhitresultlist` that also includes `https://developers.google.com/ar/reference/c/group/ar-depth-point#ardepthpoint` values that are sampled from the latest computed depth image.

<br />

### ArConfig_setFlashMode

```
void ArConfig_setFlashMode(
  const ArSession *session,
  ArConfig *config,
  ArFlashMode flash_mode
)
```
Sets the camera flash mode.

See `https://developers.google.com/ar/reference/c/group/ar-config#arflashmode` for available options. The default flash mode is `https://developers.google.com/ar/reference/c/group/ar-config#ar_flash_mode_off`. Note, on devices where camera flash hardware is not supported, calling this function will do nothing. See the [documentation page](https://developers.google.com/ar/develop/camera/flash/c) for more information on how to query device flash capability.


Details Parameters `session` The ARCore session. `config` The configuration object. `flash_mode` The desired camera flash mode.

### ArConfig_setFocusMode

```
void ArConfig_setFocusMode(
  const ArSession *session,
  ArConfig *config,
  ArFocusMode focus_mode
)
```
On supported devices, selects the desired camera focus mode.

On these devices, the default desired focus mode is currently `https://developers.google.com/ar/reference/c/group/ar-config#ar_focus_mode_fixed`, although this default might change in the future. See the [ARCore supported devices](https://developers.google.com/ar/devices) page for a list of devices on which ARCore does not support changing the desired focus mode.

For optimal AR tracking performance, use the focus mode provided by the default session config. While capturing pictures or video, use `https://developers.google.com/ar/reference/c/group/ar-config#ar_focus_mode_auto`. For optimal AR tracking, revert to the default focus mode once auto focus behavior is no longer needed. If your app requires fixed focus camera, set `https://developers.google.com/ar/reference/c/group/ar-config#ar_focus_mode_fixed` before enabling the AR session. This ensures that your app always uses fixed focus, even if the default camera config focus mode changes in a future release.

To determine whether the configured ARCore camera supports auto focus, check `ACAMERA_LENS_INFO_MINIMUM_FOCUS_DISTANCE`, which is 0 for fixed-focus cameras.

The desired focus mode is ignored while an MP4 dataset file is being played back.

### ArConfig_setGeospatialMode

```
void ArConfig_setGeospatialMode(
  const ArSession *session,
  ArConfig *config,
  ArGeospatialMode geospatial_mode
)
```
Sets the Geospatial mode.

See `https://developers.google.com/ar/reference/c/group/ar-config#argeospatialmode` for available options.

### ArConfig_setImageStabilizationMode

```
void ArConfig_setImageStabilizationMode(
  const ArSession *session,
  ArConfig *config,
  ArImageStabilizationMode image_stabilization_mode
)
```
Sets the camera image stabilization mode.

See `https://developers.google.com/ar/reference/c/group/ar-config#arimagestabilizationmode` for available options. Currently, the default image stabilization mode is `https://developers.google.com/ar/reference/c/group/ar-config#ar_image_stabilization_mode_off`.


Details Parameters `session` The ARCore session. `config` The configuration object. `image_stabilization_mode` The desired camera image stabilization mode.

### ArConfig_setInstantPlacementMode

```
void ArConfig_setInstantPlacementMode(
  const ArSession *session,
  ArConfig *config,
  ArInstantPlacementMode instant_placement_mode
)
```
Sets the current Instant Placement mode from the `https://developers.google.com/ar/reference/c/group/ar-config#arconfig`.

### ArConfig_setLightEstimationMode

```
void ArConfig_setLightEstimationMode(
  const ArSession *session,
  ArConfig *config,
  ArLightEstimationMode light_estimation_mode
)
```
Sets the desired `https://developers.google.com/ar/reference/c/group/ar-config#arlightestimationmode`.

See `https://developers.google.com/ar/reference/c/group/ar-config#arlightestimationmode` for available options.

### ArConfig_setPlaneFindingMode

```
void ArConfig_setPlaneFindingMode(
  const ArSession *session,
  ArConfig *config,
  ArPlaneFindingMode plane_finding_mode
)
```
Sets the desired plane finding mode.

See `https://developers.google.com/ar/reference/c/group/ar-config#arplanefindingmode` for available options.

### ArConfig_setSemanticMode

```
void ArConfig_setSemanticMode(
  const ArSession *session,
  ArConfig *config,
  ArSemanticMode semantic_mode
)
```
Sets the desired configuration for the Scene Semantics API.

See `https://developers.google.com/ar/reference/c/group/ar-config#arsemanticmode` for available options and usage information.

Not all devices support all modes. Use `https://developers.google.com/ar/reference/c/group/ar-session#arsession_issemanticmodesupported` to determine whether the current device and the selected camera support a particular semantic mode.

### ArConfig_setStreetscapeGeometryMode

```
void ArConfig_setStreetscapeGeometryMode(
  const ArSession *session,
  ArConfig *config,
  ArStreetscapeGeometryMode streetscape_geometry_mode
)
```
Sets the desired configuration for the Streetscape Geometry API.

See `https://developers.google.com/ar/reference/c/group/ar-config#arstreetscapegeometrymode` for available options and usage information.

### ArConfig_setTextureUpdateMode

```
void ArConfig_setTextureUpdateMode(
  const ArSession *session,
  ArConfig *config,
  ArTextureUpdateMode texture_update_mode
)
```
Sets the desired texture update mode.

See `https://developers.google.com/ar/reference/c/group/ar-config#artextureupdatemode` for available options.

Some values for `texture_update_mode` may not be supported on the current device. If an unsupported value is set, `https://developers.google.com/ar/reference/c/group/ar-session#arsession_configure` will throw `https://developers.google.com/ar/reference/c/group/shared-types#ar_error_unsupported_configuration`.

### ArConfig_setUpdateMode

```
void ArConfig_setUpdateMode(
  const ArSession *session,
  ArConfig *config,
  ArUpdateMode update_mode
)
```
Sets the behavior of `https://developers.google.com/ar/reference/c/group/ar-session#arsession_update`.

See `https://developers.google.com/ar/reference/c/group/ar-config#arupdatemode` for available options.