mirror of
https://github.com/motioneye-project/motioneyeos.git
synced 2025-07-24 11:46:30 +00:00
add v4l2rtspserver v4l2tools v4l2cpp packages
This commit is contained in:
parent
bc1f321a26
commit
ef0183373e
@ -7,6 +7,7 @@ menu "Target packages"
|
||||
source "package/skeleton-init-none/Config.in"
|
||||
source "package/skeleton-init-systemd/Config.in"
|
||||
source "package/skeleton-init-sysv/Config.in"
|
||||
source "package/motioneye/Config.in"
|
||||
|
||||
menu "Audio and video applications"
|
||||
source "package/alsa-utils/Config.in"
|
||||
@ -56,6 +57,8 @@ menu "Audio and video applications"
|
||||
source "package/upmpdcli/Config.in"
|
||||
source "package/v4l2grab/Config.in"
|
||||
source "package/v4l2loopback/Config.in"
|
||||
source "package/v4l2rtspserver/Config.in"
|
||||
source "package/v4l2tools/Config.in"
|
||||
source "package/vlc/Config.in"
|
||||
source "package/vorbis-tools/Config.in"
|
||||
source "package/wavpack/Config.in"
|
||||
@ -952,6 +955,7 @@ menu "External python modules"
|
||||
source "package/python-oauthlib/Config.in"
|
||||
source "package/python-paho-mqtt/Config.in"
|
||||
source "package/python-pam/Config.in"
|
||||
source "package/python-pantilthat/Config.in"
|
||||
source "package/python-paramiko/Config.in"
|
||||
source "package/python-passlib/Config.in"
|
||||
source "package/python-pathlib2/Config.in"
|
||||
@ -994,7 +998,6 @@ menu "External python modules"
|
||||
source "package/python-pygame/Config.in"
|
||||
source "package/python-pygments/Config.in"
|
||||
source "package/python-pyhamcrest/Config.in"
|
||||
source "package/python-pyhocon/Config.in"
|
||||
source "package/python-pyicu/Config.in"
|
||||
source "package/python-pyinotify/Config.in"
|
||||
source "package/python-pyjwt/Config.in"
|
||||
@ -1512,6 +1515,7 @@ menu "Multimedia"
|
||||
source "package/libyuv/Config.in"
|
||||
source "package/live555/Config.in"
|
||||
source "package/mediastreamer/Config.in"
|
||||
source "package/v4l2cpp/Config.in"
|
||||
source "package/x264/Config.in"
|
||||
source "package/x265/Config.in"
|
||||
endmenu
|
||||
|
15
package/v4l2cpp/0001-no-log4cpp.patch.bak
Normal file
15
package/v4l2cpp/0001-no-log4cpp.patch.bak
Normal file
@ -0,0 +1,15 @@
|
||||
diff --git a/Makefile b/Makefile
|
||||
index a51b316..60b801b 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -5,10 +5,6 @@ CXX ?= $(CROSS)g++
|
||||
AR ?= $(CROSS)ar
|
||||
PREFIX?=/usr
|
||||
|
||||
-ifneq ($(wildcard $(SYSROOT)$(PREFIX)/include/log4cpp/Category.hh),)
|
||||
-CXXFLAGS += -DHAVE_LOG4CPP -I $(SYSROOT)$(PREFIX)/include
|
||||
-endif
|
||||
-
|
||||
V4L2WRAPPER_CPP:=$(wildcard src/*.cpp)
|
||||
V4L2WRAPPER_OBJ:=$(V4L2WRAPPER_CPP:%.cpp=%.o)
|
||||
|
39
package/v4l2cpp/0001-shared-lib.patch
Normal file
39
package/v4l2cpp/0001-shared-lib.patch
Normal file
@ -0,0 +1,39 @@
|
||||
diff --git a/Makefile b/Makefile
|
||||
index a51b316..7291248 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -5,16 +5,12 @@ CXX ?= $(CROSS)g++
|
||||
AR ?= $(CROSS)ar
|
||||
PREFIX?=/usr
|
||||
|
||||
-ifneq ($(wildcard $(SYSROOT)$(PREFIX)/include/log4cpp/Category.hh),)
|
||||
-CXXFLAGS += -DHAVE_LOG4CPP -I $(SYSROOT)$(PREFIX)/include
|
||||
-endif
|
||||
-
|
||||
V4L2WRAPPER_CPP:=$(wildcard src/*.cpp)
|
||||
V4L2WRAPPER_OBJ:=$(V4L2WRAPPER_CPP:%.cpp=%.o)
|
||||
|
||||
.DEFAULT_GOAL := all
|
||||
|
||||
-all: libv4l2wrapper.a
|
||||
+all: libv4l2wrapper.a libv4l2wrapper.so
|
||||
|
||||
%.o: %.cpp
|
||||
$(CXX) -c -o $@ $< $(CXXFLAGS)
|
||||
@@ -22,12 +18,14 @@ all: libv4l2wrapper.a
|
||||
libv4l2wrapper.a: $(V4L2WRAPPER_OBJ)
|
||||
$(AR) rcs $@ $^
|
||||
|
||||
+libv4l2wrapper.so: $(V4L2WRAPPER_OBJ)
|
||||
+ $(CXX) -shared -fPIC $(CXXFLAGS) -o $@ $^
|
||||
|
||||
clean:
|
||||
- -@$(RM) *.a $(V4L2WRAPPER_OBJ)
|
||||
+ -@$(RM) *.a *.so $(V4L2WRAPPER_OBJ)
|
||||
|
||||
install:
|
||||
mkdir -p $(PREFIX)/include/libv4l2cpp/
|
||||
install -D -m 0755 inc/*.h $(PREFIX)/include/libv4l2cpp/
|
||||
install -D -m 0755 *.a $(PREFIX)/lib
|
||||
-
|
||||
+ install -D -m 0755 *.so $(PREFIX)/lib
|
4
package/v4l2cpp/Config.in
Normal file
4
package/v4l2cpp/Config.in
Normal file
@ -0,0 +1,4 @@
|
||||
config BR2_PACKAGE_V4L2CPP
|
||||
bool "v4l2cpp"
|
||||
help
|
||||
Build the V4L2 C++ Wrapper for target use.
|
36
package/v4l2cpp/v4l2cpp.mk
Normal file
36
package/v4l2cpp/v4l2cpp.mk
Normal file
@ -0,0 +1,36 @@
|
||||
#############################################################
|
||||
#
|
||||
# v4l2cpp
|
||||
#
|
||||
#############################################################
|
||||
|
||||
V4L2CPP_VERSION=021d887dc531bcf74c766cb413f87e8fc92579e3
|
||||
V4L2CPP_SITE = https://github.com/jasaw/libv4l2cpp.git
|
||||
V4L2CPP_SITE_METHOD = git
|
||||
V4L2CPP_LICENSE = UNLICENSE
|
||||
V4L2CPP_LICENSE_FILES = LICENSE
|
||||
V4L2CPP_CFLAGS = $(TARGET_CFLAGS)
|
||||
|
||||
ifeq ($(BR2_STATIC_LIBS),y)
|
||||
V4L2CPP_CONFIG_TARGET = linux
|
||||
V4L2CPP_LIBRARY_LINK = $(TARGET_AR) cr
|
||||
else
|
||||
V4L2CPP_CONFIG_TARGET = linux-with-shared-libraries
|
||||
V4L2CPP_LIBRARY_LINK = $(TARGET_CC) -o
|
||||
V4L2CPP_CFLAGS += -fPIC
|
||||
endif
|
||||
|
||||
ifndef ($(BR2_ENABLE_LOCALE),y)
|
||||
V4L2CPP_CFLAGS += -DLOCALE_NOT_USED
|
||||
endif
|
||||
|
||||
define V4L2CPP_BUILD_CMDS
|
||||
$(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" CXX="$(TARGET_CXX)" AR="$(TARGET_AR)" EXTRA_CXXFLAGS="$(V4L2CPP_CFLAGS)" -C $(@D) all
|
||||
endef
|
||||
|
||||
define V4L2CPP_INSTALL_TARGET_CMDS
|
||||
$(TARGET_MAKE_ENV) $(MAKE) PREFIX="$(STAGING_DIR)/usr" -C $(@D) install
|
||||
$(INSTALL) -D -m 0755 $(@D)/libv4l2wrapper.so $(TARGET_DIR)/usr/lib
|
||||
endef
|
||||
|
||||
$(eval $(generic-package))
|
59
package/v4l2rtspserver/0001-use-custom-makefile.patch
Normal file
59
package/v4l2rtspserver/0001-use-custom-makefile.patch
Normal file
@ -0,0 +1,59 @@
|
||||
diff --git a/Makefile b/Makefile
|
||||
index e69de29..fb3f2bf 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -0,0 +1,54 @@
|
||||
+ifneq ($(SRC),)
|
||||
+VPATH=$(SRC)
|
||||
+endif
|
||||
+
|
||||
+ALL_PROGS = v4l2rtspserver
|
||||
+PREFIX?=/usr
|
||||
+DESTDIR?=$(PREFIX)/bin
|
||||
+CC?=$(CROSS)gcc
|
||||
+CXX?=$(CROSS)g++
|
||||
+CXXFLAGS += -I$(SRC) -W -Wall -std=c++11 -g -O3 -D_POSIX_C_SOURCE=2
|
||||
+CXXFLAGS += -Iinc -I$(PREFIX)/include -I$(PREFIX)/include/BasicUsageEnvironment -I$(PREFIX)/include/UsageEnvironment -I$(PREFIX)/include/liveMedia -I$(PREFIX)/include/groupsock
|
||||
+CXXFLAGS += $(EXTRA_CXXFLAGS)
|
||||
+LDFLAGS += -pthread -L$(PREFIX)/lib -lBasicUsageEnvironment -lUsageEnvironment -lliveMedia -lgroupsock -lv4l2wrapper
|
||||
+RM = rm -rf
|
||||
+
|
||||
+RTSPSERVER_OBJS = \
|
||||
+ src/DeviceSource.o \
|
||||
+ src/H264_V4l2DeviceSource.o \
|
||||
+ src/HTTPServer.o \
|
||||
+ src/main.o \
|
||||
+ src/MemoryBufferSink.o \
|
||||
+ src/MJPEGVideoSource.o \
|
||||
+ src/MulticastServerMediaSubsession.o \
|
||||
+ src/ServerMediaSubsession.o \
|
||||
+ src/TSServerMediaSubsession.o \
|
||||
+ src/UnicastServerMediaSubsession.o \
|
||||
+
|
||||
+
|
||||
+# v4l2wrapper
|
||||
+CXXFLAGS += -I$(PREFIX)/include/libv4l2cpp
|
||||
+
|
||||
+# ALSA
|
||||
+ifneq ($(HAVE_ALSA),)
|
||||
+CXXFLAGS += -DHAVE_ALSA
|
||||
+RTSPSERVER_OBJS += src/ALSACapture.o
|
||||
+LDFLAGS += -lasound
|
||||
+endif
|
||||
+
|
||||
+
|
||||
+.DEFAULT_GOAL := all
|
||||
+
|
||||
+all: $(ALL_PROGS)
|
||||
+
|
||||
+v4l2rtspserver: $(RTSPSERVER_OBJS)
|
||||
+ $(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)
|
||||
+
|
||||
+src/%.o : src/%.cpp
|
||||
+ $(CXX) $(CXXFLAGS) -c $< -o $@
|
||||
+
|
||||
+clean:
|
||||
+ $(RM) src/*.o v4l2rtspserver
|
||||
+
|
||||
+install: v4l2rtspserver
|
||||
+ install -D -m 0777 v4l2rtspserver $(DESTDIR)
|
91
package/v4l2rtspserver/0001-use-system-v4l2wrapper.patch.bak
Normal file
91
package/v4l2rtspserver/0001-use-system-v4l2wrapper.patch.bak
Normal file
@ -0,0 +1,91 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 7cf9f3c..3f967b3 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -1,5 +1,7 @@
|
||||
cmake_minimum_required(VERSION 3.0)
|
||||
|
||||
+set(CMAKE_VERBOSE_MAKEFILE ON)
|
||||
+
|
||||
project(v4l2rtspserver)
|
||||
|
||||
option(COVERAGE "Coverage" OFF)
|
||||
@@ -39,7 +41,7 @@ message(STATUS "CMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}")
|
||||
|
||||
#pthread
|
||||
find_package (Threads)
|
||||
-target_link_libraries (${PROJECT_NAME} ${CMAKE_THREAD_LIBS_INIT})
|
||||
+target_link_libraries (${PROJECT_NAME} ${CMAKE_THREAD_LIBS_INIT})
|
||||
|
||||
#ALSA
|
||||
if (ALSA)
|
||||
@@ -47,9 +49,9 @@ find_package(ALSA QUIET)
|
||||
if (ALSA_LIBRARY)
|
||||
message(STATUS "Alsa available")
|
||||
add_definitions(-DHAVE_ALSA)
|
||||
- target_link_libraries (${PROJECT_NAME} ${ALSA_LIBRARY})
|
||||
-
|
||||
- SET(CPACK_DEBIAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_PACKAGE_DEPENDS}libasound2-dev,)
|
||||
+ target_link_libraries (${PROJECT_NAME} ${ALSA_LIBRARY})
|
||||
+
|
||||
+ SET(CPACK_DEBIAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_PACKAGE_DEPENDS}libasound2-dev,)
|
||||
endif (ALSA_LIBRARY)
|
||||
endif()
|
||||
|
||||
@@ -59,16 +61,25 @@ if (LOG4CPP_LIBRARY)
|
||||
message(STATUS "Log4Cpp available")
|
||||
add_definitions(-DHAVE_LOG4CPP)
|
||||
target_link_libraries(${PROJECT_NAME} "${LOG4CPP_LIBRARY}")
|
||||
-
|
||||
+
|
||||
SET(CPACK_DEBIAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_PACKAGE_DEPENDS}liblog4cpp5-dev,)
|
||||
endif ()
|
||||
|
||||
# v4l2wrapper
|
||||
-EXEC_PROGRAM("git submodule update --init")
|
||||
-aux_source_directory(v4l2wrapper/src LIBSRC_FILES)
|
||||
-include_directories("v4l2wrapper/inc")
|
||||
-add_library(v4l2wrapper STATIC ${LIBSRC_FILES})
|
||||
-target_link_libraries (${PROJECT_NAME} v4l2wrapper)
|
||||
+#set(V4L2WRAPPER_LIBRARY ${CMAKE_SOURCE_DIR}/libv4l2wrapper.a)
|
||||
+target_link_libraries(${PROJECT_NAME} ${CMAKE_SOURCE_DIR}/libv4l2wrapper.a)
|
||||
+#find_library(V4L2WRAPPER_LIBRARY v4l2wrapper REQUIRED)
|
||||
+#find_package(v4l2cpp REQUIRED)
|
||||
+#if (V4L2CPP_LIBRARY)
|
||||
+# message(STATUS "v4l2wrapper available")
|
||||
+# target_link_libraries(${PROJECT_NAME} "${V4L2CPP_LIBRARY}")
|
||||
+#endif ()
|
||||
+
|
||||
+# EXEC_PROGRAM("git submodule update --init")
|
||||
+# aux_source_directory(v4l2wrapper/src LIBSRC_FILES)
|
||||
+# include_directories("v4l2wrapper/inc")
|
||||
+# add_library(v4l2wrapper STATIC ${LIBSRC_FILES})
|
||||
+# target_link_libraries (${PROJECT_NAME} v4l2wrapper)
|
||||
|
||||
# live555
|
||||
set(LIVE ${CMAKE_BINARY_DIR}/live)
|
||||
@@ -97,7 +108,7 @@ if (SYSTEMD_FOUND)
|
||||
execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=systemdsystemunitdir systemd OUTPUT_VARIABLE SYSTEMD_SERVICES_INSTALL_DIR)
|
||||
string(REGEX REPLACE "[ \t\n]+" "" SYSTEMD_SERVICES_INSTALL_DIR "${SYSTEMD_SERVICES_INSTALL_DIR}")
|
||||
message(STATUS "SystemD directory '${SYSTEMD_SERVICES_INSTALL_DIR}'")
|
||||
-
|
||||
+
|
||||
configure_file(v4l2rtspserver.service.in ${CMAKE_CURRENT_BINARY_DIR}/v4l2rtspserver.service @ONLY)
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/v4l2rtspserver.service DESTINATION ${SYSTEMD_SERVICES_INSTALL_DIR})
|
||||
endif (SYSTEMD_FOUND)
|
||||
@@ -108,8 +119,8 @@ install (FILES index.html DESTINATION share/${PROJECT_NAME}/)
|
||||
install (FILES hls.js/dist/hls.light.min.js DESTINATION share/${PROJECT_NAME}/hls.js/dist/)
|
||||
|
||||
SET(CPACK_GENERATOR "DEB")
|
||||
-SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "Michel Promonet")
|
||||
-SET(CPACK_PACKAGE_CONTACT "michel.promonet@free.fr")
|
||||
+SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "Michel Promonet")
|
||||
+SET(CPACK_PACKAGE_CONTACT "michel.promonet@free.fr")
|
||||
SET(CPACK_SYSTEM_NAME ${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR})
|
||||
STRING(REGEX REPLACE ",$" "" CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}")
|
||||
SET(CPACK_PACKAGING_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
|
||||
@@ -117,4 +128,3 @@ if(VERSION)
|
||||
SET(CPACK_PACKAGE_VERSION "${VERSION}")
|
||||
endif()
|
||||
INCLUDE(CPack)
|
||||
-
|
6
package/v4l2rtspserver/Config.in
Normal file
6
package/v4l2rtspserver/Config.in
Normal file
@ -0,0 +1,6 @@
|
||||
config BR2_PACKAGE_V4L2RTSPSERVER
|
||||
bool "v4l2rtspserver"
|
||||
select BR2_PACKAGE_V4L2CPP
|
||||
select BR2_PACKAGE_LIVE555
|
||||
help
|
||||
Provides a streaming RTSP server for the target.
|
32
package/v4l2rtspserver/v4l2rtspserver.mk
Normal file
32
package/v4l2rtspserver/v4l2rtspserver.mk
Normal file
@ -0,0 +1,32 @@
|
||||
#############################################################
|
||||
#
|
||||
# v4l2rtspserver
|
||||
#
|
||||
#############################################################
|
||||
|
||||
V4L2RTSPSERVER_VERSION = 13e27dc78f2ed6bc5d43fd6eb759041d8e0b4a66
|
||||
V4L2RTSPSERVER_SITE = https://github.com/mpromonet/v4l2rtspserver.git
|
||||
V4L2RTSPSERVER_SITE_METHOD = git
|
||||
V4L2RTSPSERVER_LICENSE = UNLICENSE
|
||||
V4L2RTSPSERVER_LICENSE_FILES = LICENSE
|
||||
V4L2RTSPSERVER_INSTALL_TARGET = YES
|
||||
V4L2RTSPSERVER_DEPENDENCIES = live555 v4l2cpp
|
||||
V4L2RTSPSERVER_CFLAGS = $(TARGET_CFLAGS) -DVERSION=1
|
||||
|
||||
ifndef ($(BR2_ENABLE_LOCALE),y)
|
||||
V4L2RTSPSERVER_CFLAGS += -DLOCALE_NOT_USED
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_ALSA_LIB),y)
|
||||
V4L2RTSPSERVER_OPTS += "HAVE_ALSA=1"
|
||||
endif
|
||||
|
||||
define V4L2RTSPSERVER_BUILD_CMDS
|
||||
$(TARGET_MAKE_ENV) $(MAKE) CC="$(TARGET_CC)" CXX="$(TARGET_CXX)" EXTRA_CXXFLAGS="$(V4L2RTSPSERVER_CFLAGS)" PREFIX="$(STAGING_DIR)/usr" $(V4L2RTSPSERVER_OPTS) -C $(@D) all
|
||||
endef
|
||||
|
||||
define V4L2RTSPSERVER_INSTALL_TARGET_CMDS
|
||||
$(TARGET_MAKE_ENV) $(MAKE) DESTDIR="$(TARGET_DIR)/usr/bin" -C $(@D) install
|
||||
endef
|
||||
|
||||
$(eval $(generic-package))
|
153
package/v4l2tools/02-enable-cross-compile.patch
Normal file
153
package/v4l2tools/02-enable-cross-compile.patch
Normal file
@ -0,0 +1,153 @@
|
||||
diff --git a/Makefile b/Makefile
|
||||
index e69de29..f337374 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -0,0 +1,148 @@
|
||||
+ALL_PROGS = v4l2copy v4l2source_yuv
|
||||
+PREFIX?=/usr
|
||||
+DESTDIR?=$(PREFIX)/bin
|
||||
+CC?=$(CROSS)gcc
|
||||
+CXX?=$(CROSS)g++
|
||||
+CXXFLAGS += -W -Wall -g -O3 -D_POSIX_C_SOURCE=2
|
||||
+CXXFLAGS += -Iinclude -I$(PREFIX)/include -I$(PREFIX)/include/libv4l2cpp
|
||||
+CXXFLAGS += $(EXTRA_CXXFLAGS)
|
||||
+LDFLAGS += -pthread -L$(PREFIX)/lib -lv4l2wrapper
|
||||
+
|
||||
+.DEFAULT_GOAL := all
|
||||
+
|
||||
+# raspberry tools
|
||||
+ifneq ($(HAVE_RPI_IL),)
|
||||
+ILCFLAGS = $(CXXFLAGS)
|
||||
+ILCFLAGS += -DOMX_SKIP64BIT
|
||||
+ILLDFLAGS = $(LDFLAGS) -lpthread -lopenmaxil -lbcm_host -lvcos -lvchostif -lvchiq_arm -lilclient
|
||||
+
|
||||
+v4l2compress_omx: src/encode_omx.cpp src/v4l2compress_omx.cpp
|
||||
+ $(CXX) -o $@ $^ -DHAVE_LIBBCM_HOST -DUSE_EXTERNAL_LIBBCM_HOST -DUSE_VCHIQ_ARM -Wno-psabi $(ILCFLAGS) $(ILLDFLAGS)
|
||||
+
|
||||
+v4l2grab_h264: src/encode_omx.cpp src/v4l2grab_h264.cpp
|
||||
+ $(CXX) -o $@ $^ -DHAVE_LIBBCM_HOST -DUSE_EXTERNAL_LIBBCM_HOST -DUSE_VCHIQ_ARM -Wno-psabi $(ILCFLAGS) $(ILLDFLAGS)
|
||||
+
|
||||
+v4l2display_h264: src/v4l2display_h264.cpp
|
||||
+ $(CXX) -o $@ $^ -DHAVE_LIBBCM_HOST -DUSE_EXTERNAL_LIBBCM_HOST -DUSE_VCHIQ_ARM -Wno-psabi $(ILCFLAGS) $(ILLDFLAGS)
|
||||
+
|
||||
+
|
||||
+ALL_PROGS+=v4l2grab_h264
|
||||
+ALL_PROGS+=v4l2display_h264
|
||||
+ALL_PROGS+=v4l2compress_omx
|
||||
+endif
|
||||
+
|
||||
+ifneq ($(HAVE_RPI),)
|
||||
+MMALCAM_CFLAGS = $(CXXFLAGS)
|
||||
+MMALCAM_LDFLAGS = $(LDFLAGS) -L/opt/vc/lib -lmmal -lmmal_core -lmmal_util -lpthread -lbcm_host -lvcos -lvchostif -lvchiq_arm
|
||||
+RASPICAM_CFLAGS = $(CFLAGS) -Isrc/raspicam -I/opt/vc/include
|
||||
+RASPICAM_OBJS = \
|
||||
+ src/raspicam/RaspiCamControl.o \
|
||||
+ src/raspicam/RaspiCLI.o \
|
||||
+ src/raspicam/RaspiCommonSettings.o \
|
||||
+ src/raspicam/RaspiHelpers.o \
|
||||
+ src/raspicam/RaspiPreview.o
|
||||
+
|
||||
+v4l2multi_stream_mmal: src/v4l2multi_stream_mmal.cpp $(RASPICAM_OBJS)
|
||||
+ $(CXX) -o $@ $^ -DHAVE_LIBBCM_HOST -DUSE_EXTERNAL_LIBBCM_HOST -DUSE_VCHIQ_ARM -Wno-psabi $(MMALCAM_CFLAGS) $(RASPICAM_CFLAGS) $(MMALCAM_LDFLAGS)
|
||||
+
|
||||
+src/raspicam/%.o : src/raspicam/%.c
|
||||
+ $(CC) -DHAVE_LIBBCM_HOST -DUSE_EXTERNAL_LIBBCM_HOST -DUSE_VCHIQ_ARM -Wno-psabi $(RASPICAM_CFLAGS) -c $< -o $@
|
||||
+
|
||||
+ALL_PROGS+=v4l2multi_stream_mmal
|
||||
+
|
||||
+endif
|
||||
+
|
||||
+# libyuv
|
||||
+ifneq ($(HAVE_LIBYUV),)
|
||||
+ALL_PROGS+=v4l2convert_yuv
|
||||
+
|
||||
+# libh264bitstream & libhevcbitstream
|
||||
+ifneq ($(HAVE_H264BITSTREAM),)
|
||||
+ifneq ($(HAVE_HEVCBITSTREAM),)
|
||||
+ALL_PROGS+=v4l2dump
|
||||
+endif
|
||||
+endif
|
||||
+
|
||||
+# libh264bitstream
|
||||
+ifneq ($(HAVE_H264BITSTREAM),)
|
||||
+ALL_PROGS+=v4l2compress_h264
|
||||
+endif
|
||||
+
|
||||
+# libhevcbitstream
|
||||
+ifneq ($(HAVE_HEVCBITSTREAM),)
|
||||
+ALL_PROGS+=v4l2compress_x265
|
||||
+endif
|
||||
+
|
||||
+# libvpx
|
||||
+ifneq ($(HAVE_LIBVPX),)
|
||||
+ALL_PROGS+=v4l2compress_vpx
|
||||
+endif
|
||||
+
|
||||
+# libjpeg
|
||||
+ifneq ($(HAVE_LIBJPEG),)
|
||||
+ALL_PROGS+=v4l2compress_jpeg v4l2uncompress_jpeg
|
||||
+CFLAGS += -DHAVE_JPEG
|
||||
+endif
|
||||
+
|
||||
+endif
|
||||
+
|
||||
+# libfuse
|
||||
+ifneq ($(HAVE_LIBFUSE),)
|
||||
+ALL_PROGS+=v4l2fuse
|
||||
+endif
|
||||
+
|
||||
+all: $(ALL_PROGS)
|
||||
+
|
||||
+# read V4L2 capture -> write V4L2 output
|
||||
+v4l2copy: src/v4l2copy.cpp
|
||||
+ $(CXX) -o $@ $(CXXFLAGS) $^ $(LDFLAGS)
|
||||
+
|
||||
+# read V4L2 capture -> convert YUV format -> write V4L2 output
|
||||
+v4l2convert_yuv: src/v4l2convert_yuv.cpp
|
||||
+ $(CXX) -o $@ $(CXXFLAGS) -I$(PREFIX)/include/libyuv $^ $(LDFLAGS) -lyuv -ljpeg
|
||||
+
|
||||
+# -> write V4L2 output
|
||||
+v4l2source_yuv: src/v4l2source_yuv.cpp
|
||||
+ $(CXX) -o $@ $(CXXFLAGS) $^ $(LDFLAGS)
|
||||
+
|
||||
+# read V4L2 capture -> compress using libvpx -> write V4L2 output
|
||||
+v4l2compress_vpx: src/v4l2compress_vpx.cpp
|
||||
+ $(CXX) -o $@ $(CXXFLAGS) -I$(PREFIX)/include/libyuv $^ $(LDFLAGS) -lvpx -lyuv -ljpeg
|
||||
+
|
||||
+# read V4L2 capture -> compress using x264 -> write V4L2 output
|
||||
+v4l2compress_h264: src/v4l2compress_h264.cpp
|
||||
+ $(CXX) -o $@ $(CXXFLAGS) -I$(PREFIX)/include/libyuv $^ $(LDFLAGS) -lh264bitstream -lyuv -ljpeg
|
||||
+
|
||||
+# read V4L2 capture -> compress using x265 -> write V4L2 output
|
||||
+v4l2compress_x265: src/v4l2compress_x265.cpp
|
||||
+ $(CXX) -o $@ $(CXXFLAGS) -I$(PREFIX)/include/libyuv $^ $(LDFLAGS) -lhevcbitstream -lyuv -ljpeg
|
||||
+
|
||||
+# read V4L2 capture -> compress using libjpeg -> write V4L2 output
|
||||
+v4l2compress_jpeg: src/v4l2compress_jpeg.cpp
|
||||
+ $(CXX) -o $@ $(CXXFLAGS) -I$(PREFIX)/include/libyuv $^ $(LDFLAGS) -lyuv -ljpeg
|
||||
+
|
||||
+# read V4L2 capture -> uncompress using libjpeg -> write V4L2 output
|
||||
+v4l2uncompress_jpeg: src/v4l2uncompress_jpeg.cpp
|
||||
+ $(CXX) -o $@ $(CXXFLAGS) -I$(PREFIX)/include/libyuv $^ $(LDFLAGS) -lyuv -ljpeg
|
||||
+
|
||||
+# try with opencv
|
||||
+v4l2detect_yuv: src/v4l2detect_yuv.cpp
|
||||
+ $(CXX) -o $@ $(CXXFLAGS) -I$(PREFIX)/include/libyuv $^ $(LDFLAGS) -lopencv_core -lopencv_objdetect -lopencv_imgproc -lyuv -ljpeg
|
||||
+
|
||||
+# dump
|
||||
+v4l2dump: src/v4l2dump.cpp
|
||||
+ $(CXX) -o $@ $(CXXFLAGS) -I$(PREFIX)/include/h264bitstream -I$(PREFIX)/include/hevcbitstream -I$(PREFIX)/include/libyuv $^ $(LDFLAGS) -lh264bitstream -lhevcbitstream -lyuv -ljpeg
|
||||
+
|
||||
+v4l2fuse: src/v4l2fuse.c
|
||||
+ $(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS) -D_FILE_OFFSET_BITS=64 -lfuse
|
||||
+
|
||||
+
|
||||
+upgrade:
|
||||
+ git submodule foreach git pull origin master
|
||||
+
|
||||
+install: all
|
||||
+ mkdir -p $(DESTDIR)/bin
|
||||
+ install -D -m 0755 $(ALL_PROGS) $(DESTDIR)/bin
|
||||
+
|
||||
+clean:
|
||||
+ -@$(RM) $(ALL_PROGS) .*o *.a src/raspicam/.*o
|
8
package/v4l2tools/Config.in
Normal file
8
package/v4l2tools/Config.in
Normal file
@ -0,0 +1,8 @@
|
||||
config BR2_PACKAGE_V4L2TOOLS
|
||||
bool "v4l2tools"
|
||||
select BR2_PACKAGE_V4L2CPP
|
||||
select BR2_PACKAGE_JPEG
|
||||
select BR2_PACKAGE_LIBFUSE
|
||||
help
|
||||
Build the V4L2 tools based on libv4l2cpp.
|
||||
Optional dependencies: libvpx, x264, x265.
|
88
package/v4l2tools/v4l2tools.mk
Normal file
88
package/v4l2tools/v4l2tools.mk
Normal file
@ -0,0 +1,88 @@
|
||||
#############################################################
|
||||
#
|
||||
# v4l2tools
|
||||
#
|
||||
#############################################################
|
||||
|
||||
V4L2TOOLS_VERSION = 794afdb
|
||||
V4L2TOOLS_SITE = https://github.com/jasaw/v4l2tools.git
|
||||
V4L2TOOLS_SITE_METHOD = git
|
||||
V4L2TOOLS_LICENSE = UNLICENSE
|
||||
V4L2TOOLS_LICENSE_FILES = LICENSE
|
||||
V4L2TOOLS_INSTALL_TARGET = YES
|
||||
V4L2TOOLS_DEPENDENCIES = v4l2cpp
|
||||
V4L2TOOLS_CFLAGS = $(TARGET_CFLAGS)
|
||||
|
||||
define V4L2TOOLS_REMOVE_MAKEFILE
|
||||
rm -f $(BUILD_DIR)/v4l2tools-$(V4L2TOOLS_VERSION)/Makefile
|
||||
endef
|
||||
|
||||
V4L2TOOLS_PRE_PATCH_HOOKS += V4L2TOOLS_REMOVE_MAKEFILE
|
||||
|
||||
ifeq ($(BR2_PACKAGE_RPI_USERLAND),y)
|
||||
V4L2TOOLS_DEPENDENCIES += rpi-userland
|
||||
V4L2TOOLS_MAKE_OPTS += HAVE_RPI=1
|
||||
ifeq ($(BR2_PACKAGE_RPI_USERLAND_HELLO),y)
|
||||
V4L2TOOLS_MAKE_OPTS += HAVE_RPI_IL=1
|
||||
V4L2TOOLS_CFLAGS += -I$(STAGING_DIR)/usr/src/hello_pi/libs/ilclient
|
||||
endif
|
||||
endif # BR2_PACKAGE_RPI_USERLAND
|
||||
|
||||
ifeq ($(BR2_PACKAGE_LIBYUV),y)
|
||||
V4L2TOOLS_DEPENDENCIES += libyuv
|
||||
V4L2TOOLS_MAKE_OPTS += HAVE_LIBYUV=1
|
||||
|
||||
ifeq ($(BR2_PACKAGE_H264BITSTREAM),y)
|
||||
# TODO: pull in h264bitstream from https://github.com/aizvorski/h264bitstream
|
||||
#V4L2TOOLS_DEPENDENCIES += h264bitstream
|
||||
#V4L2TOOLS_MAKE_OPTS += HAVE_H264BITSTREAM=1
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_HEVCBITSTREAM),y)
|
||||
# TODO: pull in hevcbitstream from https://github.com/leslie-wang/hevcbitstream
|
||||
#V4L2TOOLS_DEPENDENCIES += hevcbitstream
|
||||
#V4L2TOOLS_MAKE_OPTS += HAVE_HEVCBITSTREAM=1
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_LIBVPX),y)
|
||||
V4L2TOOLS_DEPENDENCIES += libvpx
|
||||
V4L2TOOLS_MAKE_OPTS += HAVE_LIBVPX=1
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_JPEG),y)
|
||||
V4L2TOOLS_DEPENDENCIES += jpeg
|
||||
V4L2TOOLS_MAKE_OPTS += HAVE_LIBJPEG=1
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_LIBFUSE),y)
|
||||
V4L2TOOLS_DEPENDENCIES += libfuse
|
||||
V4L2TOOLS_MAKE_OPTS += HAVE_LIBFUSE=1
|
||||
endif
|
||||
|
||||
ifndef ($(BR2_ENABLE_LOCALE),y)
|
||||
V4L2TOOLS_CFLAGS += -DLOCALE_NOT_USED
|
||||
endif
|
||||
|
||||
define V4L2TOOLS_BUILD_CMDS
|
||||
$(TARGET_MAKE_ENV) CC="$(TARGET_CC)" CXX="$(TARGET_CXX)" AR="$(TARGET_AR)" CFLAGS_EXTRA="$(V4L2TOOLS_CFLAGS)" LDFLAGS="$(TARGET_LDFLAGS)" ARFLAGS="$(TARGET_ARFLAGS)" PREFIX="$(STAGING_DIR)/usr" $(V4L2TOOLS_MAKE_OPTS) $(MAKE) -C $(@D) all
|
||||
endef
|
||||
|
||||
define V4L2TOOLS_INSTALL_TARGET_CMDS
|
||||
$(INSTALL) -D -m 0755 $(@D)/v4l2copy $(TARGET_DIR)/usr/sbin
|
||||
$(INSTALL) -D -m 0755 $(@D)/v4l2source_yuv $(TARGET_DIR)/usr/sbin
|
||||
$(if $(BR2_PACKAGE_RPI_USERLAND_HELLO), $(INSTALL) -D -m 0755 $(@D)/v4l2grab_h264 $(TARGET_DIR)/usr/sbin )
|
||||
$(if $(BR2_PACKAGE_RPI_USERLAND_HELLO), $(INSTALL) -D -m 0755 $(@D)/v4l2display_h264 $(TARGET_DIR)/usr/sbin )
|
||||
$(if $(BR2_PACKAGE_RPI_USERLAND_HELLO), $(INSTALL) -D -m 0755 $(@D)/v4l2compress_omx $(TARGET_DIR)/usr/sbin )
|
||||
$(if $(BR2_PACKAGE_RPI_USERLAND), $(INSTALL) -D -m 0755 $(@D)/v4l2multi_stream_mmal $(TARGET_DIR)/usr/sbin )
|
||||
$(if $(BR2_PACKAGE_LIBYUV), $(INSTALL) -D -m 0755 $(@D)/v4l2convert_yuv $(TARGET_DIR)/usr/sbin )
|
||||
$(if $(and $(BR2_PACKAGE_LIBYUV),$(BR2_PACKAGE_H264BITSTREAM)), $(INSTALL) -D -m 0755 $(@D)/v4l2compress_h264 $(TARGET_DIR)/usr/sbin )
|
||||
$(if $(and $(BR2_PACKAGE_LIBYUV),$(BR2_PACKAGE_HEVCBITSTREAM)), $(INSTALL) -D -m 0755 $(@D)/v4l2compress_x265 $(TARGET_DIR)/usr/sbin )
|
||||
$(if $(and $(BR2_PACKAGE_LIBYUV),$(BR2_PACKAGE_H264BITSTREAM),$(BR2_PACKAGE_HEVCBITSTREAM)), $(INSTALL) -D -m 0755 $(@D)/v4l2dump $(TARGET_DIR)/usr/sbin )
|
||||
$(if $(and $(BR2_PACKAGE_LIBYUV),$(BR2_PACKAGE_VPX)), $(INSTALL) -D -m 0755 $(@D)/v4l2compress_vpx $(TARGET_DIR)/usr/sbin )
|
||||
$(if $(and $(BR2_PACKAGE_LIBYUV),$(BR2_PACKAGE_JPEG)), $(INSTALL) -D -m 0755 $(@D)/v4l2compress_jpeg $(TARGET_DIR)/usr/sbin )
|
||||
$(if $(and $(BR2_PACKAGE_LIBYUV),$(BR2_PACKAGE_JPEG)), $(INSTALL) -D -m 0755 $(@D)/v4l2uncompress_jpeg $(TARGET_DIR)/usr/sbin )
|
||||
$(if $(BR2_PACKAGE_LIBFUSE), $(INSTALL) -D -m 0755 $(@D)/v4l2fuse $(TARGET_DIR)/usr/sbin )
|
||||
endef
|
||||
|
||||
$(eval $(generic-package))
|
Loading…
x
Reference in New Issue
Block a user