# AudioPacketEncoder

<a id="audiopacketencoder"></a>

# AudioPacketEncoder

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

class AudioPacketEncoder
```

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

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

[PacketProcessor](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#packetprocessor) that encodes raw audio samples ([PlanarAudioPacket](https://auscaster.com/icey/docs/api-reference/icy-av-PlanarAudioPacket.md#planaraudiopacket) or [AudioPacket](https://auscaster.com/icey/docs/api-reference/icy-av-AudioPacket.md#audiopacket)) into compressed packets via [AudioEncoder](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#audioencoder).

Drop this into a [PacketStream](https://auscaster.com/icey/docs/api-reference/icy-PacketStream.md#packetstream) between a source that emits raw audio (e.g. [MediaCapture](https://auscaster.com/icey/docs/api-reference/icy-av-MediaCapture.md#mediacapture)) and a sink that expects encoded data (e.g. WebRtcTrackSender or [MultiplexPacketEncoder](https://auscaster.com/icey/docs/api-reference/icy-av-MultiplexPacketEncoder.md#multiplexpacketencoder)).

Example:

auto encoder = std::make_shared<av::AudioPacketEncoder>(); encoder->oparams = [av::AudioCodec](https://auscaster.com/icey/docs/api-reference/icy-av-AudioCodec.md#audiocodec)("opus", "libopus", 2, 48000);

[PacketStream](https://auscaster.com/icey/docs/api-reference/icy-PacketStream.md#packetstream) stream; stream.attachSource(capture); stream.attach(encoder, 1, true); stream.attach(&webrtcSender, 5, false); stream.start();

## List of all members

| Name | Kind | Owner |
|------|------|-------|
| [`PacketStream`](#packetstream-5) | `friend` | Declared here |
| [`AudioPacketEncoder`](#audiopacketencoder-1) | `function` | Declared here |
| [`~AudioPacketEncoder`](#audiopacketencoder-2) | `function` | Declared here |
| [`AudioPacketEncoder`](#audiopacketencoder-3) | `function` | Declared here |
| [`operator=`](#operator-164) | `function` | Declared here |
| [`process`](#process-12) | `function` | Declared here |
| [`accepts`](#accepts-3) | `function` | Declared here |
| [`_initialized`](#_initialized) | `variable` | Declared here |
| [`_mutex`](#_mutex-10) | `variable` | Declared here |
| [`onStreamStateChange`](#onstreamstatechange-7) | `function` | Declared here |
| [`fifo`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#fifo-1) | `variable` | Inherited from [`AudioEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#audioencoder) |
| [`format`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#format-12) | `variable` | Inherited from [`AudioEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#audioencoder) |
| [`nextOutputPts`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#nextoutputpts) | `variable` | Inherited from [`AudioEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#audioencoder) |
| [`AudioEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#audioencoder-1) | `function` | Inherited from [`AudioEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#audioencoder) |
| [`~AudioEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#audioencoder-2) | `function` | Inherited from [`AudioEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#audioencoder) |
| [`create`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#create-4) | `function` | Inherited from [`AudioEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#audioencoder) |
| [`close`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#close-11) | `function` | Inherited from [`AudioEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#audioencoder) |
| [`encode`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#encode-3) | `function` | Inherited from [`AudioEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#audioencoder) |
| [`encode`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#encode-4) | `function` | Inherited from [`AudioEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#audioencoder) |
| [`encode`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#encode-5) | `function` | Inherited from [`AudioEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#audioencoder) |
| [`flush`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#flush-5) | `function` | Inherited from [`AudioEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#audioencoder) |
| [`emitter`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#emitter-7) | `variable` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`iparams`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#iparams) | `variable` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`oparams`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#oparams) | `variable` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`stream`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#stream-8) | `variable` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`ctx`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#ctx) | `variable` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`codec`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#codec-5) | `variable` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`frame`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#frame) | `variable` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`resampler`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#resampler) | `variable` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`outputFrameSize`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#outputframesize) | `variable` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`time`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#time) | `variable` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`pts`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#pts) | `variable` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`seconds`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#seconds-3) | `variable` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`error`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#error-8) | `variable` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext-1) | `function` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`~AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext-2) | `function` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext-3) | `function` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#operator-149) | `function` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext-4) | `function` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#operator-150) | `function` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`create`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#create-2) | `function` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`open`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#open-2) | `function` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`close`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#close-9) | `function` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`decode`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#decode) | `function` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`encode`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#encode) | `function` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`encode`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#encode-1) | `function` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`encode`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#encode-2) | `function` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`flush`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#flush-3) | `function` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`recreateResampler`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#recreateresampler) | `function` | Inherited from [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext) |
| [`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 [`AudioEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#audioencoder)

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`fifo`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#fifo-1)  |  |
| `variable` | [`format`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#format-12)  |  |
| `variable` | [`nextOutputPts`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#nextoutputpts)  | Running PTS counter for encoder output, in encoder time_base units. Anchored to the first input packet's PTS, then advanced by frame->nb_samples per encoded frame. AV_NOPTS_VALUE before anchoring. |
| `function` | [`AudioEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#audioencoder-1)  | Construct an encoder, optionally tied to an existing muxer context. |
| `function` | [`~AudioEncoder`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#audioencoder-2) `noexcept` `override` |  |
| `function` | [`create`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#create-4) `virtual` `override` | Initialise the AVCodecContext using oparams. Adds an audio stream to `format` if one was provided at construction. |
| `function` | [`close`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#close-11) `virtual` `override` | Close and free the AVCodecContext, FIFO buffer, and associated resources. |
| `function` | [`encode`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#encode-3) `virtual` `override` | Encode interleaved audio samples. |
| `function` | [`encode`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#encode-4) `virtual` `override` | Encode planar audio samples. |
| `function` | [`encode`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#encode-5) `virtual` `override` | Encode a single AVFrame (typically from a decoder or resampler). |
| `function` | [`flush`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#flush-5) `virtual` `override` | Flush remaining packets to be encoded. This method should be called once before stream closure. |

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

| Kind | Name | Description |
|------|------|-------------|
| `variable` | [`emitter`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#emitter-7)  |  |
| `variable` | [`iparams`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#iparams)  | input parameters |
| `variable` | [`oparams`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#oparams)  | output parameters |
| `variable` | [`stream`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#stream-8)  | encoder or decoder stream |
| `variable` | [`ctx`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#ctx)  | encoder or decoder context |
| `variable` | [`codec`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#codec-5)  | encoder or decoder codec |
| `variable` | [`frame`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#frame)  | last encoded or decoded frame |
| `variable` | [`resampler`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#resampler)  | audio resampler |
| `variable` | [`outputFrameSize`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#outputframesize)  | encoder or decoder output frame size |
| `variable` | [`time`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#time)  | stream time in codec time base |
| `variable` | [`pts`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#pts)  | last packet pts value |
| `variable` | [`seconds`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#seconds-3)  | audio time in seconds |
| `variable` | [`error`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#error-8)  | error message |
| `function` | [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext-1)  |  |
| `function` | [`~AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext-2) `virtual` `noexcept` |  |
| `function` | [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext-3)  | Deleted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#operator-149)  | Deleted assignment operator. |
| `function` | [`AudioContext`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#audiocontext-4)  | Deleted constructor. |
| `function` | [`operator=`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#operator-150)  | Deleted assignment operator. |
| `function` | [`create`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#create-2) `virtual` | Initialise the AVCodecContext with codec-specific defaults. Implemented by [AudioEncoder](https://auscaster.com/icey/docs/api-reference/icy-av-AudioEncoder.md#audioencoder) and [AudioDecoder](https://auscaster.com/icey/docs/api-reference/icy-av-AudioDecoder.md#audiodecoder). |
| `function` | [`open`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#open-2) `virtual` | Open the codec and create the resampler if input/output parameters differ. Throws std::runtime_error if the codec context has not been created. |
| `function` | [`close`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#close-9) `virtual` | Close the codec context, free the frame, and reset timestamps. |
| `function` | [`decode`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#decode) `virtual` | Decode a compressed audio packet and emit the resulting samples. |
| `function` | [`encode`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#encode) `virtual` | Encode a buffer of interleaved audio samples. |
| `function` | [`encode`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#encode-1) `virtual` | Encode a buffer of planar audio samples. |
| `function` | [`encode`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#encode-2) `virtual` | Encode a single AVFrame. |
| `function` | [`flush`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#flush-3) `virtual` | Flush any frames buffered inside the codec and emit remaining output. |
| `function` | [`recreateResampler`](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#recreateresampler) `virtual` | Recreate the [AudioResampler](https://auscaster.com/icey/docs/api-reference/icy-av-AudioResampler.md#audioresampler) using the current iparams and oparams. Called automatically by [open()](https://auscaster.com/icey/docs/api-reference/icy-av-AudioContext.md#open-2) when format conversion is required. |

## 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-5)  |  |

---

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

### PacketStream

```cpp
friend class PacketStream
```

[Defined in src/av/include/icy/av/audiopacketencoder.h:64](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/audiopacketencoder.h#L64)

## Public Methods

| Return | Name | Description |
|--------|------|-------------|
|  | [`AudioPacketEncoder`](#audiopacketencoder-1)  |  |
|  | [`~AudioPacketEncoder`](#audiopacketencoder-2) `noexcept` `override` |  |
|  | [`AudioPacketEncoder`](#audiopacketencoder-3)  | Deleted constructor. |
| [`AudioPacketEncoder`](#audiopacketencoder) & | [`operator=`](#operator-164)  | Deleted assignment operator. |
| `void` | [`process`](#process-12) `virtual` `override` | [Process](https://auscaster.com/icey/docs/api-reference/icy-Process.md#process-3) an [AudioPacket](https://auscaster.com/icey/docs/api-reference/icy-av-AudioPacket.md#audiopacket) or [PlanarAudioPacket](https://auscaster.com/icey/docs/api-reference/icy-av-PlanarAudioPacket.md#planaraudiopacket) from the stream. Encodes the samples and emits the resulting compressed packet. |
| `bool` | [`accepts`](#accepts-3) `virtual` `override` | Accept [AudioPacket](https://auscaster.com/icey/docs/api-reference/icy-av-AudioPacket.md#audiopacket) and [PlanarAudioPacket](https://auscaster.com/icey/docs/api-reference/icy-av-PlanarAudioPacket.md#planaraudiopacket) types. |

---

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

### AudioPacketEncoder

```cpp
AudioPacketEncoder(AVFormatContext * format = nullptr)
```

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

---

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

### ~AudioPacketEncoder

`noexcept` `override`

```cpp
~AudioPacketEncoder() noexcept override
```

[Defined in src/av/include/icy/av/audiopacketencoder.h:49](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/audiopacketencoder.h#L49)

---

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

### AudioPacketEncoder

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

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

Deleted constructor.

---

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

### operator=

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

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

Deleted assignment operator.

---

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

### process

`virtual` `override`

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

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

[Process](https://auscaster.com/icey/docs/api-reference/icy-Process.md#process-3) an [AudioPacket](https://auscaster.com/icey/docs/api-reference/icy-av-AudioPacket.md#audiopacket) or [PlanarAudioPacket](https://auscaster.com/icey/docs/api-reference/icy-av-PlanarAudioPacket.md#planaraudiopacket) from the stream. Encodes the samples and emits the resulting compressed packet.

#### Reimplements

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

---

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

### accepts

`virtual` `override`

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

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

Accept [AudioPacket](https://auscaster.com/icey/docs/api-reference/icy-av-AudioPacket.md#audiopacket) and [PlanarAudioPacket](https://auscaster.com/icey/docs/api-reference/icy-av-PlanarAudioPacket.md#planaraudiopacket) types.

#### Reimplements

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

## Protected Attributes

| Return | Name | Description |
|--------|------|-------------|
| `bool` | [`_initialized`](#_initialized)  |  |
| `std::mutex` | [`_mutex`](#_mutex-10)  |  |

---

<a id="_initialized"></a>

### _initialized

```cpp
bool _initialized = false
```

[Defined in src/av/include/icy/av/audiopacketencoder.h:66](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/audiopacketencoder.h#L66)

---

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

### _mutex

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

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

## Protected Methods

| Return | Name | Description |
|--------|------|-------------|
| `void` | [`onStreamStateChange`](#onstreamstatechange-7) `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-7"></a>

### onStreamStateChange

`virtual` `override`

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

[Defined in src/av/include/icy/av/audiopacketencoder.h:62](https://github.com/auscaster/icey/blob/main/src/av/include/icy/av/audiopacketencoder.h#L62)

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)
