Index: webrtc/modules/rtp_rtcp/include/flexfec_receiver.h |
diff --git a/webrtc/modules/rtp_rtcp/include/flexfec_receiver.h b/webrtc/modules/rtp_rtcp/include/flexfec_receiver.h |
index fa1c853b78eae05039bb98bfd560b28d1c6ca05f..06294b479708cf2b7a4f0664adda697ab9d6fa8f 100644 |
--- a/webrtc/modules/rtp_rtcp/include/flexfec_receiver.h |
+++ b/webrtc/modules/rtp_rtcp/include/flexfec_receiver.h |
@@ -14,7 +14,12 @@ |
#include <memory> |
#include "webrtc/base/basictypes.h" |
+#include "webrtc/base/sequenced_task_checker.h" |
+#include "webrtc/call.h" |
+#include "webrtc/modules/rtp_rtcp/include/flexfec_receiver.h" |
#include "webrtc/modules/rtp_rtcp/include/ulpfec_receiver.h" |
+#include "webrtc/modules/rtp_rtcp/source/forward_error_correction.h" |
+#include "webrtc/system_wrappers/include/clock.h" |
namespace webrtc { |
@@ -30,20 +35,39 @@ class RecoveredPacketReceiver { |
class FlexfecReceiver { |
public: |
- static std::unique_ptr<FlexfecReceiver> Create( |
- uint32_t flexfec_ssrc, |
- uint32_t protected_media_ssrc, |
- RecoveredPacketReceiver* callback); |
- virtual ~FlexfecReceiver(); |
+ FlexfecReceiver(uint32_t ssrc, |
+ uint32_t protected_media_ssrc, |
+ RecoveredPacketReceiver* callback); |
+ ~FlexfecReceiver(); |
// Inserts a received packet (can be either media or FlexFEC) into the |
// internal buffer, and sends the received packets to the erasure code. |
// All newly recovered packets are sent back through the callback. |
- virtual bool AddAndProcessReceivedPacket(const uint8_t* packet, |
- size_t packet_length) = 0; |
+ bool AddAndProcessReceivedPacket(const uint8_t* packet, size_t packet_length); |
// Returns a counter describing the added and recovered packets. |
- virtual FecPacketCounter GetPacketCounter() const = 0; |
+ FecPacketCounter GetPacketCounter() const; |
+ |
+ private: |
+ bool AddReceivedPacket(const uint8_t* packet, size_t packet_length); |
+ bool ProcessReceivedPackets(); |
+ |
+ // Config. |
+ const uint32_t ssrc_; |
+ const uint32_t protected_media_ssrc_; |
+ |
+ // Erasure code interfacing and callback. |
+ std::unique_ptr<ForwardErrorCorrection> erasure_code_; |
+ ForwardErrorCorrection::ReceivedPacketList received_packets_; |
+ ForwardErrorCorrection::RecoveredPacketList recovered_packets_; |
+ RecoveredPacketReceiver* const callback_; |
+ |
+ // Logging and stats. |
+ Clock* const clock_; |
+ int64_t last_recovered_packet_ms_; |
+ FecPacketCounter packet_counter_; |
+ |
+ rtc::SequencedTaskChecker sequence_checker_; |
}; |
} // namespace webrtc |