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(dependencies)
|
||||||
add_subdirectory(libsrc)
|
add_subdirectory(libsrc)
|
||||||
add_subdirectory(src)
|
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.
|
# None of the above will be defined unles zlib can be found.
|
||||||
# PNG depends on Zlib
|
# 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)
|
INCLUDE(FindZLIB)
|
||||||
|
|
||||||
|
@ -15,3 +15,6 @@ add_library(hyperion
|
|||||||
${CURRENT_SOURCE_DIR}/Hyperion.cpp
|
${CURRENT_SOURCE_DIR}/Hyperion.cpp
|
||||||
${CURRENT_SOURCE_DIR}/ImageToLedsMap.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
|
add_executable(WriteConfig
|
||||||
WriteConfig.cpp)
|
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
|
add_executable(boblight-dispmanx
|
||||||
boblight-dispmanx.cpp
|
boblight-dispmanx.cpp
|
||||||
flagmanager.h
|
flagmanager.h
|
||||||
@ -58,31 +17,36 @@ add_executable(boblight-dispmanx
|
|||||||
timeutils.h
|
timeutils.h
|
||||||
timeutils.cpp)
|
timeutils.cpp)
|
||||||
|
|
||||||
FIND_PATH(VC_INCLUDE_DIR
|
# Find the BCM-package (VC control)
|
||||||
bcm_host.h
|
find_package(BCM REQUIRED)
|
||||||
/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}")
|
|
||||||
|
|
||||||
#SET(VC_LIBS
|
include_directories(${BCM_INCLUDE_DIRS})
|
||||||
# /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})
|
|
||||||
|
|
||||||
target_link_libraries(boblight-dispmanx
|
target_link_libraries(boblight-dispmanx
|
||||||
# hyperion-png
|
# hyperion-png
|
||||||
bob2hyperion
|
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