Index: webrtc/video/rtp_stream_receiver.cc |
diff --git a/webrtc/video/vie_receiver.cc b/webrtc/video/rtp_stream_receiver.cc |
similarity index 81% |
rename from webrtc/video/vie_receiver.cc |
rename to webrtc/video/rtp_stream_receiver.cc |
index 95d2f6fc8e3e3ec84486357b2e40a7a3402c0960..6421190e9812c0d26fa6868003d13e115f442075 100644 |
--- a/webrtc/video/vie_receiver.cc |
+++ b/webrtc/video/rtp_stream_receiver.cc |
@@ -8,7 +8,7 @@ |
* be found in the AUTHORS file in the root of the source tree. |
*/ |
-#include "webrtc/video/vie_receiver.h" |
+#include "webrtc/video/rtp_stream_receiver.h" |
#include <vector> |
@@ -67,13 +67,13 @@ std::unique_ptr<RtpRtcp> CreateRtpRtcpModule( |
static const int kPacketLogIntervalMs = 10000; |
-ViEReceiver::ViEReceiver(vcm::VideoReceiver* video_receiver, |
- RemoteBitrateEstimator* remote_bitrate_estimator, |
- RtpFeedback* rtp_feedback, |
- Transport* transport, |
- RtcpRttStats* rtt_stats, |
- PacedSender* paced_sender, |
- PacketRouter* packet_router) |
+RtpStreamReceiver::RtpStreamReceiver( |
+ vcm::VideoReceiver* video_receiver, |
+ RemoteBitrateEstimator* remote_bitrate_estimator, |
+ Transport* transport, |
+ RtcpRttStats* rtt_stats, |
+ PacedSender* paced_sender, |
+ PacketRouter* packet_router) |
: clock_(Clock::GetRealTimeClock()), |
video_receiver_(video_receiver), |
remote_bitrate_estimator_(remote_bitrate_estimator), |
@@ -83,7 +83,7 @@ ViEReceiver::ViEReceiver(vcm::VideoReceiver* video_receiver, |
rtp_header_parser_(RtpHeaderParser::Create()), |
rtp_receiver_(RtpReceiver::CreateVideoReceiver(clock_, |
this, |
- rtp_feedback, |
+ this, |
&rtp_payload_registry_)), |
rtp_receive_statistics_(ReceiveStatistics::Create(clock_)), |
fec_receiver_(FecReceiver::Create(this)), |
@@ -101,12 +101,12 @@ ViEReceiver::ViEReceiver(vcm::VideoReceiver* video_receiver, |
rtp_rtcp_->SetKeyFrameRequestMethod(kKeyFrameReqPliRtcp); |
} |
-ViEReceiver::~ViEReceiver() { |
+RtpStreamReceiver::~RtpStreamReceiver() { |
packet_router_->RemoveRtpModule(rtp_rtcp_.get()); |
UpdateHistograms(); |
} |
-void ViEReceiver::UpdateHistograms() { |
+void RtpStreamReceiver::UpdateHistograms() { |
FecPacketCounter counter = fec_receiver_->GetPacketCounter(); |
if (counter.num_packets > 0) { |
RTC_LOGGED_HISTOGRAM_PERCENTAGE( |
@@ -121,7 +121,7 @@ void ViEReceiver::UpdateHistograms() { |
} |
} |
-bool ViEReceiver::SetReceiveCodec(const VideoCodec& video_codec) { |
+bool RtpStreamReceiver::SetReceiveCodec(const VideoCodec& video_codec) { |
int8_t old_pltype = -1; |
if (rtp_payload_registry_.ReceivePayloadType( |
video_codec.plName, kVideoPayloadTypeFrequency, 0, |
@@ -134,8 +134,8 @@ bool ViEReceiver::SetReceiveCodec(const VideoCodec& video_codec) { |
0, 0) == 0; |
} |
-void ViEReceiver::SetNackStatus(bool enable, |
- int max_nack_reordering_threshold) { |
+void RtpStreamReceiver::SetNackStatus(bool enable, |
+ int max_nack_reordering_threshold) { |
if (!enable) { |
// Reset the threshold back to the lower default threshold when NACK is |
// disabled since we no longer will be receiving retransmissions. |
@@ -146,56 +146,57 @@ void ViEReceiver::SetNackStatus(bool enable, |
rtp_receiver_->SetNACKStatus(enable ? kNackRtcp : kNackOff); |
} |
-void ViEReceiver::SetRtxPayloadType(int payload_type, |
- int associated_payload_type) { |
+void RtpStreamReceiver::SetRtxPayloadType(int payload_type, |
+ int associated_payload_type) { |
rtp_payload_registry_.SetRtxPayloadType(payload_type, |
associated_payload_type); |
} |
-void ViEReceiver::SetUseRtxPayloadMappingOnRestore(bool val) { |
+void RtpStreamReceiver::SetUseRtxPayloadMappingOnRestore(bool val) { |
rtp_payload_registry_.set_use_rtx_payload_mapping_on_restore(val); |
} |
-void ViEReceiver::SetRtxSsrc(uint32_t ssrc) { |
+void RtpStreamReceiver::SetRtxSsrc(uint32_t ssrc) { |
rtp_payload_registry_.SetRtxSsrc(ssrc); |
} |
-bool ViEReceiver::GetRtxSsrc(uint32_t* ssrc) const { |
+bool RtpStreamReceiver::GetRtxSsrc(uint32_t* ssrc) const { |
return rtp_payload_registry_.GetRtxSsrc(ssrc); |
} |
-bool ViEReceiver::IsFecEnabled() const { |
+bool RtpStreamReceiver::IsFecEnabled() const { |
return rtp_payload_registry_.ulpfec_payload_type() > -1; |
} |
-uint32_t ViEReceiver::GetRemoteSsrc() const { |
+uint32_t RtpStreamReceiver::GetRemoteSsrc() const { |
return rtp_receiver_->SSRC(); |
} |
-int ViEReceiver::GetCsrcs(uint32_t* csrcs) const { |
+int RtpStreamReceiver::GetCsrcs(uint32_t* csrcs) const { |
return rtp_receiver_->CSRCs(csrcs); |
} |
-RtpReceiver* ViEReceiver::GetRtpReceiver() const { |
+RtpReceiver* RtpStreamReceiver::GetRtpReceiver() const { |
return rtp_receiver_.get(); |
} |
-void ViEReceiver::EnableReceiveRtpHeaderExtension(const std::string& extension, |
- int id) { |
+void RtpStreamReceiver::EnableReceiveRtpHeaderExtension( |
+ const std::string& extension, int id) { |
RTC_DCHECK(RtpExtension::IsSupportedForVideo(extension)); |
RTC_CHECK(rtp_header_parser_->RegisterRtpHeaderExtension( |
StringToRtpExtensionType(extension), id)); |
} |
-void ViEReceiver::RegisterRtcpPacketTypeCounterObserver( |
+void RtpStreamReceiver::RegisterRtcpPacketTypeCounterObserver( |
RtcpPacketTypeCounterObserver* observer) { |
rtcp_packet_type_counter_observer_.Set(observer); |
} |
-int32_t ViEReceiver::OnReceivedPayloadData(const uint8_t* payload_data, |
- const size_t payload_size, |
- const WebRtcRTPHeader* rtp_header) { |
+int32_t RtpStreamReceiver::OnReceivedPayloadData( |
+ const uint8_t* payload_data, |
+ const size_t payload_size, |
+ const WebRtcRTPHeader* rtp_header) { |
RTC_DCHECK(video_receiver_); |
WebRtcRTPHeader rtp_header_with_ntp = *rtp_header; |
rtp_header_with_ntp.ntp_time_ms = |
@@ -208,8 +209,8 @@ int32_t ViEReceiver::OnReceivedPayloadData(const uint8_t* payload_data, |
return 0; |
} |
-bool ViEReceiver::OnRecoveredPacket(const uint8_t* rtp_packet, |
- size_t rtp_packet_length) { |
+bool RtpStreamReceiver::OnRecoveredPacket(const uint8_t* rtp_packet, |
+ size_t rtp_packet_length) { |
RTPHeader header; |
if (!rtp_header_parser_->Parse(rtp_packet, rtp_packet_length, &header)) { |
return false; |
@@ -219,9 +220,25 @@ bool ViEReceiver::OnRecoveredPacket(const uint8_t* rtp_packet, |
return ReceivePacket(rtp_packet, rtp_packet_length, header, in_order); |
} |
-bool ViEReceiver::DeliverRtp(const uint8_t* rtp_packet, |
- size_t rtp_packet_length, |
- const PacketTime& packet_time) { |
+// TODO(pbos): Remove as soon as audio can handle a changing payload type |
+// without this callback. |
+int32_t RtpStreamReceiver::OnInitializeDecoder( |
+ const int8_t payload_type, |
+ const char payload_name[RTP_PAYLOAD_NAME_SIZE], |
+ const int frequency, |
+ const size_t channels, |
+ const uint32_t rate) { |
+ RTC_NOTREACHED(); |
+ return 0; |
+} |
+ |
+void RtpStreamReceiver::OnIncomingSSRCChanged(const uint32_t ssrc) { |
+ rtp_rtcp_->SetRemoteSSRC(ssrc); |
+} |
+ |
+bool RtpStreamReceiver::DeliverRtp(const uint8_t* rtp_packet, |
+ size_t rtp_packet_length, |
+ const PacketTime& packet_time) { |
RTC_DCHECK(remote_bitrate_estimator_); |
{ |
rtc::CritScope lock(&receive_cs_); |
@@ -276,10 +293,10 @@ bool ViEReceiver::DeliverRtp(const uint8_t* rtp_packet, |
return ret; |
} |
-bool ViEReceiver::ReceivePacket(const uint8_t* packet, |
- size_t packet_length, |
- const RTPHeader& header, |
- bool in_order) { |
+bool RtpStreamReceiver::ReceivePacket(const uint8_t* packet, |
+ size_t packet_length, |
+ const RTPHeader& header, |
+ bool in_order) { |
if (rtp_payload_registry_.IsEncapsulated(header)) { |
return ParseAndHandleEncapsulatingHeader(packet, packet_length, header); |
} |
@@ -295,9 +312,8 @@ bool ViEReceiver::ReceivePacket(const uint8_t* packet, |
payload_specific, in_order); |
} |
-bool ViEReceiver::ParseAndHandleEncapsulatingHeader(const uint8_t* packet, |
- size_t packet_length, |
- const RTPHeader& header) { |
+bool RtpStreamReceiver::ParseAndHandleEncapsulatingHeader( |
+ const uint8_t* packet, size_t packet_length, const RTPHeader& header) { |
if (rtp_payload_registry_.IsRed(header)) { |
int8_t ulpfec_pt = rtp_payload_registry_.ulpfec_payload_type(); |
if (packet[header.headerLength] == ulpfec_pt) { |
@@ -343,7 +359,7 @@ bool ViEReceiver::ParseAndHandleEncapsulatingHeader(const uint8_t* packet, |
return false; |
} |
-void ViEReceiver::NotifyReceiverOfFecPacket(const RTPHeader& header) { |
+void RtpStreamReceiver::NotifyReceiverOfFecPacket(const RTPHeader& header) { |
int8_t last_media_payload_type = |
rtp_payload_registry_.last_received_media_payload_type(); |
if (last_media_payload_type < 0) { |
@@ -370,8 +386,8 @@ void ViEReceiver::NotifyReceiverOfFecPacket(const RTPHeader& header) { |
OnReceivedPayloadData(nullptr, 0, &rtp_header); |
} |
-bool ViEReceiver::DeliverRtcp(const uint8_t* rtcp_packet, |
- size_t rtcp_packet_length) { |
+bool RtpStreamReceiver::DeliverRtcp(const uint8_t* rtcp_packet, |
+ size_t rtcp_packet_length) { |
{ |
rtc::CritScope lock(&receive_cs_); |
if (!receiving_) { |
@@ -400,21 +416,21 @@ bool ViEReceiver::DeliverRtcp(const uint8_t* rtcp_packet, |
return true; |
} |
-void ViEReceiver::StartReceive() { |
+void RtpStreamReceiver::StartReceive() { |
rtc::CritScope lock(&receive_cs_); |
receiving_ = true; |
} |
-void ViEReceiver::StopReceive() { |
+void RtpStreamReceiver::StopReceive() { |
rtc::CritScope lock(&receive_cs_); |
receiving_ = false; |
} |
-ReceiveStatistics* ViEReceiver::GetReceiveStatistics() const { |
+ReceiveStatistics* RtpStreamReceiver::GetReceiveStatistics() const { |
return rtp_receive_statistics_.get(); |
} |
-bool ViEReceiver::IsPacketInOrder(const RTPHeader& header) const { |
+bool RtpStreamReceiver::IsPacketInOrder(const RTPHeader& header) const { |
StreamStatistician* statistician = |
rtp_receive_statistics_->GetStatistician(header.ssrc); |
if (!statistician) |
@@ -422,8 +438,8 @@ bool ViEReceiver::IsPacketInOrder(const RTPHeader& header) const { |
return statistician->IsPacketInOrder(header.sequenceNumber); |
} |
-bool ViEReceiver::IsPacketRetransmitted(const RTPHeader& header, |
- bool in_order) const { |
+bool RtpStreamReceiver::IsPacketRetransmitted(const RTPHeader& header, |
+ bool in_order) const { |
// Retransmissions are handled separately if RTX is enabled. |
if (rtp_payload_registry_.RtxEnabled()) |
return false; |