diff --git a/erizo/src/erizo/rtp/RtpPaddingRemovalHandler.cpp b/erizo/src/erizo/rtp/RtpPaddingRemovalHandler.cpp index 5c062fff39..2d34513d44 100644 --- a/erizo/src/erizo/rtp/RtpPaddingRemovalHandler.cpp +++ b/erizo/src/erizo/rtp/RtpPaddingRemovalHandler.cpp @@ -20,7 +20,17 @@ void RtpPaddingRemovalHandler::read(Context *ctx, std::shared_ptr pa RtcpHeader *chead = reinterpret_cast(packet->data); if (!chead->isRtcp() && enabled_ && packet->type == VIDEO_PACKET) { - removePaddingBytes(packet); + if (!removePaddingBytes(packet)) { + return; + } + RtpHeader *rtp_header = reinterpret_cast(packet->data); + uint16_t sequence_number = rtp_header->getSeqNumber(); + SequenceNumber sequence_number_info = translator_.get(sequence_number, false); + + if (sequence_number_info.type != SequenceNumberType::Valid) { + return; + } + rtp_header->setSeqNumber(sequence_number_info.output); } ctx->fireRead(packet); } @@ -29,23 +39,19 @@ void RtpPaddingRemovalHandler::write(Context *ctx, std::shared_ptr p ctx->fireWrite(packet); } -void RtpPaddingRemovalHandler::removePaddingBytes(std::shared_ptr packet) { +bool RtpPaddingRemovalHandler::removePaddingBytes(std::shared_ptr packet) { RtpHeader *rtp_header = reinterpret_cast(packet->data); int header_length = rtp_header->getHeaderLength(); - uint16_t sequence_number = rtp_header->getSeqNumber(); int padding_length = RtpUtils::getPaddingLength(packet); if (padding_length + header_length == packet->length) { + uint16_t sequence_number = rtp_header->getSeqNumber(); translator_.get(sequence_number, true); - return; - } - SequenceNumber sequence_number_info = translator_.get(sequence_number, false); - if (sequence_number_info.type != SequenceNumberType::Valid) { - return; + return false; } packet->length -= padding_length; - rtp_header->setSeqNumber(sequence_number_info.output); rtp_header->padding = 0; + return true; } void RtpPaddingRemovalHandler::notifyUpdate() { diff --git a/erizo/src/erizo/rtp/RtpPaddingRemovalHandler.h b/erizo/src/erizo/rtp/RtpPaddingRemovalHandler.h index bf1e5927be..690cf5325f 100644 --- a/erizo/src/erizo/rtp/RtpPaddingRemovalHandler.h +++ b/erizo/src/erizo/rtp/RtpPaddingRemovalHandler.h @@ -28,7 +28,7 @@ class RtpPaddingRemovalHandler: public Handler, public std::enable_shared_from_t void notifyUpdate() override; private: - void removePaddingBytes(std::shared_ptr packet); + bool removePaddingBytes(std::shared_ptr packet); private: bool enabled_; diff --git a/erizo_controller/erizoAgent/log4cxx.properties b/erizo_controller/erizoAgent/log4cxx.properties index 63cfe694fc..ca719e533a 100644 --- a/erizo_controller/erizoAgent/log4cxx.properties +++ b/erizo_controller/erizoAgent/log4cxx.properties @@ -54,6 +54,7 @@ log4j.logger.rtp.RtpAudioMuteHandler=WARN log4j.logger.rtp.RtpSink=WARN log4j.logger.rtp.RtpSource=WARN log4j.logger.rtp.RtcpFeedbackGenerationHandler=WARN +log4j.logger.rtp.RtpPaddingRemovalHandler=WARN log4j.logger.rtp.RtcpRrGenerator=WARN log4j.logger.rtp.RtcpNackGenerator=WARN log4j.logger.rtp.SRPacketHandler=WARN