Pārlūkot izejas kodu

Merge pull request #1140 from sile/fix-h264-depacketizer

Fix `H264RtpDepacketizer` to handle empty payload RTP packet
Paul-Louis Ageneau 1 gadu atpakaļ
vecāks
revīzija
d69d52ed1b
1 mainītis faili ar 11 papildinājumiem un 0 dzēšanām
  1. 11 0
      src/h264rtpdepacketizer.cpp

+ 11 - 0
src/h264rtpdepacketizer.cpp

@@ -42,6 +42,17 @@ message_vector H264RtpDepacketizer::buildFrames(message_vector::iterator begin,
 		auto pktParsed = reinterpret_cast<const rtc::RtpHeader *>(pkt->data());
 		auto headerSize =
 		    sizeof(rtc::RtpHeader) + pktParsed->csrcCount() + pktParsed->getExtensionHeaderSize();
+		auto paddingSize = 0;
+
+		if (pktParsed->padding()) {
+			paddingSize = std::to_integer<uint8_t>(pkt->at(pkt->size() - 1));
+		}
+
+		if (pkt->size() == headerSize + paddingSize) {
+			PLOG_VERBOSE << "H.264 RTP packet has empty payload";
+			continue;
+		}
+
 		auto nalUnitHeader = NalUnitHeader{std::to_integer<uint8_t>(pkt->at(headerSize))};
 
 		if (fua_buffer.size() != 0 || nalUnitHeader.unitType() == naluTypeFUA) {