Skip to content

Commit

Permalink
Fixed padding remove implementation (lynckia#841)
Browse files Browse the repository at this point in the history
  • Loading branch information
lodoyun authored Apr 7, 2017
1 parent 03e0f6b commit 97964a0
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 10 deletions.
24 changes: 15 additions & 9 deletions erizo/src/erizo/rtp/RtpPaddingRemovalHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,17 @@ void RtpPaddingRemovalHandler::read(Context *ctx, std::shared_ptr<dataPacket> pa
RtcpHeader *chead = reinterpret_cast<RtcpHeader*>(packet->data);

if (!chead->isRtcp() && enabled_ && packet->type == VIDEO_PACKET) {
removePaddingBytes(packet);
if (!removePaddingBytes(packet)) {
return;
}
RtpHeader *rtp_header = reinterpret_cast<RtpHeader*>(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);
}
Expand All @@ -29,23 +39,19 @@ void RtpPaddingRemovalHandler::write(Context *ctx, std::shared_ptr<dataPacket> p
ctx->fireWrite(packet);
}

void RtpPaddingRemovalHandler::removePaddingBytes(std::shared_ptr<dataPacket> packet) {
bool RtpPaddingRemovalHandler::removePaddingBytes(std::shared_ptr<dataPacket> packet) {
RtpHeader *rtp_header = reinterpret_cast<RtpHeader*>(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() {
Expand Down
2 changes: 1 addition & 1 deletion erizo/src/erizo/rtp/RtpPaddingRemovalHandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class RtpPaddingRemovalHandler: public Handler, public std::enable_shared_from_t
void notifyUpdate() override;

private:
void removePaddingBytes(std::shared_ptr<dataPacket> packet);
bool removePaddingBytes(std::shared_ptr<dataPacket> packet);

private:
bool enabled_;
Expand Down
1 change: 1 addition & 0 deletions erizo_controller/erizoAgent/log4cxx.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 97964a0

Please sign in to comment.