Adjust RtcpReceiver to be testable with callbacks:

Instead of full RtpRtcpImpl takes interface of all functions it needs from it.
Added single function for parsing packets and sending feedback, moving that
logic from RtpRtcpImpl to RtcpReceiver.

BUG=webrtc:5260

Review-Url: https://codereview.webrtc.org/2274573002
Cr-Commit-Position: refs/heads/master@{#13960}
This commit is contained in:
danilchap
2016-08-29 11:08:47 -07:00
committed by Commit bot
parent 65fc8b9138
commit 59cb2bd20e
4 changed files with 43 additions and 27 deletions

View File

@ -20,7 +20,6 @@
#include "webrtc/base/trace_event.h"
#include "webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h"
#include "webrtc/modules/rtp_rtcp/source/rtcp_utility.h"
#include "webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.h"
#include "webrtc/modules/rtp_rtcp/source/time_util.h"
#include "webrtc/modules/rtp_rtcp/source/tmmbr_help.h"
#include "webrtc/system_wrappers/include/ntp_time.h"
@ -46,7 +45,7 @@ RTCPReceiver::RTCPReceiver(
RtcpBandwidthObserver* rtcp_bandwidth_observer,
RtcpIntraFrameObserver* rtcp_intra_frame_observer,
TransportFeedbackObserver* transport_feedback_observer,
ModuleRtpRtcpImpl* owner)
ModuleRtpRtcp* owner)
: _clock(clock),
receiver_only_(receiver_only),
_lastReceived(0),
@ -97,6 +96,20 @@ RTCPReceiver::~RTCPReceiver() {
}
}
bool RTCPReceiver::IncomingPacket(const uint8_t* packet, size_t packet_size) {
// Allow receive of non-compound RTCP packets.
RTCPUtility::RTCPParserV2 rtcp_parser(packet, packet_size, true);
if (!rtcp_parser.IsValid()) {
LOG(LS_WARNING) << "Incoming invalid RTCP packet";
return false;
}
RTCPHelp::RTCPPacketInformation rtcp_packet_information;
IncomingRTCPPacket(rtcp_packet_information, &rtcp_parser);
TriggerCallbacksFromRTCPPacket(rtcp_packet_information);
return true;
}
int64_t RTCPReceiver::LastReceived() {
rtc::CritScope lock(&_criticalSectionRTCPReceiver);
return _lastReceived;