# VideoCodec

<a id="videocodec"></a>

# VideoCodec

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

struct VideoCodec
```

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

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

Video codec parameters including resolution, frame rate, and pixel format.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`width`](#width) | `variable` | Declared here |
| [`height`](#height) | `variable` | Declared here |
| [`fps`](#fps) | `variable` | Declared here |
| [`pixelFmt`](#pixelfmt) | `variable` | Declared here |
| [`VideoCodec`](#videocodec-1) | `function` | Declared here |
| [`VideoCodec`](#videocodec-2) | `function` | Declared here |
| [`VideoCodec`](#videocodec-3) | `function` | Declared here |
| [`VideoCodec`](#videocodec-4) | `function` | Declared here |
| [`VideoCodec`](#videocodec-5) | `function` | Declared here |
| [`operator=`](#operator-143) | `function` | Declared here |
| [`~VideoCodec`](#videocodec-6) | `function` | Declared here |
| [`toString`](#tostring-5) | `function` | Declared here |
| [`print`](#print-4) | `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` | [`width`](#width)  |  |
| `int` | [`height`](#height)  |  |
| `double` | [`fps`](#fps)  |  |
| `std::string` | [`pixelFmt`](#pixelfmt)  |  |

---

<a id="width"></a>

### width

```cpp
int width
```

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

---

<a id="height"></a>

### height

```cpp
int height
```

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

---

<a id="fps"></a>

### fps

```cpp
double fps
```

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

---

<a id="pixelfmt"></a>

### pixelFmt

```cpp
std::string pixelFmt
```

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

## Public Methods

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

---

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

### VideoCodec

```cpp
VideoCodec()
```

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

Construct a disabled video codec with zeroed parameters.

---

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

### VideoCodec

```cpp
VideoCodec(int width, int height, double fps = 0.0, const std::string & pixelFmt = DEFAULT_VIDEO_PIXEL_FMT, int bitRate = 0, int sampleRate = 0)
```

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

Construct an anonymous video codec from raw parameters.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `width` | `int` | The frame width in pixels. |
| `height` | `int` | The frame height in pixels. |
| `fps` | `double` | The target frame rate in frames per second. |
| `pixelFmt` | `const std::string &` | The pixel format string (e.g. "yuv420p"). |
| `bitRate` | `int` | The target bit rate in bits per second. |
| `sampleRate` | `int` | The RTP clock rate in Hz. |

---

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

### VideoCodec

```cpp
VideoCodec(const std::string & name, int width = 0, int height = 0, double fps = 0.0, int bitRate = 0, int sampleRate = 0, const std::string & pixelFmt = DEFAULT_VIDEO_PIXEL_FMT)
```

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

Construct a named video codec.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `name` | `const std::string &` | The codec display name. |
| `width` | `int` | The frame width in pixels. |
| `height` | `int` | The frame height in pixels. |
| `fps` | `double` | The target frame rate in frames per second. |
| `bitRate` | `int` | The target bit rate in bits per second. |
| `sampleRate` | `int` | The RTP clock rate in Hz. |
| `pixelFmt` | `const std::string &` | The pixel format string. |

---

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

### VideoCodec

```cpp
VideoCodec(const std::string & name, const std::string & encoder, int width = 0, int height = 0, double fps = 0.0, int bitRate = 0, int sampleRate = 0, const std::string & pixelFmt = DEFAULT_VIDEO_PIXEL_FMT)
```

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

Construct a named video 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. "libx264"). |
| `width` | `int` | The frame width in pixels. |
| `height` | `int` | The frame height in pixels. |
| `fps` | `double` | The target frame rate in frames per second. |
| `bitRate` | `int` | The target bit rate in bits per second. |
| `sampleRate` | `int` | The RTP clock rate in Hz. |
| `pixelFmt` | `const std::string &` | The pixel format string. |

---

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

### VideoCodec

```cpp
VideoCodec(const VideoCodec & r)
```

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

---

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

### operator=

```cpp
VideoCodec & operator=(const VideoCodec &) = default
```

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

Defaulted assignment operator.

---

<a id="videocodec-6"></a>

### ~VideoCodec

`virtual` `noexcept`

```cpp
virtual ~VideoCodec() noexcept
```

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

---

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

### toString

`virtual` `const` `override`

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

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

#### Returns
A string in the form "VideoCodec[name:encoder:width:height:fps:pixelFmt:enabled]".

#### Reimplements

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

---

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

### print

`virtual` `override`

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

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

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. |
