#include "plihandler.hpp"
#include "rtp.hpp"
#if RTC_ENABLE_MEDIA
namespace rtc {
PliHandler::PliHandler(std::function<void(void)> onPli) : mOnPli(onPli) {}
void PliHandler::incoming(message_vector &messages, [[maybe_unused]] const message_callback &send) {
for (const auto &message : messages) {
size_t offset = 0;
while ((sizeof(RtcpHeader) + offset) <= message->size()) {
auto header = reinterpret_cast<RtcpHeader *>(message->data() + offset);
uint8_t payload_type = header->payloadType();
if (payload_type == 196) {
mOnPli();
break;
} else if (payload_type == 206) {
uint8_t feedback_message_type = header->reportCount();
if (feedback_message_type == 1) {
mOnPli();
break;
}
}
offset += header->lengthInBytes();
}
}
}
}
#endif