11#include <promeki/config.h>
12#if PROMEKI_ENABLE_NETWORK
28PROMEKI_NAMESPACE_BEGIN
55struct RtpAudioDepacketizerContext {
61 Queue<RxAudioChunk> *payloadQueue =
nullptr;
70 const Atomic<uint32_t> *resetEpoch =
nullptr;
81 const bool *active =
nullptr;
88 const AudioDesc *readerAudioDesc =
nullptr;
96 const bool *hasSr =
nullptr;
102 const RtpStreamClock *streamClock =
nullptr;
107 Atomic<int64_t> *packetsReceived =
nullptr;
108 Atomic<int64_t> *bytesReceived =
nullptr;
109 Atomic<int64_t> *lastPacketArrivalNs =
nullptr;
110 Atomic<int64_t> *framesReassembled =
nullptr;
117 Function<void()> noteFrameReceived;
124 Function<void()> refreshStreamClock;
134 Function<TimeStamp(
const NtpTime &)> ntpToSteady;
161class RtpAudioDepacketizerThread :
public RtpDepacketizerThread {
173 RtpAudioDepacketizerThread(RtpAudioDepacketizerContext ctx,
175 uint32_t clockRateHz);
177 ~RtpAudioDepacketizerThread()
override;
179 RtpAudioDepacketizerThread(
const RtpAudioDepacketizerThread &) =
delete;
180 RtpAudioDepacketizerThread &operator=(
const RtpAudioDepacketizerThread &) =
delete;
184 void handlePacketForTest(
const RtpPacket &pkt) { handlePacket(pkt); }
187 void handlePacket(
const RtpPacket &pkt)
override;
190 RtpAudioDepacketizerContext _ctx;
191 uint32_t _lastEpoch = 0;