| Index: webrtc/video/rtp_stream_receiver.h
|
| diff --git a/webrtc/video/rtp_stream_receiver.h b/webrtc/video/rtp_stream_receiver.h
|
| index 0a3b3159a1b1d7e90306b6fbf1c5fd24a08889a1..b1273017c625abe36620dd4ec9eb3ccdc753c58d 100644
|
| --- a/webrtc/video/rtp_stream_receiver.h
|
| +++ b/webrtc/video/rtp_stream_receiver.h
|
| @@ -12,57 +12,74 @@
|
| #define WEBRTC_VIDEO_RTP_STREAM_RECEIVER_H_
|
|
|
| #include <list>
|
| +#include <map>
|
| #include <memory>
|
| #include <string>
|
| #include <vector>
|
|
|
| #include "webrtc/base/constructormagic.h"
|
| #include "webrtc/base/criticalsection.h"
|
| +#include "webrtc/modules/include/module_common_types.h"
|
| #include "webrtc/modules/rtp_rtcp/include/receive_statistics.h"
|
| #include "webrtc/modules/rtp_rtcp/include/remote_ntp_time_estimator.h"
|
| #include "webrtc/modules/rtp_rtcp/include/rtp_payload_registry.h"
|
| #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp.h"
|
| #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h"
|
| +#include "webrtc/modules/video_coding/h264_sps_pps_tracker.h"
|
| #include "webrtc/modules/video_coding/include/video_coding_defines.h"
|
| +#include "webrtc/modules/video_coding/packet_buffer.h"
|
| +#include "webrtc/modules/video_coding/rtp_frame_reference_finder.h"
|
| +#include "webrtc/modules/video_coding/sequence_number_util.h"
|
| #include "webrtc/typedefs.h"
|
| #include "webrtc/video_receive_stream.h"
|
|
|
| namespace webrtc {
|
|
|
| +class NackModule;
|
| class PacedSender;
|
| class PacketRouter;
|
| class ProcessThread;
|
| -class RemoteNtpTimeEstimator;
|
| class ReceiveStatistics;
|
| class ReceiveStatisticsProxy;
|
| class RemoteBitrateEstimator;
|
| +class RemoteNtpTimeEstimator;
|
| class RtcpRttStats;
|
| class RtpHeaderParser;
|
| class RTPPayloadRegistry;
|
| class RtpReceiver;
|
| class Transport;
|
| class UlpfecReceiver;
|
| +class VCMTiming;
|
| class VieRemb;
|
|
|
| namespace vcm {
|
| class VideoReceiver;
|
| } // namespace vcm
|
|
|
| -class RtpStreamReceiver : public RtpData, public RtpFeedback,
|
| +class RtpStreamReceiver : public RtpData,
|
| + public RtpFeedback,
|
| public VCMFrameTypeCallback,
|
| - public VCMPacketRequestCallback {
|
| + public VCMPacketRequestCallback,
|
| + public video_coding::OnReceivedFrameCallback,
|
| + public video_coding::OnCompleteFrameCallback,
|
| + public CallStatsObserver {
|
| public:
|
| - RtpStreamReceiver(vcm::VideoReceiver* video_receiver,
|
| - RemoteBitrateEstimator* remote_bitrate_estimator,
|
| - Transport* transport,
|
| - RtcpRttStats* rtt_stats,
|
| - PacedSender* paced_sender,
|
| - PacketRouter* packet_router,
|
| - VieRemb* remb,
|
| - const VideoReceiveStream::Config* config,
|
| - ReceiveStatisticsProxy* receive_stats_proxy,
|
| - ProcessThread* process_thread,
|
| - RateLimiter* retransmission_rate_limiter);
|
| + RtpStreamReceiver(
|
| + vcm::VideoReceiver* video_receiver,
|
| + RemoteBitrateEstimator* remote_bitrate_estimator,
|
| + Transport* transport,
|
| + RtcpRttStats* rtt_stats,
|
| + PacedSender* paced_sender,
|
| + PacketRouter* packet_router,
|
| + VieRemb* remb,
|
| + const VideoReceiveStream::Config* config,
|
| + ReceiveStatisticsProxy* receive_stats_proxy,
|
| + ProcessThread* process_thread,
|
| + RateLimiter* retransmission_rate_limiter,
|
| + NackSender* nack_sender,
|
| + KeyFrameRequestSender* keyframe_request_sender,
|
| + video_coding::OnCompleteFrameCallback* complete_frame_callback,
|
| + VCMTiming* timing);
|
| ~RtpStreamReceiver();
|
|
|
| bool SetReceiveCodec(const VideoCodec& video_codec);
|
| @@ -81,6 +98,10 @@ class RtpStreamReceiver : public RtpData, public RtpFeedback,
|
| const PacketTime& packet_time);
|
| bool DeliverRtcp(const uint8_t* rtcp_packet, size_t rtcp_packet_length);
|
|
|
| + void FrameContinuous(uint16_t seq_num);
|
| +
|
| + void FrameDecoded(uint16_t seq_num);
|
| +
|
| void SignalNetworkState(NetworkState state);
|
|
|
| // Implements RtpData.
|
| @@ -111,6 +132,16 @@ class RtpStreamReceiver : public RtpData, public RtpFeedback,
|
| int32_t ResendPackets(const uint16_t* sequenceNumbers,
|
| uint16_t length) override;
|
|
|
| + // Implements OnReceivedFrameCallback.
|
| + void OnReceivedFrame(
|
| + std::unique_ptr<video_coding::RtpFrameObject> frame) override;
|
| +
|
| + // Implements OnCompleteFrameCallback.
|
| + void OnCompleteFrame(
|
| + std::unique_ptr<video_coding::FrameObject> frame) override;
|
| +
|
| + void OnRttUpdate(int64_t avg_rtt_ms, int64_t max_rtt_ms) override;
|
| +
|
| private:
|
| bool ReceivePacket(const uint8_t* packet,
|
| size_t packet_length,
|
| @@ -151,6 +182,19 @@ class RtpStreamReceiver : public RtpData, public RtpFeedback,
|
| int64_t last_packet_log_ms_ GUARDED_BY(receive_cs_);
|
|
|
| const std::unique_ptr<RtpRtcp> rtp_rtcp_;
|
| +
|
| + // Members for the new jitter buffer experiment.
|
| + bool jitter_buffer_experiment_;
|
| + video_coding::OnCompleteFrameCallback* complete_frame_callback_;
|
| + KeyFrameRequestSender* keyframe_request_sender_;
|
| + VCMTiming* timing_;
|
| + std::unique_ptr<NackModule> nack_module_;
|
| + rtc::scoped_refptr<video_coding::PacketBuffer> packet_buffer_;
|
| + std::unique_ptr<video_coding::RtpFrameReferenceFinder> reference_finder_;
|
| + rtc::CriticalSection last_seq_num_cs_;
|
| + std::map<uint16_t, uint16_t, DescendingSeqNumComp<uint16_t>>
|
| + last_seq_num_for_pic_id_ GUARDED_BY(last_seq_num_cs_);
|
| + video_coding::H264SpsPpsTracker tracker_;
|
| };
|
|
|
| } // namespace webrtc
|
|
|