mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2023-10-10 13:36:59 +02:00
Added first quick and dirty implementation of own server (HyperionDispmanX.cpp).
This commit is contained in:
parent
a65305dbdb
commit
f6672499f5
@ -36,3 +36,4 @@ configure_file(config/hyperion.schema.json ${LIBRARY_OUTPUT_PATH} @ONLY)
|
||||
add_subdirectory(dependencies)
|
||||
add_subdirectory(libsrc)
|
||||
add_subdirectory(src)
|
||||
add_subdirectory(test)
|
||||
|
23
cmake/FindBCM.cmake
Normal file
23
cmake/FindBCM.cmake
Normal file
@ -0,0 +1,23 @@
|
||||
# - Find the native BCM includes and library
|
||||
#
|
||||
|
||||
# This module defines
|
||||
# BCM_INCLUDE_DIR, where to find png.h, etc.
|
||||
# BCM_LIBRARIES, the libraries to link against to use PNG.
|
||||
# BCM_FOUND, If false, do not try to use PNG.
|
||||
#
|
||||
|
||||
FIND_PATH(BCM_INCLUDE_DIR
|
||||
bcm_host.h
|
||||
/usr/include
|
||||
/usr/local/include
|
||||
/opt/vc/include)
|
||||
|
||||
SET(BCM_INCLUDE_DIRS
|
||||
${BCM_INCLUDE_DIR}
|
||||
${BCM_INCLUDE_DIR}/interface/vcos/pthreads
|
||||
${BCM_INCLUDE_DIR}/interface/vmcs_host/linux)
|
||||
|
||||
FIND_LIBRARY(BCM_LIBS
|
||||
NAMES bcm_host
|
||||
PATHS /usr/lib /usr/local/lib /opt/vc/lib)
|
@ -11,9 +11,6 @@
|
||||
# None of the above will be defined unles zlib can be found.
|
||||
# PNG depends on Zlib
|
||||
#
|
||||
# Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved.
|
||||
# See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
|
||||
|
||||
|
||||
INCLUDE(FindZLIB)
|
||||
|
||||
|
@ -15,3 +15,6 @@ add_library(hyperion
|
||||
${CURRENT_SOURCE_DIR}/Hyperion.cpp
|
||||
${CURRENT_SOURCE_DIR}/ImageToLedsMap.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(hyperion
|
||||
hyperion-utils)
|
||||
|
@ -1,48 +1,7 @@
|
||||
|
||||
# Find the libPNG
|
||||
find_package(PNG REQUIRED QUIET)
|
||||
|
||||
# Add additional includes dirs
|
||||
include_directories(${PNG_INCLUDE_DIR})
|
||||
|
||||
# Add the simple test executable 'TestSpi'
|
||||
add_executable(TestSpi
|
||||
TestSpi.cpp)
|
||||
|
||||
target_link_libraries(TestSpi
|
||||
hyperion
|
||||
hyperion-utils)
|
||||
|
||||
add_executable(TestHyperionPng
|
||||
TestHyperionPng.cpp)
|
||||
|
||||
target_link_libraries(TestHyperionPng
|
||||
hyperion-png)
|
||||
|
||||
add_executable(WriteConfig
|
||||
WriteConfig.cpp)
|
||||
|
||||
add_executable(TestConfigFile
|
||||
TestConfigFile.cpp)
|
||||
|
||||
target_link_libraries(TestConfigFile
|
||||
hyperion-utils
|
||||
hyperion)
|
||||
|
||||
add_executable(ViewPng
|
||||
ViewPng.cpp)
|
||||
|
||||
target_link_libraries(ViewPng
|
||||
hyperion
|
||||
hyperion-utils
|
||||
${PNG_LIBRARIES})
|
||||
|
||||
add_executable(Test2BobLight
|
||||
Test2BobLight.cpp)
|
||||
|
||||
target_link_libraries(Test2BobLight
|
||||
bob2hyperion)
|
||||
|
||||
add_executable(boblight-dispmanx
|
||||
boblight-dispmanx.cpp
|
||||
flagmanager.h
|
||||
@ -58,31 +17,36 @@ add_executable(boblight-dispmanx
|
||||
timeutils.h
|
||||
timeutils.cpp)
|
||||
|
||||
FIND_PATH(VC_INCLUDE_DIR
|
||||
bcm_host.h
|
||||
/usr/include
|
||||
/usr/local/include
|
||||
/opt/vc/include)
|
||||
SET(VC_INCLUDE_DIRS
|
||||
${VC_INCLUDE_DIR}
|
||||
${VC_INCLUDE_DIR}/interface/vcos/pthreads
|
||||
${VC_INCLUDE_DIR}/interface/vmcs_host/linux)
|
||||
FIND_LIBRARY(VC_LIBS
|
||||
NAMES bcm_host
|
||||
PATHS /usr/lib /usr/local/lib /opt/vc/lib)
|
||||
message("{VC_LIBS} = ${VC_LIBS}")
|
||||
# Find the BCM-package (VC control)
|
||||
find_package(BCM REQUIRED)
|
||||
|
||||
#SET(VC_LIBS
|
||||
# /home/pi/.xbmc-current/xbmc-bin/lib/xbmc/system/libbcm_host.so)
|
||||
# /home/pi/.xbmc-current/xbmc-bin/lib/xbmc/system/libGLESv2.so
|
||||
# /home/pi/.xbmc-current/xbmc-bin/lib/xbmc/system/libEGL.so
|
||||
# /home/pi/.xbmc-current/xbmc-bin/lib/xbmc/system/libopenmaxil.so
|
||||
# /home/pi/.xbmc-current/xbmc-bin/lib/xbmc/system/libvcos.so
|
||||
# /home/pi/.xbmc-current/xbmc-bin/lib/xbmc/system/libvchiq_arm.so)
|
||||
|
||||
include_directories(${VC_INCLUDE_DIRS})
|
||||
include_directories(${BCM_INCLUDE_DIRS})
|
||||
|
||||
target_link_libraries(boblight-dispmanx
|
||||
# hyperion-png
|
||||
bob2hyperion
|
||||
${VC_LIBS})
|
||||
${BCM_LIBS})
|
||||
|
||||
add_executable(HyperionDispmanX
|
||||
HyperionDispmanX.cpp)
|
||||
|
||||
target_link_libraries(HyperionDispmanX
|
||||
hyperion
|
||||
${BCM_LIBS})
|
||||
|
||||
|
||||
# Find the libPNG
|
||||
find_package(PNG QUIET)
|
||||
|
||||
if(PNG_FOUND)
|
||||
# Add additional includes dirs
|
||||
include_directories(${PNG_INCLUDE_DIR})
|
||||
|
||||
add_executable(ViewPng
|
||||
ViewPng.cpp)
|
||||
|
||||
target_link_libraries(ViewPng
|
||||
hyperion
|
||||
hyperion-utils
|
||||
${PNG_LIBRARIES})
|
||||
endif(PNG_FOUND)
|
||||
|
75
src/HyperionDispmanX.cpp
Normal file
75
src/HyperionDispmanX.cpp
Normal file
@ -0,0 +1,75 @@
|
||||
|
||||
// VC includes
|
||||
#include <bcm_host.h>
|
||||
|
||||
// Hyperion includes
|
||||
#include <hyperion/Hyperion.h>
|
||||
|
||||
#include <json/json.h>
|
||||
#include <utils/jsonschema/JsonFactory.h>
|
||||
|
||||
int main(int /*argc*/, char** /*argv*/)
|
||||
{
|
||||
const char* homeDir = getenv("RASPILIGHT_HOME");
|
||||
if (!homeDir)
|
||||
{
|
||||
homeDir = "/etc";
|
||||
}
|
||||
std::cout << "RASPILIGHT HOME DIR: " << homeDir << std::endl;
|
||||
|
||||
const std::string schemaFile = std::string(homeDir) + "/hyperion.schema.json";
|
||||
const std::string configFile = std::string(homeDir) + "/hyperion.config.json";
|
||||
|
||||
Json::Value raspiConfig;
|
||||
if (JsonFactory::load(schemaFile, configFile, raspiConfig) < 0)
|
||||
{
|
||||
std::cerr << "UNABLE TO LOAD CONFIGURATION" << std::endl;
|
||||
return -1;
|
||||
}
|
||||
Hyperion hyperion(raspiConfig);
|
||||
|
||||
const unsigned width = 64;
|
||||
const unsigned height = 64;
|
||||
|
||||
hyperion.setInputSize(width, height);
|
||||
|
||||
volatile bool running = true;
|
||||
|
||||
// Open the connection to the displaydisplay
|
||||
DISPMANX_DISPLAY_HANDLE_T display = vc_dispmanx_display_open(0);
|
||||
DISPMANX_MODEINFO_T info;
|
||||
int ret = vc_dispmanx_display_get_info(display, &info);
|
||||
assert(ret == 0);
|
||||
|
||||
// Create the resources for capturing image
|
||||
uint32_t vc_image_ptr;
|
||||
DISPMANX_RESOURCE_HANDLE_T resource = vc_dispmanx_resource_create(
|
||||
VC_IMAGE_RGB888,
|
||||
width,
|
||||
height,
|
||||
&vc_image_ptr);
|
||||
assert(resource);
|
||||
|
||||
VC_RECT_T rectangle;
|
||||
vc_dispmanx_rect_set(&rectangle, 0, 0, width, height);
|
||||
|
||||
RgbImage* image_ptr = &(hyperion.image());
|
||||
void* image_vp = reinterpret_cast<void*>(image_ptr);
|
||||
const unsigned imageSize_bytes = width*height*3;
|
||||
|
||||
timespec updateInterval;
|
||||
updateInterval.tv_sec = 0;
|
||||
updateInterval.tv_nsec = 100000000000;
|
||||
|
||||
while(running)
|
||||
{
|
||||
vc_dispmanx_snapshot(display, resource, VC_IMAGE_ROT0);
|
||||
vc_dispmanx_resource_read_data(resource, &rectangle, image_vp, imageSize_bytes);
|
||||
|
||||
hyperion.commit();
|
||||
|
||||
nanosleep(&updateInterval, NULL);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
37
test/CMakeLists.txt
Normal file
37
test/CMakeLists.txt
Normal file
@ -0,0 +1,37 @@
|
||||
|
||||
# Add the simple test executable 'TestSpi'
|
||||
add_executable(TestSpi
|
||||
TestSpi.cpp)
|
||||
|
||||
target_link_libraries(TestSpi
|
||||
hyperion
|
||||
hyperion-utils)
|
||||
|
||||
add_executable(TestConfigFile
|
||||
TestConfigFile.cpp)
|
||||
|
||||
target_link_libraries(TestConfigFile
|
||||
hyperion-utils
|
||||
hyperion)
|
||||
|
||||
add_executable(Test2BobLight
|
||||
Test2BobLight.cpp)
|
||||
|
||||
target_link_libraries(Test2BobLight
|
||||
bob2hyperion)
|
||||
|
||||
|
||||
# Find the libPNG
|
||||
find_package(PNG REQUIRED QUIET)
|
||||
|
||||
# Add additional includes dirs
|
||||
include_directories(${PNG_INCLUDE_DIR})
|
||||
|
||||
if(PNG_FOUND)
|
||||
|
||||
add_executable(TestHyperionPng
|
||||
TestHyperionPng.cpp)
|
||||
|
||||
target_link_libraries(TestHyperionPng
|
||||
hyperion-png)
|
||||
endif(PNG_FOUND)
|
Loading…
Reference in New Issue
Block a user