Line data Source code
1 : /*
2 : * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
3 : *
4 : * Use of this source code is governed by a BSD-style license
5 : * that can be found in the LICENSE file in the root of the source
6 : * tree. An additional intellectual property rights grant can be found
7 : * in the file PATENTS. All contributing project authors may
8 : * be found in the AUTHORS file in the root of the source tree.
9 : */
10 :
11 : #ifndef WEBRTC_CALL_FLEXFEC_RECEIVE_STREAM_IMPL_H_
12 : #define WEBRTC_CALL_FLEXFEC_RECEIVE_STREAM_IMPL_H_
13 :
14 : #include <memory>
15 :
16 : #include "webrtc/base/criticalsection.h"
17 : #include "webrtc/call/flexfec_receive_stream.h"
18 :
19 : namespace webrtc {
20 :
21 : class FlexfecReceiver;
22 : class ProcessThread;
23 : class ReceiveStatistics;
24 : class RecoveredPacketReceiver;
25 : class RtcpRttStats;
26 : class RtpPacketReceived;
27 : class RtpRtcp;
28 :
29 : class FlexfecReceiveStreamImpl : public FlexfecReceiveStream {
30 : public:
31 : FlexfecReceiveStreamImpl(const Config& config,
32 : RecoveredPacketReceiver* recovered_packet_receiver,
33 : RtcpRttStats* rtt_stats,
34 : ProcessThread* process_thread);
35 : ~FlexfecReceiveStreamImpl() override;
36 :
37 0 : const Config& GetConfig() const { return config_; }
38 :
39 : bool AddAndProcessReceivedPacket(const RtpPacketReceived& packet);
40 :
41 : // Implements FlexfecReceiveStream.
42 : void Start() override;
43 : void Stop() override;
44 : Stats GetStats() const override;
45 :
46 : private:
47 : // Config.
48 : const Config config_;
49 : bool started_ GUARDED_BY(crit_);
50 : rtc::CriticalSection crit_;
51 :
52 : // Erasure code interfacing.
53 : const std::unique_ptr<FlexfecReceiver> receiver_;
54 :
55 : // RTCP reporting.
56 : const std::unique_ptr<ReceiveStatistics> rtp_receive_statistics_;
57 : const std::unique_ptr<RtpRtcp> rtp_rtcp_;
58 : ProcessThread* process_thread_;
59 : };
60 :
61 : } // namespace webrtc
62 :
63 : #endif // WEBRTC_CALL_FLEXFEC_RECEIVE_STREAM_IMPL_H_
|