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};
|
.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>
|
std::optional<CorruptionDetectionMessage>
|
||||||
ConvertFrameInstrumentationDataToCorruptionDetectionMessage(
|
ConvertFrameInstrumentationDataToCorruptionDetectionMessage(
|
||||||
const FrameInstrumentationData& data) {
|
const FrameInstrumentationData& data) {
|
||||||
|
|||||||
@ -22,6 +22,10 @@ std::optional<FrameInstrumentationData>
|
|||||||
ConvertCorruptionDetectionMessageToFrameInstrumentationData(
|
ConvertCorruptionDetectionMessageToFrameInstrumentationData(
|
||||||
const CorruptionDetectionMessage& message,
|
const CorruptionDetectionMessage& message,
|
||||||
int previous_sequence_index);
|
int previous_sequence_index);
|
||||||
|
std::optional<FrameInstrumentationSyncData>
|
||||||
|
ConvertCorruptionDetectionMessageToFrameInstrumentationSyncData(
|
||||||
|
const CorruptionDetectionMessage& message,
|
||||||
|
int previous_sequence_index);
|
||||||
std::optional<CorruptionDetectionMessage>
|
std::optional<CorruptionDetectionMessage>
|
||||||
ConvertFrameInstrumentationDataToCorruptionDetectionMessage(
|
ConvertFrameInstrumentationDataToCorruptionDetectionMessage(
|
||||||
const FrameInstrumentationData& frame_instrumentation_data);
|
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));
|
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
|
||||||
} // namespace webrtc
|
} // namespace webrtc
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user