chromium/third_party/openscreen/src/cast/streaming/impl/rtcp_common.h

// 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_