# CodecSpec

<a id="codecspec"></a>

# CodecSpec

```cpp
#include <icy/webrtc/codecnegotiator.h>

struct CodecSpec
```

[Defined in src/webrtc/include/icy/webrtc/codecnegotiator.h:65](https://github.com/auscaster/icey/blob/main/src/webrtc/include/icy/webrtc/codecnegotiator.h#L65)

Canonical description of a codec supported by icey's WebRTC helpers.

## Public Attributes

| Return | Name | Description |
|--------|------|-------------|
| [`CodecId`](https://auscaster.com/icey/docs/api-reference/webrtc.md#codecid) | [`id`](#id-15)  | Stable codec identifier. |
| [`CodecMediaType`](https://auscaster.com/icey/docs/api-reference/webrtc.md#codecmediatype) | [`mediaType`](#mediatype)  | Audio or video media kind. |
| `std::string` | [`rtpName`](#rtpname)  | Canonical RTP codec name. |
| `std::string` | [`ffmpegName`](#ffmpegname)  | Preferred FFmpeg encoder name. |
| `uint32_t` | [`clockRate`](#clockrate)  | RTP clock rate in Hz. |
| `int` | [`payloadType`](#payloadtype)  | Default static or preferred dynamic payload type. |
| `std::string` | [`fmtp`](#fmtp)  | Canonical fmtp line for SDP generation. |

---

<a id="id-15"></a>

### id

```cpp
CodecId id = CodecId::Unknown
```

Type: [`CodecId`](https://auscaster.com/icey/docs/api-reference/webrtc.md#codecid)

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

Stable codec identifier.

---

<a id="mediatype"></a>

### mediaType

```cpp
CodecMediaType mediaType = CodecMediaType::Video
```

Type: [`CodecMediaType`](https://auscaster.com/icey/docs/api-reference/webrtc.md#codecmediatype)

[Defined in src/webrtc/include/icy/webrtc/codecnegotiator.h:68](https://github.com/auscaster/icey/blob/main/src/webrtc/include/icy/webrtc/codecnegotiator.h#L68)

Audio or video media kind.

---

<a id="rtpname"></a>

### rtpName

```cpp
std::string rtpName
```

[Defined in src/webrtc/include/icy/webrtc/codecnegotiator.h:69](https://github.com/auscaster/icey/blob/main/src/webrtc/include/icy/webrtc/codecnegotiator.h#L69)

Canonical RTP codec name.

---

<a id="ffmpegname"></a>

### ffmpegName

```cpp
std::string ffmpegName
```

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

Preferred FFmpeg encoder name.

---

<a id="clockrate"></a>

### clockRate

```cpp
uint32_t clockRate = 0
```

[Defined in src/webrtc/include/icy/webrtc/codecnegotiator.h:71](https://github.com/auscaster/icey/blob/main/src/webrtc/include/icy/webrtc/codecnegotiator.h#L71)

RTP clock rate in Hz.

---

<a id="payloadtype"></a>

### payloadType

```cpp
int payloadType = 0
```

[Defined in src/webrtc/include/icy/webrtc/codecnegotiator.h:72](https://github.com/auscaster/icey/blob/main/src/webrtc/include/icy/webrtc/codecnegotiator.h#L72)

Default static or preferred dynamic payload type.

---

<a id="fmtp"></a>

### fmtp

```cpp
std::string fmtp
```

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

Canonical fmtp line for SDP generation.

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
| `bool` | [`valid`](#valid-18) `const` `inline` |  |

---

<a id="valid-18"></a>

### valid

`const` `inline`

```cpp
inline bool valid() const
```

[Defined in src/webrtc/include/icy/webrtc/codecnegotiator.h:75](https://github.com/auscaster/icey/blob/main/src/webrtc/include/icy/webrtc/codecnegotiator.h#L75)
