# ArImageMetadata

Provides access to CPU image camera metadata.

## Summary

| ### Typedefs ||
|---|---|
| `https://developers.google.com/ar/reference/c/group/ar-image-metadata#arimagemetadata` | typedef `struct ArImageMetadata_` Camera capture metadata ([reference type, large data](https://developers.google.com/ar/reference/c/group/concepts#object-ownership)). |
| `https://developers.google.com/ar/reference/c/group/ar-image-metadata#arimagemetadata_const_entry` | typedef `struct https://developers.google.com/ar/reference/c/struct/ar-image-metadata-const-entry#struct_ar_image_metadata__const__entry` Defines a single read-only image metadata entry. |
| `https://developers.google.com/ar/reference/c/group/ar-image-metadata#arimagemetadata_rational` | typedef `struct https://developers.google.com/ar/reference/c/struct/ar-image-metadata-rational#struct_ar_image_metadata__rational` Defines a rational data type in `https://developers.google.com/ar/reference/c/struct/ar-image-metadata-const-entry#struct_ar_image_metadata__const__entry`. |

| ### Functions ||
|---|---|
| `https://developers.google.com/ar/reference/c/group/ar-image-metadata#arimagemetadata_getallkeys(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, const https://developers.google.com/ar/reference/c/group/ar-image-metadata#arimagemetadata *image_metadata, int32_t *out_number_of_tags, const uint32_t **out_tags)` | `void` Retrieves the list of the supported image metadata tags that can be queried for their value. |
| `https://developers.google.com/ar/reference/c/group/ar-image-metadata#arimagemetadata_getconstentry(const https://developers.google.com/ar/reference/c/group/ar-session#arsession *session, const https://developers.google.com/ar/reference/c/group/ar-image-metadata#arimagemetadata *image_metadata, uint32_t tag, https://developers.google.com/ar/reference/c/struct/ar-image-metadata-const-entry#struct_ar_image_metadata__const__entry *out_metadata_entry)` | `https://developers.google.com/ar/reference/c/group/shared-types#arstatus` Get a metadata entry for the provided `https://developers.google.com/ar/reference/c/group/ar-image-metadata#arimagemetadata` and tag. |
| `https://developers.google.com/ar/reference/c/group/ar-image-metadata#arimagemetadata_release(https://developers.google.com/ar/reference/c/group/ar-image-metadata#arimagemetadata *metadata)` | `void` Releases a reference to the metadata. |

| ### Structs ||
|---|---|
| [ArImageMetadata_const_entry](https://developers.google.com/ar/reference/c/struct/ar-image-metadata-const-entry) | Defines a single read-only image metadata entry. |
| [ArImageMetadata_rational](https://developers.google.com/ar/reference/c/struct/ar-image-metadata-rational) | Defines a rational data type in `https://developers.google.com/ar/reference/c/struct/ar-image-metadata-const-entry#struct_ar_image_metadata__const__entry`. |

## Typedefs

### ArImageMetadata

```
struct ArImageMetadata_ ArImageMetadata
```
Camera capture metadata ([reference type, large data](https://developers.google.com/ar/reference/c/group/concepts#object-ownership)).


- Acquire with: `https://developers.google.com/ar/reference/c/group/ar-frame#arframe_acquireimagemetadata`
- Release with: `https://developers.google.com/ar/reference/c/group/ar-image-metadata#arimagemetadata_release`

<br />

### ArImageMetadata_const_entry

```
struct ArImageMetadata_const_entry ArImageMetadata_const_entry
```
Defines a single read-only image metadata entry.

Struct matches `ACameraMetadata_const_entry` in Android NDK r21.

### ArImageMetadata_rational

```
struct ArImageMetadata_rational ArImageMetadata_rational
```
Defines a rational data type in `https://developers.google.com/ar/reference/c/struct/ar-image-metadata-const-entry#struct_ar_image_metadata__const__entry`.

Struct matches `ACameraMetadata_rational` in Android NDK r21.

## Functions

### ArImageMetadata_getAllKeys

```
void ArImageMetadata_getAllKeys(
  const ArSession *session,
  const ArImageMetadata *image_metadata,
  int32_t *out_number_of_tags,
  const uint32_t **out_tags
)
```
Retrieves the list of the supported image metadata tags that can be queried for their value.

The `out_tags` list remains valid until `image_metadata` is released via `https://developers.google.com/ar/reference/c/group/ar-image-metadata#arimagemetadata_release`.


| Details ||
|---|---|
| Parameters | |---|---| | `session` | The ARCore session. | | `image_metadata` | `https://developers.google.com/ar/reference/c/group/ar-image-metadata#arimagemetadata` struct obtained from `https://developers.google.com/ar/reference/c/group/ar-frame#arframe_acquireimagemetadata`. | | `out_number_of_tags` | Number of metadata tags returned in the list. | | `out_tags` | The data pointer to the beginning of the list of `uint32_t` tags. | |

### ArImageMetadata_getConstEntry

```
ArStatus ArImageMetadata_getConstEntry(
  const ArSession *session,
  const ArImageMetadata *image_metadata,
  uint32_t tag,
  ArImageMetadata_const_entry *out_metadata_entry
)
```
Get a metadata entry for the provided `https://developers.google.com/ar/reference/c/group/ar-image-metadata#arimagemetadata` and tag.

The returned `out_metadata_entry` remains valid until the provided `image_metadata` is released via `https://developers.google.com/ar/reference/c/group/ar-image-metadata#arimagemetadata_release`.


| Details ||
|---|---|
| Parameters | |---|---| | `session` | The ARCore session. | | `image_metadata` | `https://developers.google.com/ar/reference/c/group/ar-image-metadata#arimagemetadata` struct obtained from `https://developers.google.com/ar/reference/c/group/ar-frame#arframe_acquireimagemetadata`. | | `tag` | The desired `uint32_t` metadata tag to be retrieved from the provided `https://developers.google.com/ar/reference/c/group/ar-image-metadata#arimagemetadata` struct. | | `out_metadata_entry` | The `https://developers.google.com/ar/reference/c/struct/ar-image-metadata-const-entry#struct_ar_image_metadata__const__entry` struct to which the metadata tag data should be written to, updated only when function returns `https://developers.google.com/ar/reference/c/group/shared-types#ar_success`. | |
| **Returns** | `https://developers.google.com/ar/reference/c/group/shared-types#ar_success` or any of: - `https://developers.google.com/ar/reference/c/group/shared-types#ar_error_invalid_argument` - if either `session`, `image_metadata` or `out_metadata_entry` is null. - `https://developers.google.com/ar/reference/c/group/shared-types#ar_error_metadata_not_found` - if `image_metadata` does not contain an entry of the `tag` value. |

### ArImageMetadata_release

```
void ArImageMetadata_release(
  ArImageMetadata *metadata
)
```
Releases a reference to the metadata.

This must match a call to `https://developers.google.com/ar/reference/c/group/ar-frame#arframe_acquireimagemetadata`.

This function may safely be called with `NULL` - it will do nothing.