#ifndef RTC_AV1_RTP_PACKETIZER_H
#define RTC_AV1_RTP_PACKETIZER_H
#if RTC_ENABLE_MEDIA
#include "mediahandler.hpp"
#include "nalunit.hpp"
#include "rtppacketizer.hpp"
namespace rtc {
class RTC_CPP_EXPORT AV1RtpPacketizer final : public RtpPacketizer {
public:
inline static const uint32_t ClockRate = VideoClockRate;
[[deprecated("Use ClockRate")]] inline static const uint32_t defaultClockRate = ClockRate;
enum class Packetization {
Obu = RTC_OBU_PACKETIZED_OBU,
TemporalUnit = RTC_OBU_PACKETIZED_TEMPORAL_UNIT,
};
AV1RtpPacketizer(Packetization packetization, shared_ptr<RtpPacketizationConfig> rtpConfig,
size_t maxFragmentSize = DefaultMaxFragmentSize);
private:
static std::vector<binary> extractTemporalUnitObus(const binary &data);
std::vector<binary> fragment(binary data) override;
std::vector<binary> fragmentObu(const binary &data);
const Packetization mPacketization;
const size_t mMaxFragmentSize;
std::unique_ptr<binary> mSequenceHeader;
};
using AV1PacketizationHandler [[deprecated("Add AV1RtpPacketizer directly")]] = PacketizationHandler;
}
#endif
#endif