1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-15 04:42:04 +00:00

SquashSRS4: Refine RTC extension ID parsing

This commit is contained in:
winlin 2021-03-24 19:00:42 +08:00
parent ff268dca23
commit aab54b2cf4

View file

@ -411,7 +411,7 @@ srs_error_t SrsRtpExtensions::decode_0xbede(SrsBuffer* buf)
// Note that 'len' is the header extension element length, which is the // Note that 'len' is the header extension element length, which is the
// number of bytes - 1. // number of bytes - 1.
uint8_t id = (v & 0xF0) >> 4; uint8_t id = (v & 0xF0) >> 4;
uint8_t len = (v & 0x0F); uint8_t len = (v & 0x0F) + 1;
SrsRtpExtensionType xtype = types_? types_->get_type(id) : kRtpExtensionNone; SrsRtpExtensionType xtype = types_? types_->get_type(id) : kRtpExtensionNone;
if (xtype == kRtpExtensionTransportSequenceNumber) { if (xtype == kRtpExtensionTransportSequenceNumber) {
@ -421,10 +421,10 @@ srs_error_t SrsRtpExtensions::decode_0xbede(SrsBuffer* buf)
} }
has_ext_ = true; has_ext_ = true;
} else { } else {
if (!buf->require(len+1+1)) { if (!buf->require(len+1)) {
return srs_error_new(ERROR_RTC_RTP_MUXER, "requires %d bytes", len+1+1); return srs_error_new(ERROR_RTC_RTP_MUXER, "requires %d bytes", len+1);
} }
buf->skip(len + 1 + 1); buf->skip(len + 1);
} }
} else if (xtype == kRtpExtensionAudioLevel) { } else if (xtype == kRtpExtensionAudioLevel) {
if((err = audio_level_.decode(buf)) != srs_success) { if((err = audio_level_.decode(buf)) != srs_success) {
@ -432,7 +432,7 @@ srs_error_t SrsRtpExtensions::decode_0xbede(SrsBuffer* buf)
} }
has_ext_ = true; has_ext_ = true;
} else { } else {
buf->skip(1 + (len + 1)); buf->skip(1 + len);
} }
} }