FrameGrabber.h
Go to the documentation of this file.
1 //
2 // Copyright (c) 2023 SICK AG, Waldkirch
3 //
4 // SPDX-License-Identifier: Unlicense
5 
6 #pragma once
7 
8 #include "FrameGrabberBase.h"
9 #include "VisionaryDataStream.h"
10 #include <mutex>
11 #include <thread>
12 
13 namespace visionary {
19 template <class DataType>
21 {
22 public:
23  FrameGrabber(const std::string& hostname, std::uint16_t port, std::uint32_t timeoutMs)
24  : frameGrabberBase(hostname, port, timeoutMs)
25  {
26  frameGrabberBase.start(std::make_shared<DataType>(), std::make_shared<DataType>());
27  }
29  {
30  }
31 
38  bool getNextFrame(std::shared_ptr<DataType>& pDataHandler, std::uint32_t timeoutMs = 1000)
39  {
40  if (pDataHandler == nullptr)
41  pDataHandler = std::make_shared<DataType>();
42  auto pTypedDataHandler = std::move(std::dynamic_pointer_cast<VisionaryData>(pDataHandler));
43  const auto retVal = frameGrabberBase.getNextFrame(pTypedDataHandler, timeoutMs);
44  pDataHandler = std::move(std::dynamic_pointer_cast<DataType>(pTypedDataHandler));
45  return retVal;
46  }
47 
53  bool getCurrentFrame(std::shared_ptr<DataType>& pDataHandler)
54  {
55  if (pDataHandler == nullptr)
56  pDataHandler = std::make_shared<DataType>();
57  auto pTypedDataHandler = std::move(std::dynamic_pointer_cast<VisionaryData>(pDataHandler));
58  const auto retVal = frameGrabberBase.getCurrentFrame(pTypedDataHandler);
59  pDataHandler = std::move(std::dynamic_pointer_cast<DataType>(pTypedDataHandler));
60  return retVal;
61  }
62 
63 private:
65 };
66 } // namespace visionary
visionary
Definition: MD5.cpp:44
visionary::FrameGrabberBase
Definition: FrameGrabberBase.h:14
VisionaryDataStream.h
visionary::FrameGrabber::FrameGrabber
FrameGrabber(const std::string &hostname, std::uint16_t port, std::uint32_t timeoutMs)
Definition: FrameGrabber.h:23
FrameGrabberBase.h
visionary::FrameGrabber::frameGrabberBase
FrameGrabberBase frameGrabberBase
Definition: FrameGrabber.h:64
visionary::FrameGrabber::getNextFrame
bool getNextFrame(std::shared_ptr< DataType > &pDataHandler, std::uint32_t timeoutMs=1000)
Definition: FrameGrabber.h:38
visionary::FrameGrabber::~FrameGrabber
~FrameGrabber()
Definition: FrameGrabber.h:28
visionary::FrameGrabberBase::getCurrentFrame
bool getCurrentFrame(std::shared_ptr< VisionaryData > &pDataHandler)
Definition: FrameGrabberBase.cpp:100
visionary::FrameGrabberBase::start
void start(std::shared_ptr< VisionaryData > inactiveDataHandler, std::shared_ptr< VisionaryData > activeDataHandler)
Definition: FrameGrabberBase.cpp:21
visionary::FrameGrabberBase::getNextFrame
bool getNextFrame(std::shared_ptr< VisionaryData > &pDataHandler, std::uint32_t timeoutMs=1000)
Definition: FrameGrabberBase.cpp:84
visionary::FrameGrabber
Class which receives frames from the device in background thread and provides the latest one via an i...
Definition: FrameGrabber.h:20
boost::move
BOOST_MOVE_FORCEINLINE ::boost::move_detail::remove_reference< T >::type && move(T &&t) BOOST_NOEXCEPT
Definition: utility_core.hpp:212
visionary::FrameGrabber::getCurrentFrame
bool getCurrentFrame(std::shared_ptr< DataType > &pDataHandler)
Definition: FrameGrabber.h:53


sick_visionary_ros
Author(s): SICK AG TechSupport 3D Snapshot
autogenerated on Thu Feb 8 2024 03:39:24