add v4l2rtspserver v4l2tools v4l2cpp packages

This commit is contained in:
Joo Aun Saw 2019-10-07 00:18:23 +11:00
parent bc1f321a26
commit ef0183373e
12 changed files with 536 additions and 1 deletions

View File

@ -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

View 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)

View 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

View File

@ -0,0 +1,4 @@
config BR2_PACKAGE_V4L2CPP
bool "v4l2cpp"
help
Build the V4L2 C++ Wrapper for target use.

View 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))

View 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)

View 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)
-

View 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.

View 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))

View 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

View 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.

View 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))