in kinesis_video_streamer/src/subscriber_callbacks.cpp [26:47]
void RekognitionEnabledKinesisVideoFrameTransportCallback(
KinesisStreamManagerInterface & stream_manager, std::string stream_name,
const kinesis_video_msgs::msg::KinesisVideoFrame::ConstSharedPtr frame_msg,
const rclcpp::Publisher<std_msgs::msg::String>::SharedPtr publisher)
{
KinesisVideoFrameTransportCallback(stream_manager, stream_name, frame_msg);
Aws::Vector<Model::Record> records;
KinesisManagerStatus status = stream_manager.FetchRekognitionResults(stream_name, &records);
if (KINESIS_MANAGER_STATUS_FAILED(status) &&
KINESIS_MANAGER_STATUS_GET_RECORDS_THROTTLED != status) {
AWS_LOGSTREAM_WARN(__func__, stream_name.c_str()
<< " FetchRekognitionResults failed. Error code: " << status);
return;
}
for (auto item = records.begin(); item != records.end(); item++) {
std_msgs::msg::String message;
const char * data = reinterpret_cast<char *>(item->GetData().GetUnderlyingData());
size_t length = item->GetData().GetLength();
message.data = std::string(data, length);
publisher->publish(message);
}
}