# FormatRegistry

<a id="formatregistry"></a>

# FormatRegistry

```cpp
#include <icy/av/formatregistry.h>

class FormatRegistry
```

[Defined in src/av/include/icy/av/formatregistry.h:26](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/formatregistry.h#L26)

[Singleton](https://auscaster.com/icey/docs/api-reference/icy-Singleton.md#singleton) registry of available media container formats for encoding and decoding.

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`FormatRegistry`](#formatregistry-1)  |  |
|  | [`~FormatRegistry`](#formatregistry-2) `virtual` `noexcept` |  |
| [`Format`](https://auscaster.com/icey/docs/api-reference/icy-av-Format.md#format-5) & | [`get`](#get-13) `virtual` | Return the format with the given display name. Throws std::runtime_error if no format with that name is registered. |
| [`Format`](https://auscaster.com/icey/docs/api-reference/icy-av-Format.md#format-5) & | [`getByID`](#getbyid) `virtual` | Return the format with the given short ID (e.g. "mp4"). Throws std::runtime_error if no format with that ID is registered. |
| [`Format`](https://auscaster.com/icey/docs/api-reference/icy-av-Format.md#format-5) & | [`getOrDefault`](#getordefault) `virtual` | Return the format with the given name, or the default format if not found. |
| [`Format`](https://auscaster.com/icey/docs/api-reference/icy-av-Format.md#format-5) & | [`getDefault`](#getdefault-3) `virtual` | If a default has been specified it will be returned, other the format with the highest priority will take precedence. |
| `void` | [`registerFormat`](#registerformat) `virtual` | Registers the given media format overriding existing media formats of the same name. |
| `bool` | [`unregisterFormat`](#unregisterformat) `virtual` | Unregisters the media format matching the given name. |
| `void` | [`setDefault`](#setdefault-1) `virtual` | Sets the default fallback media format. |
| `bool` | [`exists`](#exists-2) `virtual` |  |
| `void` | [`clear`](#clear-7) `virtual` | Remove all registered formats and clear the default. |
| [`FormatList`](https://auscaster.com/icey/docs/api-reference/av.md#formatlist) | [`formats`](#formats) `virtual` `const` |  |

---

<a id="formatregistry-1"></a>

### FormatRegistry

```cpp
FormatRegistry()
```

[Defined in src/av/include/icy/av/formatregistry.h:32](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/formatregistry.h#L32)

---

<a id="formatregistry-2"></a>

### ~FormatRegistry

`virtual` `noexcept`

```cpp
virtual ~FormatRegistry() noexcept
```

[Defined in src/av/include/icy/av/formatregistry.h:33](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/formatregistry.h#L33)

---

<a id="get-13"></a>

### get

`virtual`

```cpp
virtual Format & get(std::string_view name)
```

[Defined in src/av/include/icy/av/formatregistry.h:38](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/formatregistry.h#L38)

Return the format with the given display name. Throws std::runtime_error if no format with that name is registered.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `name` | `std::string_view` | The display name to look up. |

---

<a id="getbyid"></a>

### getByID

`virtual`

```cpp
virtual Format & getByID(std::string_view id)
```

[Defined in src/av/include/icy/av/formatregistry.h:43](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/formatregistry.h#L43)

Return the format with the given short ID (e.g. "mp4"). Throws std::runtime_error if no format with that ID is registered.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `id` | `std::string_view` | The short format ID to look up. |

---

<a id="getordefault"></a>

### getOrDefault

`virtual`

```cpp
virtual Format & getOrDefault(std::string_view name)
```

[Defined in src/av/include/icy/av/formatregistry.h:47](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/formatregistry.h#L47)

Return the format with the given name, or the default format if not found.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `name` | `std::string_view` | The display name to look up. |

---

<a id="getdefault-3"></a>

### getDefault

`virtual`

```cpp
virtual Format & getDefault()
```

[Defined in src/av/include/icy/av/formatregistry.h:52](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/formatregistry.h#L52)

If a default has been specified it will be returned, other the format with the highest priority will take precedence.

---

<a id="registerformat"></a>

### registerFormat

`virtual`

```cpp
virtual void registerFormat(const Format & format)
```

[Defined in src/av/include/icy/av/formatregistry.h:56](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/formatregistry.h#L56)

Registers the given media format overriding existing media formats of the same name.

---

<a id="unregisterformat"></a>

### unregisterFormat

`virtual`

```cpp
virtual bool unregisterFormat(std::string_view name)
```

[Defined in src/av/include/icy/av/formatregistry.h:60](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/formatregistry.h#L60)

Unregisters the media format matching the given name.

---

<a id="setdefault-1"></a>

### setDefault

`virtual`

```cpp
virtual void setDefault(std::string_view name)
```

[Defined in src/av/include/icy/av/formatregistry.h:63](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/formatregistry.h#L63)

Sets the default fallback media format.

---

<a id="exists-2"></a>

### exists

`virtual`

```cpp
virtual bool exists(std::string_view name)
```

[Defined in src/av/include/icy/av/formatregistry.h:67](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/formatregistry.h#L67)

#### Returns
True if a format with the given display name is registered.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `name` | `std::string_view` | The display name to check. |

---

<a id="clear-7"></a>

### clear

`virtual`

```cpp
virtual void clear()
```

[Defined in src/av/include/icy/av/formatregistry.h:70](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/formatregistry.h#L70)

Remove all registered formats and clear the default.

---

<a id="formats"></a>

### formats

`virtual` `const`

```cpp
virtual FormatList formats() const
```

[Defined in src/av/include/icy/av/formatregistry.h:73](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/formatregistry.h#L73)

#### Returns
A snapshot copy of all registered formats.

## Public Static Methods

| Return | Name | Description |
|--------|------|-------------|
| [`FormatRegistry`](#formatregistry) & | [`instance`](#instance-5) `static` | Return the singleton [FormatRegistry](#formatregistry) instance. |

---

<a id="instance-5"></a>

### instance

`static`

```cpp
static FormatRegistry & instance()
```

[Defined in src/av/include/icy/av/formatregistry.h:30](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/formatregistry.h#L30)

Return the singleton [FormatRegistry](#formatregistry) instance.

## Private Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`FormatList`](https://auscaster.com/icey/docs/api-reference/av.md#formatlist) | [`_formats`](#_formats)  |  |
| `std::string` | [`_default`](#_default)  |  |
| `std::mutex` | [`_mutex`](#_mutex-8)  |  |

---

<a id="_formats"></a>

### _formats

```cpp
FormatList _formats
```

Type: [`FormatList`](https://auscaster.com/icey/docs/api-reference/av.md#formatlist)

[Defined in src/av/include/icy/av/formatregistry.h:84](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/formatregistry.h#L84)

---

<a id="_default"></a>

### _default

```cpp
std::string _default
```

[Defined in src/av/include/icy/av/formatregistry.h:85](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/formatregistry.h#L85)

---

<a id="_mutex-8"></a>

### _mutex

```cpp
std::mutex _mutex
```

[Defined in src/av/include/icy/av/formatregistry.h:86](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/formatregistry.h#L86)

## Private Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`FormatRegistry`](#formatregistry-3)  | Deleted constructor. |
| [`FormatRegistry`](#formatregistry) & | [`operator=`](#operator-158)  | Deleted assignment operator. |
|  | [`FormatRegistry`](#formatregistry-4)  | Deleted constructor. |
| [`FormatRegistry`](#formatregistry) & | [`operator=`](#operator-159)  | Deleted assignment operator. |
| [`Format`](https://auscaster.com/icey/docs/api-reference/icy-av-Format.md#format-5) & | [`findByName`](#findbyname)  |  |
| [`Format`](https://auscaster.com/icey/docs/api-reference/icy-av-Format.md#format-5) & | [`defaultLocked`](#defaultlocked)  |  |

---

<a id="formatregistry-3"></a>

### FormatRegistry

```cpp
FormatRegistry(const FormatRegistry &) = delete
```

[Defined in src/av/include/icy/av/formatregistry.h:76](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/formatregistry.h#L76)

Deleted constructor.

---

<a id="operator-158"></a>

### operator=

```cpp
FormatRegistry & operator=(const FormatRegistry &) = delete
```

[Defined in src/av/include/icy/av/formatregistry.h:77](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/formatregistry.h#L77)

Deleted assignment operator.

---

<a id="formatregistry-4"></a>

### FormatRegistry

```cpp
FormatRegistry(FormatRegistry &&) = delete
```

[Defined in src/av/include/icy/av/formatregistry.h:78](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/formatregistry.h#L78)

Deleted constructor.

---

<a id="operator-159"></a>

### operator=

```cpp
FormatRegistry & operator=(FormatRegistry &&) = delete
```

[Defined in src/av/include/icy/av/formatregistry.h:79](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/formatregistry.h#L79)

Deleted assignment operator.

---

<a id="findbyname"></a>

### findByName

```cpp
Format & findByName(std::string_view name)
```

[Defined in src/av/include/icy/av/formatregistry.h:81](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/formatregistry.h#L81)

---

<a id="defaultlocked"></a>

### defaultLocked

```cpp
Format & defaultLocked()
```

[Defined in src/av/include/icy/av/formatregistry.h:82](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/formatregistry.h#L82)
