Index: webrtc/call/call.cc |
diff --git a/webrtc/call/call.cc b/webrtc/call/call.cc |
index 48072d0a0b71790bf2802289cef4324abdaaabe1..b5a1268ed6c3284364fcad66378645b7a3a3be88 100644 |
--- a/webrtc/call/call.cc |
+++ b/webrtc/call/call.cc |
@@ -8,7 +8,9 @@ |
* be found in the AUTHORS file in the root of the source tree. |
*/ |
+#include <stdint.h> |
#include <string.h> |
+ |
#include <algorithm> |
#include <map> |
#include <memory> |
@@ -66,6 +68,7 @@ namespace internal { |
class Call : public webrtc::Call, |
public PacketReceiver, |
public RecoveredPacketReceiver, |
+ public FlexfecProtectionMediator, |
public CongestionController::Observer, |
public BitrateAllocator::LimitObserver { |
public: |
@@ -110,6 +113,9 @@ class Call : public webrtc::Call, |
// Implements RecoveredPacketReceiver. |
bool OnRecoveredPacket(const uint8_t* packet, size_t length) override; |
+ // Implements FlexfecProtectionMediator. |
+ bool IsProtectedByFlexfec(uint32_t ssrc) override; |
+ |
void NotifyBweOfReceivedPacket(const RtpPacketReceived& packet); |
void SetBitrateConfig( |
@@ -645,7 +651,7 @@ webrtc::VideoReceiveStream* Call::CreateVideoReceiveStream( |
VideoReceiveStream* receive_stream = new VideoReceiveStream( |
num_cpu_cores_, congestion_controller_.get(), &packet_router_, |
std::move(configuration), voice_engine(), module_process_thread_.get(), |
- call_stats_.get(), &remb_); |
+ call_stats_.get(), &remb_, this /* flexfec_protection_mediator */); |
const webrtc::VideoReceiveStream::Config& config = receive_stream->config(); |
{ |
@@ -1204,6 +1210,12 @@ bool Call::OnRecoveredPacket(const uint8_t* packet, size_t length) { |
return it->second->OnRecoveredPacket(packet, length); |
} |
+bool Call::IsProtectedByFlexfec(uint32_t ssrc) { |
+ ReadLockScoped read_lock(*receive_crit_); |
+ return flexfec_receive_ssrcs_media_.find(ssrc) != |
+ flexfec_receive_ssrcs_media_.end(); |
+} |
+ |
void Call::NotifyBweOfReceivedPacket(const RtpPacketReceived& packet) { |
RTPHeader header; |
packet.GetHeader(&header); |