diff options
Diffstat (limited to 'video/rtp_video_stream_receiver.h')
-rw-r--r-- | video/rtp_video_stream_receiver.h | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/video/rtp_video_stream_receiver.h b/video/rtp_video_stream_receiver.h index 090488c4a8..b3d62f34a4 100644 --- a/video/rtp_video_stream_receiver.h +++ b/video/rtp_video_stream_receiver.h @@ -33,7 +33,8 @@ #include "modules/rtp_rtcp/include/rtp_header_extension_map.h" #include "modules/rtp_rtcp/include/rtp_rtcp.h" #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" -#include "modules/rtp_rtcp/source/absolute_capture_time_receiver.h" +#include "modules/rtp_rtcp/source/absolute_capture_time_interpolator.h" +#include "modules/rtp_rtcp/source/capture_clock_offset_updater.h" #include "modules/rtp_rtcp/source/rtp_dependency_descriptor_extension.h" #include "modules/rtp_rtcp/source/rtp_packet_received.h" #include "modules/rtp_rtcp/source/rtp_video_header.h" @@ -68,11 +69,18 @@ class RtpVideoStreamReceiver : public LossNotificationSender, public RecoveredPacketReceiver, public RtpPacketSinkInterface, public KeyFrameRequestSender, - public OnCompleteFrameCallback, public OnDecryptedFrameCallback, public OnDecryptionStatusChangeCallback, public RtpVideoFrameReceiver { public: + // A complete frame is a frame which has received all its packets and all its + // references are known. + class OnCompleteFrameCallback { + public: + virtual ~OnCompleteFrameCallback() {} + virtual void OnCompleteFrame(std::unique_ptr<EncodedFrame> frame) = 0; + }; + // DEPRECATED due to dependency on ReceiveStatisticsProxy. RtpVideoStreamReceiver( Clock* clock, @@ -172,8 +180,7 @@ class RtpVideoStreamReceiver : public LossNotificationSender, // Don't use, still experimental. void RequestPacketRetransmit(const std::vector<uint16_t>& sequence_numbers); - // Implements OnCompleteFrameCallback. - void OnCompleteFrame(std::unique_ptr<EncodedFrame> frame) override; + void OnCompleteFrames(RtpFrameReferenceFinder::ReturnVector frames); // Implements OnDecryptedFrameCallback. void OnDecryptedFrame(std::unique_ptr<RtpFrameObject> frame) override; @@ -303,7 +310,8 @@ class RtpVideoStreamReceiver : public LossNotificationSender, ParseGenericDependenciesResult ParseGenericDependenciesExtension( const RtpPacketReceived& rtp_packet, RTPVideoHeader* video_header) RTC_RUN_ON(worker_task_checker_); - void OnAssembledFrame(std::unique_ptr<RtpFrameObject> frame); + void OnAssembledFrame(std::unique_ptr<RtpFrameObject> frame) + RTC_LOCKS_EXCLUDED(packet_buffer_lock_); void UpdatePacketReceiveTimestamps(const RtpPacketReceived& packet, bool is_keyframe) RTC_RUN_ON(worker_task_checker_); @@ -400,13 +408,21 @@ class RtpVideoStreamReceiver : public LossNotificationSender, std::atomic<bool> frames_decryptable_; absl::optional<ColorSpace> last_color_space_; - AbsoluteCaptureTimeReceiver absolute_capture_time_receiver_ + AbsoluteCaptureTimeInterpolator absolute_capture_time_interpolator_ + RTC_GUARDED_BY(worker_task_checker_); + + CaptureClockOffsetUpdater capture_clock_offset_updater_ RTC_GUARDED_BY(worker_task_checker_); int64_t last_completed_picture_id_ = 0; rtc::scoped_refptr<RtpVideoStreamReceiverFrameTransformerDelegate> frame_transformer_delegate_; + + SeqNumUnwrapper<uint16_t> rtp_seq_num_unwrapper_ + RTC_GUARDED_BY(packet_buffer_lock_); + std::map<int64_t, RtpPacketInfo> packet_infos_ + RTC_GUARDED_BY(packet_buffer_lock_); }; } // namespace webrtc |