media_perception: Proto Mojom conversion for presence_perception.mojom
BUG=chromium:919873
TEST=Unittests pass.
Change-Id: Ic1dee41687d531a6a848fd65a724033267383167
Reviewed-on: https://chromium-review.googlesource.com/1401202
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Wei Guan <weigua@chromium.org>
Reviewed-by: Luke Sorenson <lasoren@chromium.org>
Reviewed-by: Jacob Dufault <jdufault@chromium.org>
(cherry picked from commit 790d6f9fd225d4352c6252dbd31d67abebd39e96)
Reviewed-on: https://chromium-review.googlesource.com/c/1436097
Commit-Queue: Wei Guan <weigua@chromium.org>
diff --git a/media_perception/media_perception.gyp b/media_perception/media_perception.gyp
index 1955d8e..747f9f6 100644
--- a/media_perception/media_perception.gyp
+++ b/media_perception/media_perception.gyp
@@ -19,9 +19,10 @@
'<(proto_in_dir)/common.proto',
'<(proto_in_dir)/device_management.proto',
'<(proto_in_dir)/frame_perception.proto',
- '<(proto_in_dir)/media_perception_mojom.proto',
'<(proto_in_dir)/hotword_detection.proto',
+ '<(proto_in_dir)/media_perception_mojom.proto',
'<(proto_in_dir)/pipeline.proto',
+ '<(proto_in_dir)/presence_perception.proto',
],
'includes': ['../common-mk/protoc.gypi'],
},
@@ -44,6 +45,7 @@
'mojom/media_perception.mojom',
'mojom/media_perception_service.mojom',
'mojom/pipeline.mojom',
+ 'mojom/presence_perception.mojom',
'mojom/producer.mojom',
'mojom/receiver.mojom',
'mojom/scoped_access_permission.mojom',
diff --git a/media_perception/mojom/presence_perception.mojom b/media_perception/mojom/presence_perception.mojom
new file mode 100644
index 0000000..714df5d
--- /dev/null
+++ b/media_perception/mojom/presence_perception.mojom
@@ -0,0 +1,15 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// Next MinVersion: 1
+
+module chromeos.media_perception.mojom;
+
+struct PresencePerception {
+ // The timestamp associated with the perception result.
+ int64 timestamp_us@0;
+
+ // Overall probability [0, 1] that a human is present.
+ float presence_confidence@1;
+};
diff --git a/media_perception/proto/presence_perception.proto b/media_perception/proto/presence_perception.proto
new file mode 100644
index 0000000..3fd74de
--- /dev/null
+++ b/media_perception/proto/presence_perception.proto
@@ -0,0 +1,16 @@
+// Copyright 2018 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// See platform2/media_perception/mojom/presence_perception.mojom for relevant comments on
+// data fields.
+
+syntax = "proto2";
+
+package mri;
+
+message PresencePerception {
+ optional int64 timestamp_us = 1;
+
+ optional float presence_confidence = 3;
+}
diff --git a/media_perception/proto_mojom_conversion.cc b/media_perception/proto_mojom_conversion.cc
index d3ae875..24232ef 100644
--- a/media_perception/proto_mojom_conversion.cc
+++ b/media_perception/proto_mojom_conversion.cc
@@ -284,6 +284,13 @@
return state_ptr;
}
+PresencePerceptionPtr ToMojom(const mri::PresencePerception& perception) {
+ PresencePerceptionPtr perception_ptr = PresencePerception::New();
+ perception_ptr->timestamp_us = perception.timestamp_us();
+ perception_ptr->presence_confidence = perception.presence_confidence();
+ return perception_ptr;
+}
+
} // namespace mojom
} // namespace media_perception
} // namespace chromeos
@@ -694,4 +701,16 @@
return state;
}
+PresencePerception ToProto(
+ const chromeos::media_perception::mojom::PresencePerceptionPtr&
+ perception_ptr) {
+ PresencePerception perception;
+ if (perception_ptr.is_null())
+ return perception;
+
+ perception.set_timestamp_us(perception_ptr->timestamp_us);
+ perception.set_presence_confidence(perception_ptr->presence_confidence);
+ return perception;
+}
+
} // namespace mri
diff --git a/media_perception/proto_mojom_conversion.h b/media_perception/proto_mojom_conversion.h
index 64e6a3e..b3b9000 100644
--- a/media_perception/proto_mojom_conversion.h
+++ b/media_perception/proto_mojom_conversion.h
@@ -10,15 +10,17 @@
#include "media_perception/common.pb.h"
#include "media_perception/device_management.pb.h"
#include "media_perception/frame_perception.pb.h"
-#include "media_perception/media_perception_mojom.pb.h"
#include "media_perception/hotword_detection.pb.h"
+#include "media_perception/media_perception_mojom.pb.h"
#include "media_perception/pipeline.pb.h"
+#include "media_perception/presence_perception.pb.h"
#include "mojom/common.mojom.h"
#include "mojom/device_management.mojom.h"
#include "mojom/frame_perception.mojom.h"
#include "mojom/hotword_detection.mojom.h"
#include "mojom/media_perception.mojom.h"
#include "mojom/pipeline.mojom.h"
+#include "mojom/presence_perception.mojom.h"
namespace chromeos {
namespace media_perception {
@@ -57,6 +59,9 @@
PipelineErrorPtr ToMojom(const mri::PipelineError& error);
PipelineStatePtr ToMojom(const mri::PipelineState& state);
+// Presence perception conversions.
+PresencePerceptionPtr ToMojom(const mri::PresencePerception& perception);
+
} // namespace mojom
} // namespace media_perception
} // namespace chromeos
@@ -131,6 +136,11 @@
PipelineState ToProto(
const chromeos::media_perception::mojom::PipelineStatePtr& state_ptr);
+// Presence perception conversions.
+PresencePerception ToProto(
+ const chromeos::media_perception::mojom::PresencePerceptionPtr&
+ perception_ptr);
+
} // namespace mri
#endif // MEDIA_PERCEPTION_PROTO_MOJOM_CONVERSION_H_
diff --git a/media_perception/proto_mojom_conversion_test.cc b/media_perception/proto_mojom_conversion_test.cc
index 6fe819d..bfdeb96 100644
--- a/media_perception/proto_mojom_conversion_test.cc
+++ b/media_perception/proto_mojom_conversion_test.cc
@@ -303,6 +303,16 @@
EXPECT_EQ(*error_ptr->error_string, kMockErrorString);
}
+TEST(ProtoMojomConversionTest, PresencePerceptionToMojom) {
+ mri::PresencePerception perception;
+ perception.set_timestamp_us(100);
+ perception.set_presence_confidence(0.5);
+
+ PresencePerceptionPtr perception_ptr = ToMojom(perception);
+ EXPECT_EQ(perception_ptr->timestamp_us, 100);
+ EXPECT_FLOAT_EQ(perception_ptr->presence_confidence, 0.5);
+}
+
} // namespace
} // namespace mojom
} // namespace media_perception
@@ -632,5 +642,16 @@
EXPECT_EQ(state.error().error_string(), kMockErrorString);
}
+TEST(ProtoMojomConversionTest, PresencePerceptionToProto) {
+ chromeos::media_perception::mojom::PresencePerceptionPtr perception_ptr =
+ chromeos::media_perception::mojom::PresencePerception::New();
+ perception_ptr->timestamp_us = 100;
+ perception_ptr->presence_confidence = 0.5;
+
+ PresencePerception perception = ToProto(perception_ptr);
+ EXPECT_EQ(perception.timestamp_us(), 100);
+ EXPECT_FLOAT_EQ(perception.presence_confidence(), 0.5);
+}
+
} // namespace
} // namespace mri