// Copyright 2019 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CAST_STREAMING_IMPL_RTCP_COMMON_H_ #define CAST_STREAMING_IMPL_RTCP_COMMON_H_ #include <stdint.h> #include <optional> #include <tuple> #include <vector> #include "cast/streaming/impl/ntp_time.h" #include "cast/streaming/public/frame_id.h" #include "cast/streaming/impl/rtp_defines.h" #include "cast/streaming/rtp_time.h" #include "cast/streaming/ssrc.h" #include "cast/streaming/impl/statistics_defines.h" #include "platform/base/span.h" namespace openscreen::cast { struct RtcpCommonHeader { … }; // The middle 32-bits of the 64-bit NtpTimestamp field from the Sender Reports. // This is used as an opaque identifier that the Receiver will use in its // reports to refer to specific previous Sender Reports. StatusReportId; constexpr StatusReportId ToStatusReportId(NtpTimestamp ntp_timestamp) { … } // One of these is optionally included with a Sender Report or a Receiver // Report. See: https://tools.ietf.org/html/rfc3550#section-6.4.1 struct RtcpReportBlock { … }; struct RtcpSenderReport { … }; // A pair of IDs that refers to a specific missing packet within a frame. If // |packet_id| is kAllPacketsLost, then it represents all the packets of a // frame. struct PacketNack { … }; // Statistics events sent from the receiver over RTCP. struct RtcpReceiverEventLogMessage { … }; struct RtcpReceiverFrameLogMessage { … }; } // namespace openscreen::cast #endif // CAST_STREAMING_IMPL_RTCP_COMMON_H_