Class ImageBufferPool

Inheritance Relationships

Base Type

  • public std::enable_shared_from_this< ImageBufferPool >

Class Documentation

class ImageBufferPool : public std::enable_shared_from_this<ImageBufferPool>

Public Types

typedef std::shared_ptr<ImageBufferPool> SharedPtr
typedef std::weak_ptr<ImageBufferPool> WeakPtr

Public Functions

ImageBufferPool(const rclcpp::Logger &logger, ArvStream *stream, size_t payload_size_bytes, size_t n_preallocated_buffers = 2)
virtual ~ImageBufferPool()
sensor_msgs::msg::Image::SharedPtr getRecyclableImg()
sensor_msgs::msg::Image::SharedPtr operator[](ArvBuffer *buffer)
inline size_t getAllocatedSize() const
inline size_t getUsedSize() const
inline size_t getPayloadSize() const
void allocateBuffers(size_t n = 1)

Protected Functions

void push(sensor_msgs::msg::Image *p_img)

Protected Attributes

ArvStream *stream_ = NULL
size_t payload_size_bytes_ = 0
size_t n_buffers_ = 0
std::map<const uint8_t*, sensor_msgs::msg::Image::SharedPtr> available_img_buffers_
std::map<sensor_msgs::msg::Image*, ArvBuffer*> used_buffers_
std::stack<sensor_msgs::msg::Image::SharedPtr> dangling_imgs_
mutable std::mutex mutex_
SharedPtr self_
rclcpp::Logger logger_

Protected Static Functions

static void reclaim(const WeakPtr &self, sensor_msgs::msg::Image *p_img)