Moved open and close of display to the 'grab' method, solving resolution switches.

Added doxygen comments to the dispmanx header.
This commit is contained in:
T. van der Zwan
2013-08-21 14:37:00 +00:00
parent 240b118ce9
commit f8c8fa6c74
2 changed files with 58 additions and 28 deletions

View File

@@ -11,26 +11,43 @@
#include <utils/RgbImage.h>
///
/// The DispmanxFrameGrabber grabs
/// The DispmanxFrameGrabber is used for creating snapshots of the display (screenshots) with a
/// downsized and scaled resolution.
///
class DispmanxFrameGrabber
{
public:
///
/// Construct a DispmanxFrameGrabber that will capture snapshots with specified dimensions.
///
/// @param[in] width The width of the captured screenshot
/// @param[in] height The heigth of the captured screenshot
///
DispmanxFrameGrabber(const unsigned width, const unsigned height);
~DispmanxFrameGrabber();
///
/// Captures a single snapshot of the display and writes the data to the given image. The
/// provided image should have the same dimensions as the configured values (_width and
/// _height)
///
/// @param[out] image The snapped screenshot (should be initialized with correct width and
/// height)
///
void grabFrame(RgbImage& image);
private:
DISPMANX_DISPLAY_HANDLE_T _display;
DISPMANX_MODEINFO_T _info;
/// Handle to the display that is being captured
DISPMANX_DISPLAY_HANDLE_T _vc_display;
DISPMANX_RESOURCE_HANDLE_T _resource;
uint32_t _vc_image_ptr;
/// Handle to the resource for storing the captured snapshot
DISPMANX_RESOURCE_HANDLE_T _vc_resource;
/// Rectangle of the captured resource that is transfered to user space
VC_RECT_T _rectangle;
/// With of the captured snapshot [pixels]
unsigned _width;
/// Height of the captured snapshot [pixels]
unsigned _height;
uint32_t _pitch;
};