Add converter CorruptionDetectionMessage -> FrameInstrumentationSyncData
Bug: webrtc:358039777 Change-Id: I4eec591252a4587e645d5ba6a594c21a3c284bc9 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/364460 Reviewed-by: Erik Språng <sprang@webrtc.org> Commit-Queue: Erik Språng <sprang@webrtc.org> Auto-Submit: Fanny Linderborg <linderborg@webrtc.org> Cr-Commit-Position: refs/heads/main@{#43144}
This commit is contained in:
parent
7dd164df7f
commit
71bb08d769
@ -78,6 +78,26 @@ ConvertCorruptionDetectionMessageToFrameInstrumentationData(
|
||||
.sample_values = sample_values};
|
||||
}
|
||||
|
||||
std::optional<FrameInstrumentationSyncData>
|
||||
ConvertCorruptionDetectionMessageToFrameInstrumentationSyncData(
|
||||
const CorruptionDetectionMessage& message,
|
||||
int previous_sequence_index) {
|
||||
if (previous_sequence_index < 0) {
|
||||
return std::nullopt;
|
||||
}
|
||||
if (!message.sample_values().empty()) {
|
||||
return std::nullopt;
|
||||
}
|
||||
if (!message.interpret_sequence_index_as_most_significant_bits()) {
|
||||
return std::nullopt;
|
||||
}
|
||||
return FrameInstrumentationSyncData{
|
||||
.sequence_index = GetFullSequenceIndex(
|
||||
previous_sequence_index, message.sequence_index(),
|
||||
/*update_the_most_significant_bits=*/true),
|
||||
.communicate_upper_bits = true};
|
||||
}
|
||||
|
||||
std::optional<CorruptionDetectionMessage>
|
||||
ConvertFrameInstrumentationDataToCorruptionDetectionMessage(
|
||||
const FrameInstrumentationData& data) {
|
||||
|
||||
@ -22,6 +22,10 @@ std::optional<FrameInstrumentationData>
|
||||
ConvertCorruptionDetectionMessageToFrameInstrumentationData(
|
||||
const CorruptionDetectionMessage& message,
|
||||
int previous_sequence_index);
|
||||
std::optional<FrameInstrumentationSyncData>
|
||||
ConvertCorruptionDetectionMessageToFrameInstrumentationSyncData(
|
||||
const CorruptionDetectionMessage& message,
|
||||
int previous_sequence_index);
|
||||
std::optional<CorruptionDetectionMessage>
|
||||
ConvertFrameInstrumentationDataToCorruptionDetectionMessage(
|
||||
const FrameInstrumentationData& frame_instrumentation_data);
|
||||
|
||||
@ -327,5 +327,64 @@ TEST(CorruptionDetectionMessageToFrameInstrumentationData, ConvertAllFields) {
|
||||
EXPECT_THAT(data->sample_values, ElementsAre(1.0, 2.0, 3.0, 4.0, 5.0));
|
||||
}
|
||||
|
||||
TEST(CorruptionDetectionMessageToFrameInstrumentationSyncData,
|
||||
FailWhenPreviousSequenceIndexIsNegative) {
|
||||
std::optional<CorruptionDetectionMessage> message =
|
||||
CorruptionDetectionMessage::Builder()
|
||||
.WithInterpretSequenceIndexAsMostSignificantBits(true)
|
||||
.Build();
|
||||
ASSERT_TRUE(message.has_value());
|
||||
|
||||
EXPECT_FALSE(ConvertCorruptionDetectionMessageToFrameInstrumentationSyncData(
|
||||
*message, -1)
|
||||
.has_value());
|
||||
}
|
||||
|
||||
TEST(CorruptionDetectionMessageToFrameInstrumentationSyncData,
|
||||
FailWhenSampleValuesArePresent) {
|
||||
std::vector<double> sample_values = {1.0, 2.0, 3.0, 4.0, 5.0};
|
||||
std::optional<CorruptionDetectionMessage> message =
|
||||
CorruptionDetectionMessage::Builder()
|
||||
.WithInterpretSequenceIndexAsMostSignificantBits(true)
|
||||
.WithSampleValues(sample_values)
|
||||
.Build();
|
||||
ASSERT_TRUE(message.has_value());
|
||||
|
||||
EXPECT_FALSE(ConvertCorruptionDetectionMessageToFrameInstrumentationSyncData(
|
||||
*message, 0)
|
||||
.has_value());
|
||||
}
|
||||
|
||||
TEST(CorruptionDetectionMessageToFrameInstrumentationSyncData,
|
||||
FailWhenSetToUpdateTheLowerBits) {
|
||||
std::optional<CorruptionDetectionMessage> message =
|
||||
CorruptionDetectionMessage::Builder()
|
||||
.WithInterpretSequenceIndexAsMostSignificantBits(false)
|
||||
.Build();
|
||||
ASSERT_TRUE(message.has_value());
|
||||
|
||||
EXPECT_FALSE(ConvertCorruptionDetectionMessageToFrameInstrumentationSyncData(
|
||||
*message, 0)
|
||||
.has_value());
|
||||
}
|
||||
|
||||
TEST(CorruptionDetectionMessageToFrameInstrumentationSyncData,
|
||||
IgnorePreviousSequenceIndex) {
|
||||
std::optional<CorruptionDetectionMessage> message =
|
||||
CorruptionDetectionMessage::Builder()
|
||||
.WithSequenceIndex(11)
|
||||
.WithInterpretSequenceIndexAsMostSignificantBits(true)
|
||||
.Build();
|
||||
ASSERT_TRUE(message.has_value());
|
||||
|
||||
std::optional<FrameInstrumentationSyncData> data =
|
||||
ConvertCorruptionDetectionMessageToFrameInstrumentationSyncData(*message,
|
||||
12);
|
||||
|
||||
ASSERT_TRUE(data.has_value());
|
||||
EXPECT_EQ(data->sequence_index, 0b0101'1000'0000);
|
||||
EXPECT_TRUE(data->communicate_upper_bits);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace webrtc
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user