| Index: webrtc/call/call.cc
|
| diff --git a/webrtc/call/call.cc b/webrtc/call/call.cc
|
| index dd08d770ee850c0ff17d10bd732a97a7cc3a5495..e8a087f1a3b2c44c89a039a97eaee0b15de206d1 100644
|
| --- a/webrtc/call/call.cc
|
| +++ b/webrtc/call/call.cc
|
| @@ -18,6 +18,7 @@
|
| #include "webrtc/audio/audio_send_stream.h"
|
| #include "webrtc/audio/audio_state.h"
|
| #include "webrtc/audio/scoped_voe_interface.h"
|
| +#include "webrtc/base/basictypes.h"
|
| #include "webrtc/base/checks.h"
|
| #include "webrtc/base/constructormagic.h"
|
| #include "webrtc/base/logging.h"
|
| @@ -32,6 +33,7 @@
|
| #include "webrtc/modules/bitrate_controller/include/bitrate_controller.h"
|
| #include "webrtc/modules/congestion_controller/include/congestion_controller.h"
|
| #include "webrtc/modules/pacing/paced_sender.h"
|
| +#include "webrtc/modules/rtp_rtcp/include/flexfec_receiver.h"
|
| #include "webrtc/modules/rtp_rtcp/include/rtp_header_parser.h"
|
| #include "webrtc/modules/rtp_rtcp/source/byte_io.h"
|
| #include "webrtc/modules/utility/include/process_thread.h"
|
| @@ -57,6 +59,7 @@ namespace internal {
|
|
|
| class Call : public webrtc::Call,
|
| public PacketReceiver,
|
| + public RecoveredPacketReceiver,
|
| public CongestionController::Observer,
|
| public BitrateAllocator::LimitObserver {
|
| public:
|
| @@ -91,6 +94,9 @@ class Call : public webrtc::Call,
|
| size_t length,
|
| const PacketTime& packet_time) override;
|
|
|
| + // Implements RecoveredPacketReceiver.
|
| + bool OnRecoveredPacket(const uint8_t* packet, size_t length) override;
|
| +
|
| void SetBitrateConfig(
|
| const webrtc::Call::Config::BitrateConfig& bitrate_config) override;
|
|
|
| @@ -948,5 +954,16 @@ PacketReceiver::DeliveryStatus Call::DeliverPacket(
|
| return DeliverRtp(media_type, packet, length, packet_time);
|
| }
|
|
|
| +// TODO(brandtr): Update this member function when we support protecting
|
| +// audio packets with FlexFEC.
|
| +bool Call::OnRecoveredPacket(const uint8_t* packet, size_t length) {
|
| + uint32_t ssrc = ByteReader<uint32_t>::ReadBigEndian(&packet[8]);
|
| + ReadLockScoped read_lock(*receive_crit_);
|
| + auto it = video_receive_ssrcs_.find(ssrc);
|
| + if (it == video_receive_ssrcs_.end())
|
| + return false;
|
| + return it->second->OnRecoveredPacket(packet, length);
|
| +}
|
| +
|
| } // namespace internal
|
| } // namespace webrtc
|
|
|