# Extensions

> Turning on extensions: work built in otio-rust that is not part of OpenTimelineIO.

Symbols in this group are spelled `otio_ext_…`. An SDK drops that prefix.

## `enable_extension`

`otio_ext_enable` · free

Turns on the extension `id`, and every extension it depends on first.

Enabling one that is already on does nothing and succeeds. An id this library was not built with is `OTIO_STATUS_INVALID_ARGUMENT`, naming the extensions it was built with; an extension that fails to register is `OTIO_STATUS_PLUGIN_ERROR`.

```c
OtioStatus otio_ext_enable(const char *id, OtioBuffer *out_error);
```

| Parameter | Type | Role |
| --- | --- | --- |
| `id` | `text` | input |
| `out_error` | `text` | error |

## `is_extension_enabled`

`otio_ext_is_enabled` · free

Writes whether the extension `id` is on to `out_enabled`.

An id this library was not built with is simply not on.

```c
OtioStatus otio_ext_is_enabled(
    const char *id,
    bool *out_enabled,
    OtioBuffer *out_error);
```

| Parameter | Type | Role |
| --- | --- | --- |
| `id` | `text` | input |
| `out_enabled` | `bool` | output |
| `out_error` | `text` | error |

---

Page: https://otio-rust-docs.vercel.app/reference/extensions/
