# MultiplexPacketEncoder

<a id="multiplexpacketencoder"></a>

# MultiplexPacketEncoder

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

class MultiplexPacketEncoder
```

[Defined in src/av/include/icy/av/multiplexpacketencoder.h:28](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/multiplexpacketencoder.h#L28)

> **Inherits:** [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder), [`PacketProcessor`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#packetprocessor)

Encodes and multiplexes a realtime video stream form audio / video capture sources. FFmpeg is used for encoding.

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`PacketStream`](#packetstream-7) | `friend` | Declared here |
| [`MultiplexPacketEncoder`](#multiplexpacketencoder-1) | `function` | Declared here |
| [`~MultiplexPacketEncoder`](#multiplexpacketencoder-2) | `function` | Declared here |
| [`MultiplexPacketEncoder`](#multiplexpacketencoder-3) | `function` | Declared here |
| [`operator=`](#operator-167) | `function` | Declared here |
| [`MultiplexPacketEncoder`](#multiplexpacketencoder-4) | `function` | Declared here |
| [`operator=`](#operator-168) | `function` | Declared here |
| [`encode`](#encode-12) | `function` | Declared here |
| [`encode`](#encode-13) | `function` | Declared here |
| [`accepts`](#accepts-5) | `function` | Declared here |
| [`process`](#process-14) | `function` | Declared here |
| [`_mutex`](#_mutex-12) | `variable` | Declared here |
| [`onStreamStateChange`](#onstreamstatechange-10) | `function` | Declared here |
| [`emitter`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#emitter-9) | `variable` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder-1) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`~MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder-2) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder-3) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#operator-162) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder-4) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#operator-163) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`init`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#init-7) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`uninit`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#uninit-1) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`cleanup`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#cleanup-1) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`createVideo`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#createvideo-1) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`freeVideo`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#freevideo-1) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`encodeVideo`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#encodevideo-1) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`encodeVideo`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#encodevideo-2) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`encodeVideo`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#encodevideo-3) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`createAudio`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#createaudio-1) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`freeAudio`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#freeaudio-1) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`encodeAudio`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#encodeaudio) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`encodeAudio`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#encodeaudio-1) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`flush`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#flush-9) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`options`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#options-3) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`video`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#video-2) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`audio`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#audio-2) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`_options`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#_options) | `variable` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`_formatCtx`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#_formatctx-1) | `variable` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`_video`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#_video-1) | `variable` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`_audio`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#_audio-1) | `variable` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`_ioCtx`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#_ioctx) | `variable` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`_ioBuffer`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#_iobuffer) | `variable` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`_videoPts`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#_videopts) | `variable` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`_audioPts`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#_audiopts) | `variable` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`_mutex`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#_mutex-9) | `variable` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`writeOutputPacket`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#writeoutputpacket) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`updateStreamPts`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#updatestreampts) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`onVideoEncoded`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#onvideoencoded) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`onAudioEncoded`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#onaudioencoded) | `function` | Inherited from [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder) |
| [`init`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#init-6) | `function` | Inherited from [`IEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#iencoder) |
| [`uninit`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#uninit) | `function` | Inherited from [`IEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#iencoder) |
| [`cleanup`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#cleanup) | `function` | Inherited from [`IEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#iencoder) |
| [`options`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#options-2) | `function` | Inherited from [`IEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#iencoder) |
| [`createVideo`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#createvideo) | `function` | Inherited from [`IEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#iencoder) |
| [`freeVideo`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#freevideo) | `function` | Inherited from [`IEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#iencoder) |
| [`encodeVideo`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#encodevideo) | `function` | Inherited from [`IEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#iencoder) |
| [`createAudio`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#createaudio) | `function` | Inherited from [`IEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#iencoder) |
| [`freeAudio`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#freeaudio) | `function` | Inherited from [`IEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#iencoder) |
| [`flush`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#flush-2) | `function` | Inherited from [`IEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#iencoder) |
| [`isNone`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#isnone) | `function` | Inherited from [`IEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#iencoder) |
| [`isReady`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#isready) | `function` | Inherited from [`IEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#iencoder) |
| [`isEncoding`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#isencoding) | `function` | Inherited from [`IEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#iencoder) |
| [`isActive`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#isactive) | `function` | Inherited from [`IEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#iencoder) |
| [`isStopped`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#isstopped) | `function` | Inherited from [`IEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#iencoder) |
| [`isError`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#iserror) | `function` | Inherited from [`IEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#iencoder) |
| [`Type`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#type-6) | `enum` | Inherited from [`IEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#iencoder) |
| [`StateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#statechange) | `variable` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful-1) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`~Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful-2) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`stateEquals`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateequals) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`stateBetween`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#statebetween) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#state-4) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#state-5) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`_state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#_state) | `variable` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`beforeStateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#beforestatechange) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`onStateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#onstatechange-2) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`setState`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#setstate) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`setState`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#setstate-1) | `function` | Inherited from [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) |
| [`PacketProcessor`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#packetprocessor-1) | `function` | Inherited from [`PacketProcessor`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#packetprocessor) |
| [`process`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#process-1) | `function` | Inherited from [`PacketProcessor`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#packetprocessor) |
| [`accepts`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#accepts-1) | `function` | Inherited from [`PacketProcessor`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#packetprocessor) |
| [`operator<<`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#operator-69) | `function` | Inherited from [`PacketProcessor`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#packetprocessor) |
| [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter-1) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`~PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter-2) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`emit`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#emit-1) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`emit`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#emit-2) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`emit`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#emit-3) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`emit`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#emit-4) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`emit`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#emit-5) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`getEmitter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#getemitter) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`retention`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#retention-1) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`onStreamStateChange`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#onstreamstatechange-1) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`_emitter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#_emitter) | `variable` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter-3) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#operator-72) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter-4) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#operator-73) | `function` | Inherited from [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) |

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

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`emitter`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#emitter-9)  |  |
| `function` | [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder-1)  | Construct the encoder with the given options. |
| `function` | [`~MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder-2) `noexcept` `override` |  |
| `function` | [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder-3)  | Deleted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#operator-162)  | Deleted assignment operator. |
| `function` | [`MultiplexEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#multiplexencoder-4)  | Deleted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#operator-163)  | Deleted assignment operator. |
| `function` | [`init`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#init-7) `virtual` `override` | Open the output container, create codec streams, and write the format header. |
| `function` | [`uninit`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#uninit-1) `virtual` `override` | Flush encoded packets, write the format trailer, and close the output container. |
| `function` | [`cleanup`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#cleanup-1) `virtual` `override` | Release all resources allocated by [init()](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#init-7) without writing a trailer. |
| `function` | [`createVideo`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#createvideo-1) `virtual` `override` | Create the video encoder and add the stream to the output container. |
| `function` | [`freeVideo`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#freevideo-1) `virtual` `override` | Flush and free the video encoder and its stream. |
| `function` | [`encodeVideo`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#encodevideo-1) `virtual` `override` | Encode a single video frame. All frame values must be set, such as size, pixel format, and PTS. |
| `function` | [`encodeVideo`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#encodevideo-2) `virtual` | Encode a single interleaved video frame. If the frame time is specified it should be the microseconds offset since the start of the input stream. If no time is specified a real-time value will be assigned to the frame. |
| `function` | [`encodeVideo`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#encodevideo-3) `virtual` | Encode a single planar video frame. |
| `function` | [`createAudio`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#createaudio-1) `virtual` `override` | Create the audio encoder and add the stream to the output container. |
| `function` | [`freeAudio`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#freeaudio-1) `virtual` `override` | Flush and free the audio encoder and its stream. |
| `function` | [`encodeAudio`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#encodeaudio) `virtual` | Encode a single interleaved audio frame. |
| `function` | [`encodeAudio`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#encodeaudio-1) `virtual` | Encode a single planar audio frame. |
| `function` | [`flush`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#flush-9) `virtual` `override` | Flush any buffered or queued packets to the output container. |
| `function` | [`options`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#options-3) `virtual` `const` `override` |  |
| `function` | [`video`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#video-2)  |  |
| `function` | [`audio`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#audio-2)  |  |
| `variable` | [`_options`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#_options)  |  |
| `variable` | [`_formatCtx`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#_formatctx-1)  |  |
| `variable` | [`_video`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#_video-1)  |  |
| `variable` | [`_audio`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#_audio-1)  |  |
| `variable` | [`_ioCtx`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#_ioctx)  |  |
| `variable` | [`_ioBuffer`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#_iobuffer)  |  |
| `variable` | [`_videoPts`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#_videopts)  |  |
| `variable` | [`_audioPts`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#_audiopts)  |  |
| `variable` | [`_mutex`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#_mutex-9)  |  |
| `function` | [`writeOutputPacket`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#writeoutputpacket)  |  |
| `function` | [`updateStreamPts`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#updatestreampts)  | Convert input microseconds to the stream time base. |
| `function` | [`onVideoEncoded`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#onvideoencoded)  |  |
| `function` | [`onAudioEncoded`](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexEncoder.md#onaudioencoded)  |  |

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

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`init`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#init-6) `virtual` | Initialise the encoder, open codec contexts, and transition to Ready or Encoding state. |
| `function` | [`uninit`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#uninit) `virtual` | Flush remaining packets, close codec contexts, and release all encoder resources. |
| `function` | [`cleanup`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#cleanup) `virtual` `inline` | Perform any additional cleanup after [uninit()](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#uninit). Default is a no-op. |
| `function` | [`options`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#options-2) `virtual` `const` |  |
| `function` | [`createVideo`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#createvideo) `virtual` `inline` | Initialise the video codec context and stream. |
| `function` | [`freeVideo`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#freevideo) `virtual` `inline` | Free the video codec context and stream. |
| `function` | [`encodeVideo`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#encodevideo) `virtual` `inline` | Encode a single AVFrame of video. |
| `function` | [`createAudio`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#createaudio) `virtual` `inline` | Initialise the audio codec context and stream. |
| `function` | [`freeAudio`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#freeaudio) `virtual` `inline` | Free the audio codec context and stream. |
| `function` | [`flush`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#flush-2) `virtual` `inline` | Flush any internally buffered packets to the output. |
| `function` | [`isNone`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#isnone) `const` `inline` |  |
| `function` | [`isReady`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#isready) `const` `inline` |  |
| `function` | [`isEncoding`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#isencoding) `virtual` `const` `inline` |  |
| `function` | [`isActive`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#isactive) `virtual` `const` `inline` |  |
| `function` | [`isStopped`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#isstopped) `virtual` `const` `inline` |  |
| `function` | [`isError`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#iserror) `virtual` `const` `inline` |  |
| `enum` | [`Type`](https://auscaster.com/icey/docs/api-reference/icy-av-IEncoder.md#type-6)  |  |

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

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`StateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#statechange)  | Signals when the state changes. |
| `function` | [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful-1) `inline` |  |
| `function` | [`~Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful-2) `virtual` `inline` |  |
| `function` | [`stateEquals`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateequals) `virtual` `const` `inline` | Returns true if the current state ID equals the given ID. |
| `function` | [`stateBetween`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#statebetween) `virtual` `const` `inline` | Returns true if the current state ID is in the inclusive range [lid, rid]. |
| `function` | [`state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#state-4) `virtual` `inline` | Returns a mutable reference to the current state. |
| `function` | [`state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#state-5) `virtual` `const` `inline` | Returns a copy of the current state. |
| `variable` | [`_state`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#_state)  |  |
| `function` | [`beforeStateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#beforestatechange) `virtual` `inline` | Override to handle pre state change logic. Return false to prevent state change. |
| `function` | [`onStateChange`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#onstatechange-2) `virtual` `inline` | Override to handle post state change logic. |
| `function` | [`setState`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#setstate) `virtual` `inline` | Sets the state and sends the state signal if the state change was successful. |
| `function` | [`setState`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#setstate-1) `virtual` `inline` | Sets the state and sends the state signal if the state change was successful. |

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

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`PacketProcessor`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#packetprocessor-1) `inline` |  |
| `function` | [`process`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#process-1) `virtual` | This method performs processing on the given packet and emits the result. |
| `function` | [`accepts`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#accepts-1) `virtual` `inline` | This method ensures compatibility with the given packet type. Return false to reject the packet. |
| `function` | [`operator<<`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#operator-69) `virtual` `inline` | [Stream](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) operator alias for [process()](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#process-1) |

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

| Kind | Name | Description |
|------|------|-------------|
| `function` | [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter-1)  | Construct the adapter, binding it to the given packet signal. |
| `function` | [`~PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter-2) `virtual` `inline` |  |
| `function` | [`emit`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#emit-1) `virtual` | Emit a mutable raw buffer as a packet. |
| `function` | [`emit`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#emit-2) `virtual` | Emit a read-only raw buffer as a packet (data is copied internally). |
| `function` | [`emit`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#emit-3) `virtual` | Emit a string as a packet (data is copied internally). |
| `function` | [`emit`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#emit-4) `virtual` | Emit a flag-only packet carrying no payload data. |
| `function` | [`emit`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#emit-5) `virtual` | Emit an existing packet directly onto the outgoing signal. |
| `function` | [`getEmitter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#getemitter)  | Returns a reference to the outgoing packet signal. |
| `function` | [`retention`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#retention-1) `virtual` `const` | Returns how this adapter treats incoming packet lifetime. Most adapters are synchronous and therefore only borrow the packet for the current call chain. Queue-style adapters override this to advertise that they clone before deferred use. Callers may treat the first adapter reporting Cloned or Retained as the explicit ownership boundary in the stream graph. |
| `function` | [`onStreamStateChange`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#onstreamstatechange-1) `virtual` `inline` | Called by the [PacketStream](https://auscaster.com/icey/docs/api-reference/icy-PacketStream.md#packetstream) to notify when the internal [Stream](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) state changes. On receiving the Stopped state, it is the responsibility of the adapter to have ceased all outgoing packet transmission, especially in multi-thread scenarios. |
| `variable` | [`_emitter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#_emitter)  |  |
| `function` | [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter-3)  | NonCopyable and NonMovable. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#operator-72)  | Deleted assignment operator. |
| `function` | [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter-4)  | Deleted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#operator-73)  | Deleted assignment operator. |

## Friends

| Name | Description |
|------|-------------|
| [`PacketStream`](#packetstream-7)  |  |

---

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

### PacketStream

```cpp
friend class PacketStream
```

[Defined in src/av/include/icy/av/multiplexpacketencoder.h:61](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/multiplexpacketencoder.h#L61)

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`MultiplexPacketEncoder`](#multiplexpacketencoder-1)  | Construct the encoder with the given options. |
|  | [`~MultiplexPacketEncoder`](#multiplexpacketencoder-2) `virtual` `noexcept` |  |
|  | [`MultiplexPacketEncoder`](#multiplexpacketencoder-3)  | Deleted constructor. |
| [`MultiplexPacketEncoder`](#multiplexpacketencoder) & | [`operator=`](#operator-167)  | Deleted assignment operator. |
|  | [`MultiplexPacketEncoder`](#multiplexpacketencoder-4)  | Deleted constructor. |
| [`MultiplexPacketEncoder`](#multiplexpacketencoder) & | [`operator=`](#operator-168)  | Deleted assignment operator. |
| `void` | [`encode`](#encode-12) `virtual` | Encode a [VideoPacket](https://auscaster.com/icey/docs/api-reference/icy-av-VideoPacket.md#videopacket), dispatching to the planar or interleaved encode path as appropriate. |
| `void` | [`encode`](#encode-13) `virtual` | Encode an [AudioPacket](https://auscaster.com/icey/docs/api-reference/icy-av-AudioPacket.md#audiopacket), dispatching to the planar or interleaved encode path as appropriate. |
| `bool` | [`accepts`](#accepts-5) `virtual` `override` |  |
| `void` | [`process`](#process-14) `virtual` `override` | Dispatch the incoming packet to [encode(VideoPacket&)](#encode-12) or [encode(AudioPacket&)](#encode-13). Throws std::invalid_argument if the packet type is unrecognised. |

---

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

### MultiplexPacketEncoder

```cpp
MultiplexPacketEncoder(const EncoderOptions & options = EncoderOptions())
```

[Defined in src/av/include/icy/av/multiplexpacketencoder.h:34](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/multiplexpacketencoder.h#L34)

Construct the encoder with the given options.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `options` | const [`EncoderOptions`](https://auscaster.com/icey/docs/api-reference/icy-av-EncoderOptions.md#encoderoptions) & | The encoder configuration (input/output formats and file paths). |

---

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

### ~MultiplexPacketEncoder

`virtual` `noexcept`

```cpp
virtual ~MultiplexPacketEncoder() noexcept
```

[Defined in src/av/include/icy/av/multiplexpacketencoder.h:35](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/multiplexpacketencoder.h#L35)

---

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

### MultiplexPacketEncoder

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

[Defined in src/av/include/icy/av/multiplexpacketencoder.h:37](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/multiplexpacketencoder.h#L37)

Deleted constructor.

---

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

### operator=

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

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

Deleted assignment operator.

---

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

### MultiplexPacketEncoder

```cpp
MultiplexPacketEncoder(MultiplexPacketEncoder &&) = delete
```

[Defined in src/av/include/icy/av/multiplexpacketencoder.h:39](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/multiplexpacketencoder.h#L39)

Deleted constructor.

---

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

### operator=

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

[Defined in src/av/include/icy/av/multiplexpacketencoder.h:40](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/multiplexpacketencoder.h#L40)

Deleted assignment operator.

---

<a id="encode-12"></a>

### encode

`virtual`

```cpp
virtual void encode(VideoPacket & packet)
```

[Defined in src/av/include/icy/av/multiplexpacketencoder.h:44](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/multiplexpacketencoder.h#L44)

Encode a [VideoPacket](https://auscaster.com/icey/docs/api-reference/icy-av-VideoPacket.md#videopacket), dispatching to the planar or interleaved encode path as appropriate.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `packet` | [`VideoPacket`](https://auscaster.com/icey/docs/api-reference/icy-av-VideoPacket.md#videopacket) & | The video packet to encode. |

---

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

### encode

`virtual`

```cpp
virtual void encode(AudioPacket & packet)
```

[Defined in src/av/include/icy/av/multiplexpacketencoder.h:48](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/multiplexpacketencoder.h#L48)

Encode an [AudioPacket](https://auscaster.com/icey/docs/api-reference/icy-av-AudioPacket.md#audiopacket), dispatching to the planar or interleaved encode path as appropriate.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `packet` | [`AudioPacket`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioPacket.md#audiopacket) & | The audio packet to encode. |

---

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

### accepts

`virtual` `override`

```cpp
virtual bool accepts(IPacket * packet) override
```

[Defined in src/av/include/icy/av/multiplexpacketencoder.h:51](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/multiplexpacketencoder.h#L51)

#### Returns
True if the packet is an [av::MediaPacket](https://auscaster.com/icey/docs/api-reference/icy-av-MediaPacket.md#mediapacket) (audio or video).

#### Reimplements

- [`PacketProcessor::accepts`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#accepts-1)

---

<a id="process-14"></a>

### process

`virtual` `override`

```cpp
virtual void process(IPacket & packet) override
```

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

Dispatch the incoming packet to [encode(VideoPacket&)](#encode-12) or [encode(AudioPacket&)](#encode-13). Throws std::invalid_argument if the packet type is unrecognised.

#### Reimplements

- [`PacketProcessor::process`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#process-1)

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `packet` | [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) & | The incoming media packet. |

## Protected Attributes

| Return | Name | Description |
|--------|------|-------------|
| `std::mutex` | [`_mutex`](#_mutex-12)  |  |

---

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

### _mutex

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

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

## Protected Methods

| Return | Name | Description |
|--------|------|-------------|
| `void` | [`onStreamStateChange`](#onstreamstatechange-10) `virtual` `override` | Called by the [PacketStream](https://auscaster.com/icey/docs/api-reference/icy-PacketStream.md#packetstream) to notify when the internal [Stream](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) state changes. On receiving the Stopped state, it is the responsibility of the adapter to have ceased all outgoing packet transmission, especially in multi-thread scenarios. |

---

<a id="onstreamstatechange-10"></a>

### onStreamStateChange

`virtual` `override`

```cpp
virtual void onStreamStateChange(const PacketStreamState &) override
```

[Defined in src/av/include/icy/av/multiplexpacketencoder.h:59](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/multiplexpacketencoder.h#L59)

Called by the [PacketStream](https://auscaster.com/icey/docs/api-reference/icy-PacketStream.md#packetstream) to notify when the internal [Stream](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) state changes. On receiving the Stopped state, it is the responsibility of the adapter to have ceased all outgoing packet transmission, especially in multi-thread scenarios.

#### Reimplements

- [`PacketStreamAdapter::onStreamStateChange`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#onstreamstatechange-1)
