mirror of
				https://github.com/hyperion-project/hyperion.ng.git
				synced 2025-03-01 10:33:28 +00:00 
			
		
		
		
	* move setvideomode to common place * implement more croping and 3d support * more api unification * more refactoring * osx fix * next step * add a mock for osx grabber. Now it is possible to test compile on none osx platforms. * more unifications ... * remove obsolete includes and grabbers are not dyn allocated. dispmanx needs rework an probaly not work atm * first version of dispmanx mock. it compiles, but outputs a black image * now dispmanx mock works! * activate mocks in travis linux build prepare dispmanx to rgb image out * dispmanx now with image rgb output fix deadlock with w/h -1 in grabber v4l cleanups * fix json * fix some runtime stuff * Update FramebufferWrapper.cpp fix missing code * unify grabframe * 3d and croping for amlogic * fix setimage not working * make use of templates save some codelines * save more code lines
		
			
				
	
	
		
			74 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#pragma once
 | 
						|
 | 
						|
// BCM includes
 | 
						|
#ifdef PLATFORM_RPI
 | 
						|
	#pragma GCC system_header
 | 
						|
	#include <bcm_host.h>
 | 
						|
#else
 | 
						|
	#include <grabber/DispmanxFrameGrabberMock.h>
 | 
						|
#endif
 | 
						|
 | 
						|
// Utils includes
 | 
						|
#include <utils/Image.h>
 | 
						|
#include <utils/ColorRgba.h>
 | 
						|
#include <hyperion/Grabber.h>
 | 
						|
 | 
						|
///
 | 
						|
/// The DispmanxFrameGrabber is used for creating snapshots of the display (screenshots) with a
 | 
						|
/// downsized and scaled resolution.
 | 
						|
///
 | 
						|
class DispmanxFrameGrabber : public Grabber
 | 
						|
{
 | 
						|
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)
 | 
						|
	///
 | 
						|
	int grabFrame(Image<ColorRgb> & image);
 | 
						|
 | 
						|
private:
 | 
						|
		///
 | 
						|
	/// Updates the frame-grab flags as used by the VC library for frame grabbing
 | 
						|
	///
 | 
						|
	/// @param vc_flags  The snapshot grabbing mask
 | 
						|
	///
 | 
						|
	void setFlags(const int vc_flags);
 | 
						|
	
 | 
						|
	/// Handle to the display that is being captured
 | 
						|
	DISPMANX_DISPLAY_HANDLE_T _vc_display;
 | 
						|
 | 
						|
	/// 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;
 | 
						|
 | 
						|
	/// Flags (transforms) for creating snapshots
 | 
						|
	int _vc_flags;
 | 
						|
 | 
						|
	// temp buffer when capturing with unsupported pitch size or
 | 
						|
	// when we need to crop the image
 | 
						|
	ColorRgba* _captureBuffer;
 | 
						|
 | 
						|
	// size of the capture buffer in Pixels
 | 
						|
	unsigned _captureBufferSize;
 | 
						|
 | 
						|
	// rgba output buffer
 | 
						|
	Image<ColorRgba>  _image_rgba;
 | 
						|
 | 
						|
};
 |