From 25458138a99132dc8444b5f54270d1b2f5eeb242 Mon Sep 17 00:00:00 2001 From: Rachel Hornung Date: Wed, 17 May 2023 17:08:38 -0700 Subject: [PATCH] #MediaPipe Add ConcatenateStringVectorCalculator. PiperOrigin-RevId: 532956844 --- .../core/concatenate_vector_calculator.cc | 4 +++ .../concatenate_vector_calculator_test.cc | 25 ++++++++++++++++--- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/mediapipe/calculators/core/concatenate_vector_calculator.cc b/mediapipe/calculators/core/concatenate_vector_calculator.cc index 0079aa98d..4d0d66206 100644 --- a/mediapipe/calculators/core/concatenate_vector_calculator.cc +++ b/mediapipe/calculators/core/concatenate_vector_calculator.cc @@ -55,6 +55,10 @@ MEDIAPIPE_REGISTER_NODE(ConcatenateUInt64VectorCalculator); typedef ConcatenateVectorCalculator ConcatenateBoolVectorCalculator; MEDIAPIPE_REGISTER_NODE(ConcatenateBoolVectorCalculator); +typedef ConcatenateVectorCalculator + ConcatenateStringVectorCalculator; +MEDIAPIPE_REGISTER_NODE(ConcatenateStringVectorCalculator); + // Example config: // node { // calculator: "ConcatenateTfLiteTensorVectorCalculator" diff --git a/mediapipe/calculators/core/concatenate_vector_calculator_test.cc b/mediapipe/calculators/core/concatenate_vector_calculator_test.cc index 5510b98a3..3fccf58fd 100644 --- a/mediapipe/calculators/core/concatenate_vector_calculator_test.cc +++ b/mediapipe/calculators/core/concatenate_vector_calculator_test.cc @@ -30,13 +30,15 @@ namespace mediapipe { typedef ConcatenateVectorCalculator TestConcatenateIntVectorCalculator; MEDIAPIPE_REGISTER_NODE(TestConcatenateIntVectorCalculator); -void AddInputVector(int index, const std::vector& input, int64_t timestamp, +template +void AddInputVector(int index, const std::vector& input, int64_t timestamp, CalculatorRunner* runner) { runner->MutableInputs()->Index(index).packets.push_back( - MakePacket>(input).At(Timestamp(timestamp))); + MakePacket>(input).At(Timestamp(timestamp))); } -void AddInputVectors(const std::vector>& inputs, +template +void AddInputVectors(const std::vector>& inputs, int64_t timestamp, CalculatorRunner* runner) { for (int i = 0; i < inputs.size(); ++i) { AddInputVector(i, inputs[i], timestamp, runner); @@ -382,6 +384,23 @@ TEST(ConcatenateFloatVectorCalculatorTest, OneEmptyStreamNoOutput) { EXPECT_EQ(0, outputs.size()); } +TEST(ConcatenateStringVectorCalculatorTest, OneTimestamp) { + CalculatorRunner runner("ConcatenateStringVectorCalculator", + /*options_string=*/"", /*num_inputs=*/3, + /*num_outputs=*/1, /*num_side_packets=*/0); + + std::vector> inputs = { + {"a", "b"}, {"c"}, {"d", "e", "f"}}; + AddInputVectors(inputs, /*timestamp=*/1, &runner); + MP_ASSERT_OK(runner.Run()); + + const std::vector& outputs = runner.Outputs().Index(0).packets; + EXPECT_EQ(1, outputs.size()); + EXPECT_EQ(Timestamp(1), outputs[0].Timestamp()); + std::vector expected_vector = {"a", "b", "c", "d", "e", "f"}; + EXPECT_EQ(expected_vector, outputs[0].Get>()); +} + typedef ConcatenateVectorCalculator> TestConcatenateUniqueIntPtrCalculator; MEDIAPIPE_REGISTER_NODE(TestConcatenateUniqueIntPtrCalculator);