#pragma once #include #include #include "util/helpers/Singleton.h" class CameraManager : public Singleton { CapContext m_ctx; std::optional m_device; std::optional m_stream; std::vector m_rgbBuffer; std::vector m_nv12Buffer; int m_refCount; std::thread m_captureThread; std::atomic_bool m_capturing; mutable std::shared_mutex m_mutex; public: CameraManager(); ~CameraManager(); void SetDevice(uint deviceNo); bool Open(bool weak); void Close(); void GetNV12Data(uint8_t* nv12Buffer) const; private: void CaptureWorker(); };