It works in the same way as the first packet received callback and can be used for latency measurements. One important detail is that RTCP and probe packets are excluded from triggering the callback. Bug: b/375148360 Change-Id: I5f99b565f96b622e864669cf227be5534aab0fc7 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/366644 Reviewed-by: Harald Alvestrand <hta@webrtc.org> Reviewed-by: Per Kjellander <perkj@webrtc.org> Commit-Queue: Jakob Ivarsson <jakobi@webrtc.org> Cr-Commit-Position: refs/heads/main@{#43309}
74 lines
1.8 KiB
C++
74 lines
1.8 KiB
C++
/*
|
|
* Copyright 2018 The WebRTC Project Authors. All rights reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
#ifndef RTC_BASE_NETWORK_SENT_PACKET_H_
|
|
#define RTC_BASE_NETWORK_SENT_PACKET_H_
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
#include <optional>
|
|
|
|
#include "rtc_base/system/rtc_export.h"
|
|
|
|
namespace rtc {
|
|
|
|
enum class PacketType {
|
|
kUnknown,
|
|
kData,
|
|
kIceConnectivityCheck,
|
|
kIceConnectivityCheckResponse,
|
|
kStunMessage,
|
|
kTurnMessage,
|
|
};
|
|
|
|
enum class PacketInfoProtocolType {
|
|
kUnknown,
|
|
kUdp,
|
|
kTcp,
|
|
kSsltcp,
|
|
kTls,
|
|
};
|
|
|
|
struct RTC_EXPORT PacketInfo {
|
|
PacketInfo();
|
|
PacketInfo(const PacketInfo& info);
|
|
~PacketInfo();
|
|
|
|
bool included_in_feedback = false;
|
|
bool included_in_allocation = false;
|
|
// `is_media` is true if this is an audio or video packet, excluding
|
|
// retransmissions.
|
|
bool is_media = false;
|
|
PacketType packet_type = PacketType::kUnknown;
|
|
PacketInfoProtocolType protocol = PacketInfoProtocolType::kUnknown;
|
|
// A unique id assigned by the network manager, and std::nullopt if not set.
|
|
std::optional<uint16_t> network_id;
|
|
size_t packet_size_bytes = 0;
|
|
size_t turn_overhead_bytes = 0;
|
|
size_t ip_overhead_bytes = 0;
|
|
};
|
|
|
|
struct RTC_EXPORT SentPacket {
|
|
SentPacket();
|
|
SentPacket(int64_t packet_id, int64_t send_time_ms);
|
|
SentPacket(int64_t packet_id,
|
|
int64_t send_time_ms,
|
|
const rtc::PacketInfo& info);
|
|
|
|
int64_t packet_id = -1;
|
|
int64_t send_time_ms = -1;
|
|
rtc::PacketInfo info;
|
|
};
|
|
|
|
} // namespace rtc
|
|
|
|
#endif // RTC_BASE_NETWORK_SENT_PACKET_H_
|