Deconflict changes with libOMX
This commit is contained in:
commit
97be374a75
@ -1,4 +1,10 @@
|
||||
cmake_minimum_required(VERSION 3.5.1)
|
||||
|
||||
find_program(CCACHE_PROGRAM ccache)
|
||||
if(CCACHE_PROGRAM)
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
|
||||
endif()
|
||||
|
||||
project(openauto CXX)
|
||||
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
@ -22,10 +28,15 @@ set(Boost_USE_STATIC_RUNTIME OFF)
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake_modules/")
|
||||
SET(CMAKE_CXX_STANDARD 14)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_INIT} -Wall -pedantic -fPIC")
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_INIT} -Wall -pedantic")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "-g -O3")
|
||||
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 6.3)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-psabi")
|
||||
endif()
|
||||
|
||||
add_definitions(-DBOOST_ALL_DYN_LINK)
|
||||
|
||||
find_package(Boost REQUIRED COMPONENTS system log OPTIONAL_COMPONENTS unit_test_framework)
|
||||
@ -34,6 +45,8 @@ find_package(Qt5 COMPONENTS Multimedia MultimediaWidgets Bluetooth Qml Quick Qui
|
||||
find_package(Protobuf REQUIRED)
|
||||
find_package(OpenSSL REQUIRED)
|
||||
find_package(rtaudio REQUIRED)
|
||||
find_package(aasdk REQUIRED)
|
||||
find_package(ZLIB REQUIRED)
|
||||
find_package(GObject)
|
||||
|
||||
if(WIN32)
|
||||
@ -73,12 +86,9 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}
|
||||
${Qt5Bluetooth_INCLUDE_DIRS}
|
||||
${QTGSTREAMER_INCLUDE_DIR}
|
||||
${Boost_INCLUDE_DIRS}
|
||||
${LIBUSB_1_INCLUDE_DIRS}
|
||||
${PROTOBUF_INCLUDE_DIR}
|
||||
${OPENSSL_INCLUDE_DIR}
|
||||
${RTAUDIO_INCLUDE_DIRS}
|
||||
${AASDK_PROTO_INCLUDE_DIRS}
|
||||
${AASDK_INCLUDE_DIRS}
|
||||
${BCM_HOST_INCLUDE_DIRS}
|
||||
${ILCLIENT_INCLUDE_DIRS}
|
||||
${GST_INCLUDE_DIRS}
|
||||
@ -94,26 +104,20 @@ file(GLOB_RECURSE autoapp_source_files ${autoapp_sources_directory}/*.ui ${autoa
|
||||
|
||||
add_executable(autoapp ${autoapp_source_files})
|
||||
|
||||
file(GLOB_RECURSE autoapp_lib_source_files ${autoapp_sources_directory}/App.cpp ${autoapp_sources_directory}/Configuration/*.cpp ${autoapp_sources_directory}/Projection/*.cpp ${autoapp_sources_directory}/Service/*.cpp)
|
||||
file(GLOB_RECURSE autoapp_lib_inlcude_files ${autoapp_include_directory}/App.hpp ${autoapp_include_directory}/Configuration/*.hpp ${autoapp_include_directory}/Projection/*.hpp ${autoapp_include_directory}/Service/*.hpp)
|
||||
add_library(auto SHARED ${autoapp_lib_source_files} ${autoapp_lib_inlcude_files})
|
||||
message(STATUS "${GST_LIBRARIES}")
|
||||
|
||||
target_link_libraries(autoapp
|
||||
target_link_libraries(autoapp aasdk libusb
|
||||
${GST_LIBRARIES}
|
||||
${Boost_LIBRARIES}
|
||||
${Qt5Multimedia_LIBRARIES}
|
||||
${Qt5MultimediaWidgets_LIBRARIES}
|
||||
${Qt5QuickWidgets_LIBRARIES}
|
||||
${Qt5Bluetooth_LIBRARIES}
|
||||
${LIBUSB_1_LIBRARIES}
|
||||
${PROTOBUF_LIBRARIES}
|
||||
${ZLIB_LIBRARIES}
|
||||
${BCM_HOST_LIBRARIES}
|
||||
${ILCLIENT_LIBRARIES}
|
||||
${WINSOCK2_LIBRARIES}
|
||||
${RTAUDIO_LIBRARIES}
|
||||
${AASDK_PROTO_LIBRARIES}
|
||||
${AASDK_LIBRARIES}
|
||||
${QTGLIB_LIBRARY}
|
||||
${QTGLIB_LIBRARIES}
|
||||
${QTGSTREAMER_LIBRARY}
|
||||
@ -122,7 +126,8 @@ target_link_libraries(autoapp
|
||||
${QTGSTREAMER_UI_LIBRARIES}
|
||||
${QTGSTREAMER_QUICK_LIBRARIES}
|
||||
${QTGSTREAMER_QUICK_LIBRARY}
|
||||
${GOBJECT_LIBRARIES})
|
||||
${GOBJECT_LIBRARIES}
|
||||
)
|
||||
|
||||
set(btservice_sources_directory ${sources_directory}/btservice)
|
||||
set(btservice_include_directory ${include_directory}/f1x/openauto/btservice)
|
||||
@ -135,4 +140,7 @@ target_link_libraries(btservice
|
||||
${Qt5Bluetooth_LIBRARIES}
|
||||
${Qt5MultimediaWidgets_LIBRARIES}
|
||||
${PROTOBUF_LIBRARIES}
|
||||
${AASDK_PROTO_LIBRARIES})
|
||||
)
|
||||
|
||||
install(TARGETS autoapp btservice
|
||||
RUNTIME DESTINATION bin)
|
||||
|
31
Readme.md
31
Readme.md
@ -1,15 +1,6 @@
|
||||
|
||||
# OpenAuto
|
||||
|
||||
### Support project
|
||||
[](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=R4HXE5ESDR4U4)
|
||||
|
||||
**OpenAuto Pro version** provides features like brightness control, volume control, support of Kodi and integration with the Raspberry PI OS (Raspbian Desktop). [See how it works at OpenAuto Pro overview video](https://www.youtube.com/watch?v=9sTOMI1qTiA)
|
||||
|
||||
If you are looking for the car power supply with ignition state detection [go to the Blue Wave Studio page](https://bluewavestudio.io/index.php/bluewave-shop)
|
||||
|
||||
For support of other platforms please contact me at f1xstudiopl@gmail.com
|
||||
|
||||
### Community
|
||||
[](https://gitter.im/openauto_androidauto/Lobby)
|
||||
|
||||
@ -18,6 +9,28 @@ OpenAuto is an AndroidAuto(tm) headunit emulator based on aasdk library and Qt l
|
||||
|
||||
[See demo video](https://www.youtube.com/watch?v=k9tKRqIkQs8)
|
||||
|
||||
### Build Guide
|
||||
#### Local build instructions for Raspberry Pi
|
||||
|
||||
Having <a href="https://github.com/openDsh/aasdk">aasdk</a> built and install first is a prequisite for this task. Please complete the necessary aasdk steps before proceeding here.
|
||||
|
||||
```sudo apt-get update
|
||||
sudo apt-get -y install cmake build-essential git
|
||||
|
||||
sudo apt-get install libboost-all-dev libusb-1.0.0-dev libssl-dev cmake libprotobuf-dev protobuf-c-compiler protobuf-compiler libqt5multimedia5 libqt5multimedia5-plugins libqt5multimediawidgets5 qtmultimedia5-dev libqt5bluetooth5 libqt5bluetooth5-bin qtconnectivity5-dev pulseaudio librtaudio-dev
|
||||
|
||||
git clone https://github.com/OpenDsh/openauto
|
||||
|
||||
mkdir openauto_build; cd openauto_build
|
||||
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DRPI3_BUILD=TRUE -DAASDK_INCLUDE_DIRS="../aasdk/include" -DAASDK_LIBRARIES="../aasdk/lib/libaasdk.so" -DAASDK_PROTO_INCLUDE_DIRS="../aasdk" -DAASDK_PROTO_LIBRARIES="../aasdk/lib/libaasdk_proto.so" ../openauto
|
||||
|
||||
make -j2
|
||||
sudo make install
|
||||
```
|
||||
|
||||
The executable binary can then be found at ~/openauto/bin/autoapp
|
||||
|
||||
### Supported functionalities
|
||||
- 480p, 720p and 1080p with 30 or 60 FPS
|
||||
- RaspberryPI 3 hardware acceleration support to decode video stream (up to 1080p@60!)
|
||||
|
43
cmake_modules/Findaasdk.cmake
Normal file
43
cmake_modules/Findaasdk.cmake
Normal file
@ -0,0 +1,43 @@
|
||||
set (AASDK_DIR ~/aasdk)
|
||||
|
||||
find_path(AASDK_INCLUDE_DIR
|
||||
f1x/aasdk/Version.hpp
|
||||
PATHS ${AASDK_DIR}
|
||||
PATH_SUFFIXES include
|
||||
)
|
||||
|
||||
find_path(AASDK_PROTO_INCLUDE_DIR
|
||||
aasdk_proto/AbsoluteInputEventData.pb.h
|
||||
PATHS ${AASDK_DIR}
|
||||
)
|
||||
|
||||
find_path(AASDK_LIB_DIR
|
||||
libaasdk.so
|
||||
PATHS ${AASDK_DIR}
|
||||
PATH_SUFFIXES lib
|
||||
)
|
||||
|
||||
if (AASDK_INCLUDE_DIR AND AASDK_PROTO_INCLUDE_DIR AND AASDK_LIB_DIR)
|
||||
set(AASDK_FOUND TRUE)
|
||||
endif()
|
||||
|
||||
if (AASDK_FOUND)
|
||||
if (NOT aasdk_FIND_QUIETLY)
|
||||
message(STATUS "Found aasdk:")
|
||||
message(STATUS " - Includes: ${AASDK_INCLUDE_DIR}")
|
||||
message(STATUS " - Libraries: ${AASDK_LIBRARIES}")
|
||||
endif()
|
||||
add_library(aasdk INTERFACE)
|
||||
target_include_directories(aasdk INTERFACE ${AASDK_INCLUDE_DIR} ${AASDK_PROTO_INCLUDE_DIR})
|
||||
target_link_libraries(aasdk INTERFACE ${AASDK_LIB_DIR}/libaasdk.so ${AASDK_LIB_DIR}/libaasdk_proto.so)
|
||||
else()
|
||||
if (aasdk_FIND_REQUIRED)
|
||||
if(AASDK_INCLUDE_DIR AND NOT AASDK_PROTO_INCLUDE_DIR)
|
||||
message(FATAL_ERROR "aasdk was found but not built. Perform an in-source build.")
|
||||
else()
|
||||
message(FATAL_ERROR "Could not find aasdk")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
mark_as_advanced(AASDK_INCLUDE_DIRS AASDK_LIBRARIES)
|
67
cmake_modules/Findlibomx.cmake
Normal file
67
cmake_modules/Findlibomx.cmake
Normal file
@ -0,0 +1,67 @@
|
||||
set (OMX_DIR /opt/vc/)
|
||||
|
||||
find_path(BCM_HOST_INCLUDE_DIR
|
||||
bcm_host.h
|
||||
PATHS
|
||||
${OMX_DIR}
|
||||
PATH_SUFFIXES
|
||||
include
|
||||
)
|
||||
|
||||
find_path(BCM_HOST_LIB_DIR
|
||||
libbcm_host.so
|
||||
PATHS
|
||||
${OMX_DIR}
|
||||
PATH_SUFFIXES
|
||||
lib
|
||||
)
|
||||
|
||||
find_path(ILCLIENT_INCLUDE_DIR
|
||||
ilclient.h
|
||||
PATHS
|
||||
${OMX_DIR}
|
||||
PATH_SUFFIXES
|
||||
src/hello_pi/libs/ilclient
|
||||
)
|
||||
|
||||
find_path(ILCLIENT_LIB_DIR
|
||||
libilclient.a
|
||||
PATHS
|
||||
${OMX_DIR}
|
||||
PATH_SUFFIXES
|
||||
src/hello_pi/libs/ilclient
|
||||
)
|
||||
|
||||
if (BCM_HOST_INCLUDE_DIR AND ILCLIENT_INCLUDE_DIR AND BCM_HOST_LIB_DIR AND ILCLIENT_LIB_DIR)
|
||||
set(libomx_FOUND TRUE)
|
||||
endif()
|
||||
|
||||
if (libomx_FOUND)
|
||||
if (NOT libomx_FIND_QUIETLY)
|
||||
message(STATUS "Found omx:")
|
||||
message(STATUS " - Bcm Host: ${BCM_HOST_INCLUDE_DIR}")
|
||||
message(STATUS " - ilclient: ${ILCLIENT_INCLUDE_DIR}")
|
||||
endif()
|
||||
|
||||
add_library(omx INTERFACE)
|
||||
|
||||
target_include_directories(omx SYSTEM INTERFACE
|
||||
${BCM_HOST_INCLUDE_DIR}
|
||||
${ILCLIENT_INCLUDE_DIR}
|
||||
)
|
||||
|
||||
target_link_libraries(omx INTERFACE
|
||||
${BCM_HOST_LIB_DIR}/libbcm_host.so
|
||||
${ILCLIENT_LIB_DIR}/libilclient.a
|
||||
${BCM_HOST_LIB_DIR}/libvcos.so
|
||||
${BCM_HOST_LIB_DIR}/libvcilcs.a
|
||||
${BCM_HOST_LIB_DIR}/libvchiq_arm.so
|
||||
)
|
||||
|
||||
target_compile_definitions(omx INTERFACE
|
||||
-DUSE_OMX
|
||||
-DOMX_SKIP64BIT
|
||||
-DRASPBERRYPI3
|
||||
)
|
||||
|
||||
endif()
|
@ -85,6 +85,9 @@ else (LIBUSB_1_LIBRARIES AND LIBUSB_1_INCLUDE_DIRS)
|
||||
message(STATUS "Found libusb-1.0:")
|
||||
message(STATUS " - Includes: ${LIBUSB_1_INCLUDE_DIRS}")
|
||||
message(STATUS " - Libraries: ${LIBUSB_1_LIBRARIES}")
|
||||
add_library(libusb INTERFACE)
|
||||
target_include_directories(libusb SYSTEM INTERFACE ${LIBUSB_1_INCLUDE_DIR})
|
||||
target_link_libraries(libusb INTERFACE ${LIBUSB_1_LIBRARY})
|
||||
endif (NOT libusb_1_FIND_QUIETLY)
|
||||
else (LIBUSB_1_FOUND)
|
||||
if (libusb_1_FIND_REQUIRED)
|
||||
|
@ -269,19 +269,19 @@ void OMXVideoOutput::setDestRect(DestRect destRect)
|
||||
|
||||
bool OMXVideoOutput::createComponents()
|
||||
{
|
||||
if(ilclient_create_component(client_, &components_[VideoComponent::DECODER], "video_decode", static_cast<ILCLIENT_CREATE_FLAGS_T>(ILCLIENT_DISABLE_ALL_PORTS | ILCLIENT_ENABLE_INPUT_BUFFERS)) != 0)
|
||||
if(ilclient_create_component(client_, &components_[VideoComponent::DECODER], const_cast<char*>("video_decode"), static_cast<ILCLIENT_CREATE_FLAGS_T>(ILCLIENT_DISABLE_ALL_PORTS | ILCLIENT_ENABLE_INPUT_BUFFERS)) != 0)
|
||||
{
|
||||
OPENAUTO_LOG(error) << "[OMXVideoOutput] video decode component creation failed.";
|
||||
return false;
|
||||
}
|
||||
|
||||
if(ilclient_create_component(client_, &components_[VideoComponent::RENDERER], "video_render", ILCLIENT_DISABLE_ALL_PORTS) != 0)
|
||||
if(ilclient_create_component(client_, &components_[VideoComponent::RENDERER], const_cast<char*>("video_render"), ILCLIENT_DISABLE_ALL_PORTS) != 0)
|
||||
{
|
||||
OPENAUTO_LOG(error) << "[OMXVideoOutput] video renderer component creation failed.";
|
||||
return false;
|
||||
}
|
||||
|
||||
if(ilclient_create_component(client_, &components_[VideoComponent::CLOCK], "clock", ILCLIENT_DISABLE_ALL_PORTS) != 0)
|
||||
if(ilclient_create_component(client_, &components_[VideoComponent::CLOCK], const_cast<char*>("clock"), ILCLIENT_DISABLE_ALL_PORTS) != 0)
|
||||
{
|
||||
OPENAUTO_LOG(error) << "[OMXVideoOutput] clock component creation failed.";
|
||||
return false;
|
||||
@ -293,7 +293,7 @@ bool OMXVideoOutput::createComponents()
|
||||
return false;
|
||||
}
|
||||
|
||||
if(ilclient_create_component(client_, &components_[VideoComponent::SCHEDULER], "video_scheduler", ILCLIENT_DISABLE_ALL_PORTS) != 0)
|
||||
if(ilclient_create_component(client_, &components_[VideoComponent::SCHEDULER], const_cast<char*>("video_scheduler"), ILCLIENT_DISABLE_ALL_PORTS) != 0)
|
||||
{
|
||||
OPENAUTO_LOG(error) << "[OMXVideoOutput] video scheduler component creation failed.";
|
||||
return false;
|
||||
|
Loading…
x
Reference in New Issue
Block a user