# AudioCodec

<a id="audiocodec"></a>

# AudioCodec

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

struct AudioCodec
```

[Defined in src/av/include/icy/av/codec.h:102](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/codec.h#L102)

> **Inherits:** [`Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec)

Audio codec parameters including channels, sample rate, and sample format.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`channels`](#channels) | `variable` | Declared here |
| [`sampleFmt`](#samplefmt) | `variable` | Declared here |
| [`AudioCodec`](#audiocodec-1) | `function` | Declared here |
| [`AudioCodec`](#audiocodec-2) | `function` | Declared here |
| [`AudioCodec`](#audiocodec-3) | `function` | Declared here |
| [`AudioCodec`](#audiocodec-4) | `function` | Declared here |
| [`~AudioCodec`](#audiocodec-5) | `function` | Declared here |
| [`toString`](#tostring-4) | `function` | Declared here |
| [`print`](#print-3) | `function` | Declared here |
| [`name`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#name-4) | `variable` | Inherited from [`Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec) |
| [`encoder`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#encoder) | `variable` | Inherited from [`Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec) |
| [`sampleRate`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#samplerate) | `variable` | Inherited from [`Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec) |
| [`bitRate`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#bitrate) | `variable` | Inherited from [`Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec) |
| [`quality`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#quality) | `variable` | Inherited from [`Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec) |
| [`compliance`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#compliance) | `variable` | Inherited from [`Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec) |
| [`enabled`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#enabled) | `variable` | Inherited from [`Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec) |
| [`options`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#options-1) | `variable` | Inherited from [`Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec) |
| [`Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec-1) | `function` | Inherited from [`Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec) |
| [`Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec-2) | `function` | Inherited from [`Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec) |
| [`Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec-3) | `function` | Inherited from [`Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec) |
| [`~Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec-4) | `function` | Inherited from [`Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec) |
| [`toString`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#tostring-3) | `function` | Inherited from [`Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec) |
| [`specified`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#specified) | `function` | Inherited from [`Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec) |
| [`print`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#print-2) | `function` | Inherited from [`Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec) |

## Inherited from [`Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec)

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`name`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#name-4)  | The display name for this codec. |
| `variable` | [`encoder`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#encoder)  | The encoder name for FFmpeg. |
| `variable` | [`sampleRate`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#samplerate)  | The sampling rate or RTP clock rate. |
| `variable` | [`bitRate`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#bitrate)  | The bit rate to encode at. |
| `variable` | [`quality`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#quality)  | Optional quality value, variable range depending on codec. |
| `variable` | [`compliance`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#compliance)  | FFmpeg strict_std_compliance level (default: FF_COMPLIANCE_EXPERIMENTAL). |
| `variable` | [`enabled`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#enabled)  | Weather or not the codec is available for use. |
| `variable` | [`options`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#options-1)  | Arbitrary encoder options passed to FFmpeg via av_opt_set(). Keys are FFmpeg option names (e.g. "preset", "tune", "profile"). Applied after codec-specific defaults, so they override everything. |
| `function` | [`Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec-1)  | Construct a disabled codec with zeroed parameters. |
| `function` | [`Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec-2)  | Construct a codec with a display name, sample rate, bit rate, and enabled flag. |
| `function` | [`Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec-3)  | Construct a codec with an explicit FFmpeg encoder name. |
| `function` | [`~Codec`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#codec-4) `virtual` `noexcept` | Codec(const Codec& r);. |
| `function` | [`toString`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#tostring-3) `virtual` `const` | Return a compact string representation of this codec. |
| `function` | [`specified`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#specified) `const` | Returns true when this codec explicitly names either an RTP/media codec or an FFmpeg encoder and is enabled for use. |
| `function` | [`print`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#print-2) `virtual` | Print a multi-line human-readable description to the given stream. |

## Public Attributes

| Return | Name | Description |
|--------|------|-------------|
| `int` | [`channels`](#channels)  |  |
| `std::string` | [`sampleFmt`](#samplefmt)  | One of: u8, s16, s32, flt, dbl, u8p, s16p, s32p, fltp, dblp. |

---

<a id="channels"></a>

### channels

```cpp
int channels
```

[Defined in src/av/include/icy/av/codec.h:104](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/codec.h#L104)

---

<a id="samplefmt"></a>

### sampleFmt

```cpp
std::string sampleFmt
```

[Defined in src/av/include/icy/av/codec.h:105](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/codec.h#L105)

One of: u8, s16, s32, flt, dbl, u8p, s16p, s32p, fltp, dblp.

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`AudioCodec`](#audiocodec-1)  | Construct a disabled audio codec with zeroed parameters. |
|  | [`AudioCodec`](#audiocodec-2)  | Construct an anonymous audio codec from raw parameters. |
|  | [`AudioCodec`](#audiocodec-3)  | Construct a named audio codec. |
|  | [`AudioCodec`](#audiocodec-4)  | Construct a named audio codec with an explicit FFmpeg encoder name. |
|  | [`~AudioCodec`](#audiocodec-5) `virtual` `noexcept` |  |
| `std::string` | [`toString`](#tostring-4) `virtual` `const` `override` |  |
| `void` | [`print`](#print-3) `virtual` `override` | Print a multi-line human-readable description to the given stream. |

---

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

### AudioCodec

```cpp
AudioCodec()
```

[Defined in src/av/include/icy/av/codec.h:108](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/codec.h#L108)

Construct a disabled audio codec with zeroed parameters.

---

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

### AudioCodec

```cpp
AudioCodec(int channels, int sampleRate, const std::string & sampleFmt = "", int bitRate = 0)
```

[Defined in src/av/include/icy/av/codec.h:115](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/codec.h#L115)

Construct an anonymous audio codec from raw parameters.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `channels` | `int` | The number of audio channels. |
| `sampleRate` | `int` | The sample rate in Hz. |
| `sampleFmt` | `const std::string &` | The sample format string (e.g. "s16", "fltp"). |
| `bitRate` | `int` | The target bit rate in bits per second. |

---

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

### AudioCodec

```cpp
AudioCodec(const std::string & name, int channels = 0, int sampleRate = 0, int bitRate = 0, const std::string & sampleFmt = "")
```

[Defined in src/av/include/icy/av/codec.h:126](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/codec.h#L126)

Construct a named audio codec.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `name` | `const std::string &` | The codec display name. |
| `channels` | `int` | The number of audio channels. |
| `sampleRate` | `int` | The sample rate in Hz. |
| `bitRate` | `int` | The target bit rate in bits per second. |
| `sampleFmt` | `const std::string &` | The sample format string. |

---

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

### AudioCodec

```cpp
AudioCodec(const std::string & name, const std::string & encoder, int channels = 0, int sampleRate = 0, int bitRate = 0, const std::string & sampleFmt = "")
```

[Defined in src/av/include/icy/av/codec.h:139](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/codec.h#L139)

Construct a named audio codec with an explicit FFmpeg encoder name.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `name` | `const std::string &` | The codec display name. |
| `encoder` | `const std::string &` | The FFmpeg encoder name (e.g. "libopus"). |
| `channels` | `int` | The number of audio channels. |
| `sampleRate` | `int` | The sample rate in Hz. |
| `bitRate` | `int` | The target bit rate in bits per second. |
| `sampleFmt` | `const std::string &` | The sample format string. |

---

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

### ~AudioCodec

`virtual` `noexcept`

```cpp
virtual ~AudioCodec() noexcept
```

[Defined in src/av/include/icy/av/codec.h:146](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/codec.h#L146)

---

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

### toString

`virtual` `const` `override`

```cpp
virtual std::string toString() const override
```

[Defined in src/av/include/icy/av/codec.h:149](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/codec.h#L149)

#### Returns
A string in the form "AudioCodec[name:encoder:sampleRate:bitRate:channels:sampleFmt:enabled]".

#### Reimplements

- [`Codec::toString`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#tostring-3)

---

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

### print

`virtual` `override`

```cpp
virtual void print(std::ostream & ost) override
```

[Defined in src/av/include/icy/av/codec.h:153](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/codec.h#L153)

Print a multi-line human-readable description to the given stream.

#### Reimplements

- [`Codec::print`](https://auscaster.com/icey/docs/api-reference/icy-av-Codec.md#print-2)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `ost` | `std::ostream &` | The output stream to write to. |
