#ifndef _LIVOX_GEN1_PCLOUD_AMBIENCE_STIMULUS_BUFFER_H #define _LIVOX_GEN1_PCLOUD_AMBIENCE_STIMULUS_BUFFER_H #include #include #include #include #include #include namespace smo { namespace stim_buff { class StimulusProducer; /** * Sensory PcloudAmbience buffer: per-dgram ambience floats only. * Intrinsic thresholds and passband comparators are only valid on dedicated * negtrin/postrin qualeIfaceApi specs (PcloudAmbienceIntrinStimulusBuffer); * see docs/design/intrin-thresholds.md. */ class PcloudAmbienceStimulusBuffer : public StimulusBuffer { public: explicit PcloudAmbienceStimulusBuffer( StimulusProducer& parent, const std::shared_ptr& deviceAttachmentSpec, int histbuffMs, const StagingBuffer::IOEngineConstraints& inputEngineConstraints, const StagingBuffer::IOEngineConstraints& outputEngineConstraints, const SmoCallbacks& callbacks, cl_mem_flags flags, size_t nDgramsPerFrame_) : StimulusBuffer( parent, deviceAttachmentSpec, histbuffMs, inputEngineConstraints, outputEngineConstraints, callbacks, flags), nDgramsPerFrame(nDgramsPerFrame_) { intrin::validateIntrinsQualeApiPolicy( deviceAttachmentSpec->qualeIfaceApi, deviceAttachmentSpec->qualeIfaceApiParams); } ~PcloudAmbienceStimulusBuffer() = default; PcloudAmbienceStimulusBuffer(const PcloudAmbienceStimulusBuffer&) = delete; PcloudAmbienceStimulusBuffer& operator=( const PcloudAmbienceStimulusBuffer&) = delete; PcloudAmbienceStimulusBuffer(PcloudAmbienceStimulusBuffer&&) = delete; PcloudAmbienceStimulusBuffer& operator=( PcloudAmbienceStimulusBuffer&&) = delete; public: size_t nDgramsPerFrame; }; } // namespace stim_buff } // namespace smo #endif // _LIVOX_GEN1_PCLOUD_AMBIENCE_STIMULUS_BUFFER_H