#pragma once // Utils includes #include #include #include #include #include // Forward class declaration class AmlogicGrabber; class Hyperion; class ImageProcessor; /// /// The DispmanxWrapper uses an instance of the DispmanxFrameGrabber to obtain ImageRgb's from the /// displayed content. This ImageRgb is processed to a ColorRgb for each led and commmited to the /// attached Hyperion. /// class AmlogicWrapper : public GrabberWrapper { Q_OBJECT public: /// /// Constructs the dispmanx frame grabber with a specified grab size and update rate. /// /// @param[in] grabWidth The width of the grabbed image [pixels] /// @param[in] grabHeight The height of the grabbed images [pixels] /// @param[in] updateRate_Hz The image grab rate [Hz] /// @param[in] hyperion The instance of Hyperion used to write the led values /// AmlogicWrapper(const unsigned grabWidth, const unsigned grabHeight, const unsigned updateRate_Hz, const int priority); /// /// Destructor of this dispmanx frame grabber. Releases any claimed resources. /// virtual ~AmlogicWrapper(); public slots: /// /// Performs a single frame grab and computes the led-colors /// virtual void action(); virtual void setVideoMode(const VideoMode mode); private: /// The update rate [Hz] const int _updateInterval_ms; /// The timeout of the led colors [ms] const int _timeout_ms; /// The image used for grabbing frames Image _image; /// The actual grabber AmlogicGrabber * _grabber; /// The list with computed led colors std::vector _ledColors; };