mirror of
				https://github.com/hyperion-project/hyperion.ng.git
				synced 2025-03-01 10:33:28 +00:00 
			
		
		
		
	Added tool to create screenshot for amlogic grabber
Former-commit-id: d403deab3f931d01bec97b726d8e70b73d3a0012
This commit is contained in:
		| @@ -3,13 +3,16 @@ add_subdirectory(hyperion-remote) | ||||
|  | ||||
| # The following clients depend on the protobuf library | ||||
| if(ENABLE_PROTOBUF) | ||||
|     # Add the 'Video 4 Linux' grabber if it is enabled | ||||
|     if(ENABLE_V4L2) | ||||
|             add_subdirectory(hyperion-v4l2) | ||||
|     endif() | ||||
| 	if (ENABLE_AMLOGIC) | ||||
| 		add_subdirectory(hyperion-aml) | ||||
| 	endif() | ||||
| 	# Add the 'Video 4 Linux' grabber if it is enabled | ||||
| 	if(ENABLE_V4L2) | ||||
| 		add_subdirectory(hyperion-v4l2) | ||||
| 	endif() | ||||
|  | ||||
|     # Add the X11 grabber if it is enabled | ||||
|     if(ENABLE_X11) | ||||
|             add_subdirectory(hyperion-x11) | ||||
|     endif() | ||||
| 	# Add the X11 grabber if it is enabled | ||||
| 	if(ENABLE_X11) | ||||
| 		add_subdirectory(hyperion-x11) | ||||
| 	endif() | ||||
| endif() | ||||
|   | ||||
							
								
								
									
										46
									
								
								src/hyperion-aml/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								src/hyperion-aml/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| # Configure minimum CMAKE version | ||||
| cmake_minimum_required(VERSION 2.8) | ||||
|  | ||||
| # Set the project name | ||||
| project(hyperion-aml) | ||||
|  | ||||
| # find Qt4 | ||||
| find_package(Qt4 REQUIRED QtCore QtGui QtNetwork) | ||||
|  | ||||
| include_directories( | ||||
| 	${CMAKE_CURRENT_BINARY_DIR}/../../libsrc/protoserver | ||||
| 	${QT_INCLUDES} | ||||
| 	${PROTOBUF_INCLUDE_DIRS} | ||||
| ) | ||||
|  | ||||
| set(Hyperion_AML_QT_HEADERS | ||||
| ) | ||||
|  | ||||
| set(Hyperion_AML_HEADERS | ||||
| ) | ||||
|  | ||||
| set(Hyperion_AML_SOURCES | ||||
| 	hyperion-aml.cpp | ||||
| ) | ||||
|  | ||||
| QT4_WRAP_CPP(Hyperion_AML_HEADERS_MOC ${Hyperion_AML_QT_HEADERS}) | ||||
|  | ||||
| add_executable(hyperion-amlogic | ||||
| 	${Hyperion_AML_HEADERS} | ||||
| 	${Hyperion_AML_SOURCES} | ||||
| 	${Hyperion_AML_HEADERS_MOC} | ||||
| ) | ||||
|  | ||||
| target_link_libraries(hyperion-amlogic | ||||
| 	getoptPlusPlus | ||||
| 	blackborder | ||||
| 	hyperion-utils | ||||
| 	protoserver | ||||
| 	amlogic-grabber | ||||
| 	pthread | ||||
| ) | ||||
|  | ||||
| qt4_use_modules(hyperion-amlogic | ||||
| 	Core | ||||
| 	Gui | ||||
| 	Network) | ||||
							
								
								
									
										80
									
								
								src/hyperion-aml/hyperion-aml.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								src/hyperion-aml/hyperion-aml.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,80 @@ | ||||
|  | ||||
|  | ||||
| // QT includes | ||||
| #include <QCoreApplication> | ||||
| #include <QImage> | ||||
|  | ||||
| // getoptPlusPLus includes | ||||
| #include <getoptPlusPlus/getoptpp.h> | ||||
|  | ||||
| #include "../../libsrc/grabber/amlogic/AmlogicGrabber.h" | ||||
|  | ||||
| using namespace vlofgren; | ||||
|  | ||||
| // save the image as screenshot | ||||
| void saveScreenshot(const char * filename, const Image<ColorRgb> & image) | ||||
| { | ||||
|     // store as PNG | ||||
|     QImage pngImage((const uint8_t *) image.memptr(), image.width(), image.height(), 3*image.width(), QImage::Format_RGB888); | ||||
|     pngImage.save(filename); | ||||
| } | ||||
|  | ||||
| int main(int argc, char ** argv) | ||||
| { | ||||
| 	QCoreApplication app(argc, argv); | ||||
|  | ||||
| 	try | ||||
| 	{ | ||||
| 		// create the option parser and initialize all parameters | ||||
| 		OptionsParser optionParser("X11 capture application for Hyperion"); | ||||
| 		ParameterSet & parameters = optionParser.getParameters(); | ||||
|  | ||||
| 		//IntParameter           & argFps             = parameters.add<IntParameter>          ('f', "framerate",        "Capture frame rate [default=10]"); | ||||
| 		IntParameter           & argWidth           = parameters.add<IntParameter>          (0x0, "width",       "Width of the captured image [default=128]"); | ||||
| 		IntParameter           & argHeight          = parameters.add<IntParameter>          (0x0, "height",      "Height of the captured image [default=128]"); | ||||
| 		SwitchParameter<>      & argScreenshot      = parameters.add<SwitchParameter<>>     (0x0, "screenshot",       "Take a single screenshot, save it to file and quit"); | ||||
| 		StringParameter        & argAddress         = parameters.add<StringParameter>       ('a', "address",          "Set the address of the hyperion server [default: 127.0.0.1:19445]"); | ||||
| 		IntParameter           & argPriority        = parameters.add<IntParameter>          ('p', "priority",         "Use the provided priority channel (the lower the number, the higher the priority) [default: 800]"); | ||||
| 		//SwitchParameter<>      & argSkipReply       = parameters.add<SwitchParameter<>>     (0x0, "skip-reply",       "Do not receive and check reply messages from Hyperion"); | ||||
| 		SwitchParameter<>      & argHelp            = parameters.add<SwitchParameter<>>     ('h', "help",             "Show this help message and exit"); | ||||
|  | ||||
| 		// set defaults | ||||
| 		argWidth.setDefault(64); | ||||
| 		argHeight.setDefault(64); | ||||
| 		argAddress.setDefault("127.0.0.1:19445"); | ||||
| 		argPriority.setDefault(800); | ||||
| 		 | ||||
| 		// parse all options | ||||
| 		optionParser.parse(argc, const_cast<const char **>(argv)); | ||||
|  | ||||
| 		// check if we need to display the usage. exit if we do. | ||||
| 		if (argHelp.isSet()) | ||||
| 		{ | ||||
| 			optionParser.usage(); | ||||
| 			return 0; | ||||
| 		} | ||||
|  | ||||
| 		if (argScreenshot.isSet()) | ||||
| 		{ | ||||
| 			// Create the grabber | ||||
| 			AmlogicGrabber amlGrabber(argWidth.getValue(), argHeight.getValue()); | ||||
| 			 | ||||
| 			// Capture a single screenshot and finish | ||||
| 			Image<ColorRgb> screenshot; | ||||
| 			amlGrabber.grabFrame(screenshot); | ||||
| 			saveScreenshot("screenshot.png", screenshot); | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			// TODO[TvdZ]: Implement the proto-client mechanisme | ||||
| 		} | ||||
|  | ||||
| 	} | ||||
| 	catch (const std::runtime_error & e) | ||||
| 	{ | ||||
| 		// An error occured. Display error and quit | ||||
| 		std::cerr << e.what() << std::endl; | ||||
| 		return -1; | ||||
| 	} | ||||
| 	return 0; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user