Revert of Wire up send-side bandwidth estimation. (patchset #8 id:140001 of https://codereview.webrtc.org/1338203003/ )

Reason for revert:
Breaking some Android bots.
https://chromegw.corp.google.com/i/client.webrtc/builders/Android32%20Tests%20%28L%20Nexus5%29

Original issue's description:
> Wire up send-side bandwidth estimation.
>
> BUG=webrtc:4173
>
> Committed: https://crrev.com/ef165eefc79cf28bb67779afe303cc2365885547
> Cr-Commit-Position: refs/heads/master@{#10012}

TBR=stefan@webrtc.org, kjellander@webrtc.org
NOPRESUBMIT=false
NOTREECHECKS=false
NOTRY=false
BUG=webrtc:4173

Review URL: https://codereview.webrtc.org/1362923002 .

Cr-Commit-Position: refs/heads/master@{#10029}
This commit is contained in:
Erik Språng
2015-09-23 13:51:47 +02:00
parent d5c75b1a0b
commit c9bbeb0354
26 changed files with 111 additions and 428 deletions

View File

@ -8,9 +8,7 @@
* be found in the AUTHORS file in the root of the source tree.
*/
#include "webrtc/base/checks.h"
#include "webrtc/modules/rtp_rtcp/source/rtcp_utility.h"
#include "webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h"
#include <assert.h>
#include <math.h> // ceil
@ -57,7 +55,6 @@ RTCPUtility::RTCPParserV2::RTCPParserV2(const uint8_t* rtcpData,
_ptrRTCPBlockEnd(NULL),
_state(ParseState::State_TopLevel),
_numberOfBlocks(0),
num_skipped_blocks_(0),
_packetType(RTCPPacketTypes::kInvalid) {
Validate();
}
@ -83,9 +80,6 @@ RTCPUtility::RTCPParserV2::Packet() const
return _packet;
}
rtcp::RtcpPacket* RTCPUtility::RTCPParserV2::ReleaseRtcpPacket() {
return rtcp_packet_.release();
}
RTCPUtility::RTCPPacketTypes
RTCPUtility::RTCPParserV2::Begin()
{
@ -153,7 +147,7 @@ RTCPUtility::RTCPParserV2::Iterate()
IterateAppItem();
break;
default:
RTC_NOTREACHED() << "Invalid state!";
assert(false); // Invalid state!
break;
}
}
@ -176,7 +170,7 @@ RTCPUtility::RTCPParserV2::IterateTopLevel()
_ptrRTCPBlockEnd = _ptrRTCPData + header.BlockSize();
if (_ptrRTCPBlockEnd > _ptrRTCPDataEnd)
{
++num_skipped_blocks_;
// Bad block!
return;
}
@ -225,15 +219,16 @@ RTCPUtility::RTCPParserV2::IterateTopLevel()
ParseIJ();
return;
}
case PT_RTPFB:
FALLTHROUGH();
case PT_RTPFB: // Fall through!
case PT_PSFB:
{
if (!ParseFBCommon(header)) {
// Nothing supported found, continue to next block!
break;
}
return;
const bool ok = ParseFBCommon(header);
if (!ok)
{
// Nothing supported found, continue to next block!
break;
}
return;
}
case PT_APP:
{
@ -257,7 +252,6 @@ RTCPUtility::RTCPParserV2::IterateTopLevel()
}
default:
// Not supported! Skip!
++num_skipped_blocks_;
EndCurrentBlock();
break;
}
@ -1166,26 +1160,28 @@ bool RTCPUtility::RTCPParserV2::ParseXrUnsupportedBlockType(
}
bool RTCPUtility::RTCPParserV2::ParseFBCommon(const RtcpCommonHeader& header) {
RTC_CHECK((header.packet_type == PT_RTPFB) ||
(header.packet_type == PT_PSFB)); // Parser logic check
assert((header.packet_type == PT_RTPFB) ||
(header.packet_type == PT_PSFB)); // Parser logic check
const ptrdiff_t length = _ptrRTCPBlockEnd - _ptrRTCPData;
// 4 * 3, RFC4585 section 6.1
if (length < 12) {
LOG(LS_WARNING)
<< "Invalid RTCP packet: Too little data (" << length
<< " bytes) left in buffer to parse a 12 byte RTPFB/PSFB message.";
if (length < 12) // 4 * 3, RFC4585 section 6.1
{
EndCurrentBlock();
return false;
}
_ptrRTCPData += 4; // Skip RTCP header
uint32_t senderSSRC = ByteReader<uint32_t>::ReadBigEndian(_ptrRTCPData);
_ptrRTCPData += 4;
uint32_t senderSSRC = *_ptrRTCPData++ << 24;
senderSSRC += *_ptrRTCPData++ << 16;
senderSSRC += *_ptrRTCPData++ << 8;
senderSSRC += *_ptrRTCPData++;
uint32_t mediaSSRC = ByteReader<uint32_t>::ReadBigEndian(_ptrRTCPData);
_ptrRTCPData += 4;
uint32_t mediaSSRC = *_ptrRTCPData++ << 24;
mediaSSRC += *_ptrRTCPData++ << 16;
mediaSSRC += *_ptrRTCPData++ << 8;
mediaSSRC += *_ptrRTCPData++;
if (header.packet_type == PT_RTPFB) {
// Transport layer feedback
@ -1202,6 +1198,12 @@ bool RTCPUtility::RTCPParserV2::ParseFBCommon(const RtcpCommonHeader& header) {
return true;
}
case 2:
{
// used to be ACK is this code point, which is removed
// conficts with http://tools.ietf.org/html/draft-levin-avt-rtcp-burst-00
break;
}
case 3:
{
// TMMBR
@ -1234,23 +1236,10 @@ bool RTCPUtility::RTCPParserV2::ParseFBCommon(const RtcpCommonHeader& header) {
// Note: No state transition, SR REQ is empty!
return true;
}
case 15: {
_packetType = RTCPPacketTypes::kTransportFeedback;
rtcp_packet_ =
rtcp::TransportFeedback::ParseFrom(_ptrRTCPData - 12, length);
// Since we parse the whole packet here, keep the TopLevel state and
// just end the current block.
if (rtcp_packet_.get()) {
EndCurrentBlock();
return true;
}
break;
}
default:
break;
}
// Unsupported RTPFB message. Skip and move to next block.
++num_skipped_blocks_;
EndCurrentBlock();
return false;
} else if (header.packet_type == PT_PSFB) {
// Payload specific feedback
@ -1298,11 +1287,14 @@ bool RTCPUtility::RTCPParserV2::ParseFBCommon(const RtcpCommonHeader& header) {
break;
}
EndCurrentBlock();
return false;
}
else
{
RTC_NOTREACHED();
assert(false);
EndCurrentBlock();
return false;
}
}
@ -1662,10 +1654,6 @@ RTCPUtility::RTCPParserV2::ParseAPPItem()
return true;
}
size_t RTCPUtility::RTCPParserV2::NumSkippedBlocks() const {
return num_skipped_blocks_;
}
RTCPUtility::RTCPPacketIterator::RTCPPacketIterator(uint8_t* rtcpData,
size_t rtcpDataLength)
: _ptrBegin(rtcpData),