#ifndef _LIVOX_GEN1_PCLOUD_STIMULUS_BUFFER_H #define _LIVOX_GEN1_PCLOUD_STIMULUS_BUFFER_H #include #include #include #include "stagingBuffer.h" namespace smo { namespace stim_buff { /** * PcloudStimulusBuffer is a specialized StimulusBuffer for point cloud data. * * This class extends StimulusBuffer to handle point cloud-specific stimulus * frames, particularly those generated from LiDAR point cloud data. It * provides additional functionality for managing point cloud frame metadata * and processing. */ class PcloudStimulusBuffer : public StimulusBuffer { public: explicit PcloudStimulusBuffer( const device::DeviceAttachmentSpec& deviceAttachmentSpec, std::shared_ptr &device, const PcloudFormatDesc& formatDesc, size_t nPointsPerFrame) : StimulusBuffer(deviceAttachmentSpec), deviceAttachmentSpec(deviceAttachmentSpec), device(device), formatDesc(formatDesc), stagingBuffer( IoUringConstraints(), OpenClConstraints(), nPointsPerFrame) {} ~PcloudStimulusBuffer() = default; // Non-copyable, movable PcloudStimulusBuffer(const PcloudStimulusBuffer&) = delete; PcloudStimulusBuffer& operator=(const PcloudStimulusBuffer&) = delete; PcloudStimulusBuffer(PcloudStimulusBuffer&&) = default; PcloudStimulusBuffer& operator=(PcloudStimulusBuffer&&) = default; public: device::DeviceAttachmentSpec deviceAttachmentSpec; std::shared_ptr device; PcloudFormatDesc formatDesc; StagingBuffer stagingBuffer; }; } // namespace stim_buff } // namespace smo #endif // _LIVOX_GEN1_PCLOUD_STIMULUS_BUFFER_H