11#include <promeki/config.h>
12#if PROMEKI_ENABLE_NETWORK
24PROMEKI_NAMESPACE_BEGIN
45struct RtpAudioPacketizerContext {
50 AudioDesc storageDesc;
54 size_t packetSamples = 0;
58 size_t packetBytes = 0;
66 size_t prerollSamples = 0;
83 Queue<Buffer> *txPacketQueue =
nullptr;
131class RtpAudioPacketizerThread :
public RtpPacketizerThread {
145 RtpAudioPacketizerThread(
146 RtpAudioPacketizerContext ctx,
147 const String &name = String(
"RtpAudPkt"),
148 size_t depth = DefaultPayloadQueueDepth);
150 ~RtpAudioPacketizerThread()
override;
152 RtpAudioPacketizerThread(
const RtpAudioPacketizerThread &) =
delete;
153 RtpAudioPacketizerThread &operator=(
const RtpAudioPacketizerThread &) =
delete;
161 void packetizeForTest(
const RtpFrameWork &work) { packetize(work); }
167 void openForTest() { onStart(); }
172 const AudioBuffer &fifo()
const {
return _fifo; }
175 bool isPrerollDone()
const {
return _prerollDone; }
178 void onStart()
override;
179 void packetize(
const RtpFrameWork &work)
override;
182 RtpAudioPacketizerContext _ctx;
184 List<uint8_t> _drained;
185 bool _prerollDone =
false;