camera deploy script and makefile and readme
This commit is contained in:
parent
d7ad154d20
commit
a5e100952c
17
camera_example/Makefile
Normal file
17
camera_example/Makefile
Normal file
@ -0,0 +1,17 @@
|
||||
# Build on the device. Needs:
|
||||
# apt install g++ pkg-config libcamera-dev libevent-dev libjpeg-turbo8-dev
|
||||
# (Raspberry Pi OS Bullseye+; on older releases the turbo package is libjpeg-dev.)
|
||||
|
||||
CXX ?= g++
|
||||
CXXFLAGS ?= -O2 -std=c++17 -pipe -Wall -Wextra
|
||||
PKGS = libcamera libevent libevent_pthreads libturbojpeg
|
||||
|
||||
camera: camera.cpp event_loop.cpp event_loop.hpp
|
||||
$(CXX) $(CXXFLAGS) camera.cpp event_loop.cpp \
|
||||
$(shell pkg-config --cflags --libs $(PKGS)) -lpthread \
|
||||
-o camera
|
||||
|
||||
clean:
|
||||
rm -f camera
|
||||
|
||||
.PHONY: clean
|
||||
27
camera_example/README.md
Normal file
27
camera_example/README.md
Normal file
@ -0,0 +1,27 @@
|
||||
# camera_example
|
||||
|
||||
libcamera viewfinder (XRGB8888) -> libjpeg-turbo -> TCP. One client at a time.
|
||||
|
||||
Wire format: `[uint32 BE jpeg_size][jpeg_bytes]` repeating.
|
||||
|
||||
Knobs are constants at the top of `camera.cpp` (fps, quality, AF mode, lens
|
||||
position, port, resolution).
|
||||
|
||||
## Build on the Pi
|
||||
|
||||
apt install g++ pkg-config libcamera-dev libevent-dev libjpeg-turbo8-dev
|
||||
make
|
||||
|
||||
## Cross-build (x86 -> armv6l) on a Nix host
|
||||
|
||||
nix build
|
||||
|
||||
The resulting binary links against `/nix/store`, so it only runs on a Pi that
|
||||
has those libs available (i.e. nix installed). For a vanilla Pi OS target,
|
||||
use the Makefile on the device, or `./deploy.sh user@host` to rsync+build.
|
||||
|
||||
## Receive
|
||||
|
||||
Any TCP client that reads the framed JPEGs. Quick check:
|
||||
|
||||
nc <pi-ip> 5000 | ffplay -f mjpeg -
|
||||
9
camera_example/deploy.sh
Executable file
9
camera_example/deploy.sh
Executable file
@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env sh
|
||||
# Push sources to the Pi and build there.
|
||||
# usage: ./deploy.sh me@10.91.51.165
|
||||
set -eu
|
||||
host=${1:-me@10.91.51.165}
|
||||
rsync -az --delete --exclude=camera --exclude=result \
|
||||
./ "$host:~/camera_example/"
|
||||
ssh "$host" 'cd ~/camera_example && make -j"$(nproc)"'
|
||||
echo "built at $host:~/camera_example/camera"
|
||||
Loading…
Reference in New Issue
Block a user