blob: 177be9fe1644df526804d899f2a022525e69249d [file] [log] [blame]
/*
* Copyright (c) 2026 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 VIDEO_TIMING_SIMULATOR_LOG_CLASSIFIERS_H_
#define VIDEO_TIMING_SIMULATOR_LOG_CLASSIFIERS_H_
#include <optional>
#include "logging/rtc_event_log/rtc_event_log_parser.h"
namespace webrtc::video_timing_simulator {
// The enum represents the logging status of RTX original sequence numbers, as
// aggregated across the entire log.
//
// Prior to https://webrtc-review.googlesource.com/c/src/+/442320, RTX
// OSN were not logged at all. After that CL, all RTX OSNs should be logged for
// all video RTX packets. But since the value is represented as an optional (to
// handle both cases), there could also be degenerate cases where RTX OSNs are
// logged for some video RTX packets.
//
// This helper function determines which of three cases holds for a given log.
enum class RtxOsnLoggingStatus {
kNoRtxOsnLogged, // Log from before the RTX OSN logging change.
kSomeRtxOsnLogged, // Degenerate case -- should not happen.
kAllRtxOsnLogged, // Log from after the RTX OSN logging change.
};
// Returns the RTX OSN logging status for the provided log. If there were no
// video RTX packets in the log, the unset value is returned.
std::optional<RtxOsnLoggingStatus> GetRtxOsnLoggingStatus(
const ParsedRtcEventLog& parsed_log);
} // namespace webrtc::video_timing_simulator
#endif // VIDEO_TIMING_SIMULATOR_LOG_CLASSIFIERS_H_