fix: ensure that video buffers are empty before closing channels

This commit is contained in:
Charles Hathaway
2024-01-19 00:43:16 -08:00
parent 84eb188ada
commit 1a3f01ae03
11 changed files with 13 additions and 65 deletions
+2
View File
@@ -1,3 +1,5 @@
server.crt
server.key
.vscode
dbuild*
!*/dbuild/DEBIAN/*
BIN
View File
Binary file not shown.
-14
View File
@@ -1,14 +0,0 @@
# Install to /etc/systemd/system/watcher.service
[Unit]
Description=Run watcher
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service
[Service]
Type=exec
ExecStart=/usr/local/bin/watcher --watcher_config /etc/watcher_config.yaml --watcher_name /etc/watcher_name.txt
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
-14
View File
@@ -1,14 +0,0 @@
# Install to /etc/systemd/system/watcher.service
[Unit]
Description=Run watcher
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service
[Service]
Type=exec
ExecStart=/usr/local/bin --watcher_config /etc/watcher.yaml
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
-20
View File
@@ -1,20 +0,0 @@
home: Sunnyvale
name: Office
h264:
binary: "/usr/bin/libcamera-vid"
arguments:
- "-n"
- "-t"
- "0"
- "--codec"
- "h264"
- "--mode"
- "1640:1232"
- "--inline"
- "-o"
- "-"
sensor:
binary: "/usr/bin/python3"
arguments:
- "/usr/local/bin/temperature.py"
sensor_rate_ms: 10000
-17
View File
@@ -1,17 +0,0 @@
import bme280
import smbus2
from time import sleep
port = 1
address = 0x77 # Adafruit BME280 address. Other BME280s may be different
bus = smbus2.SMBus(port)
bme280.load_calibration_params(bus,address)
while True:
bme280_data = bme280.sample(bus,address)
humidity = bme280_data.humidity
pressure = bme280_data.pressure
ambient_temperature = bme280_data.temperature
print(humidity, pressure, ambient_temperature)
sleep(1)
Binary file not shown.
+4
View File
@@ -36,6 +36,10 @@ func New(video *h264video.Video, cfg *config.Config) (*FileWrite, error) {
// Run launches the commands and begins creating data. It will block until Done is called.
func (v *FileWrite) Run() {
if v.cfg.LocalCopy == "" {
// Feature is disabled; close right away
return
}
// Confirm that the target directory is a directory
stat, err := os.Stat(v.cfg.LocalCopy)
log := log.With().Str("directory", v.cfg.LocalCopy).Logger()
+7
View File
@@ -139,6 +139,13 @@ func (v *Video) Join() (<-chan []byte, string, func()) {
v.mu.Lock()
defer v.mu.Unlock()
// Close the channel
close(v.ivfListeners[myID])
// Consume any pending frames
for _ := range v.ivfListeners[myID] {
// do nothing
}
delete(v.ivfListeners, myID)
}
}
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.