11#include <promeki/config.h>
12#if PROMEKI_ENABLE_NETWORK
23PROMEKI_NAMESPACE_BEGIN
104class RtpPayloadAnc :
public RtpPayload {
109 static constexpr uint32_t ClockRate = 90000;
112 static constexpr uint8_t DefaultPayloadType = 100;
117 static constexpr size_t PayloadHeaderSize = 8;
122 static constexpr size_t PerPacketHeaderSize = 4;
138 enum class FieldIndication : uint8_t {
141 InterlacedField1 = 0x2,
142 InterlacedField2 = 0x3,
151 explicit RtpPayloadAnc(uint8_t payloadType = DefaultPayloadType);
154 uint8_t payloadType()
const override {
return _payloadType; }
157 uint32_t clockRate()
const override {
return ClockRate; }
169 RtpPacket::List pack(
const void *mediaData,
size_t size)
override;
178 Buffer unpack(
const RtpPacket::List &packets)
override;
194 ValidateResult validate(
const Buffer &unpacked)
override;
197 void setPayloadType(uint8_t pt) { _payloadType = pt; }
219 void setKeepAliveField(FieldIndication f);
222 FieldIndication keepAliveField()
const {
return _keepAliveField; }
266 RtpPacket::List packAncFrame(
const AncPacket::List &packets,
267 uint32_t rtpTimestamp);
337 Error unpackAncPackets(
const RtpPacket::List &in,
338 AncPacket::List &out,
339 AncChecksumPolicy policy = AncChecksumPolicy::PreserveOrRecompute);
342 uint8_t _payloadType;
343 FieldIndication _keepAliveField = FieldIndication::Progressive;