|
@@ -19,7 +19,7 @@
|
|
|
|
|
|
namespace rtc {
|
|
|
|
|
|
-RembHandler::RembHandler(std::function<void(unsigned int, unsigned int)> onRemb) : mOnRemb(onRemb) {}
|
|
|
+RembHandler::RembHandler(std::function<void(unsigned int)> onRemb) : mOnRemb(onRemb) {}
|
|
|
|
|
|
void RembHandler::incoming(message_vector &messages, [[maybe_unused]] const message_callback &send) {
|
|
|
for (const auto &message : messages) {
|
|
@@ -28,10 +28,13 @@ void RembHandler::incoming(message_vector &messages, [[maybe_unused]] const mess
|
|
|
auto header = reinterpret_cast<RtcpHeader *>(message->data() + offset);
|
|
|
uint8_t payload_type = header->payloadType();
|
|
|
|
|
|
- if (payload_type == 206 && header->reportCount() == 15) {
|
|
|
- auto remb = reinterpret_cast<RtcpRemb *>(message->data() + offset);
|
|
|
- mOnRemb(remb->getNumSSRC(), remb->getBitrate());
|
|
|
- break;
|
|
|
+ if (payload_type == 206 && header->reportCount() == 15 && header->lengthInBytes() == sizeof(RtcpRemb)) {
|
|
|
+ auto remb = reinterpret_cast<RtcpRemb *>(message->data() + offset);
|
|
|
+
|
|
|
+ if (remb->_id[0] == 'R' && remb->_id[1] == 'E' && remb->_id[2] == 'M' && remb->_id[3] == 'B') {
|
|
|
+ mOnRemb(remb->getBitrate());
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
offset += header->lengthInBytes();
|