fix: ensure that video buffers are empty before closing channels
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
server.crt
|
server.crt
|
||||||
server.key
|
server.key
|
||||||
.vscode
|
.vscode
|
||||||
|
dbuild*
|
||||||
|
!*/dbuild/DEBIAN/*
|
||||||
BIN
Binary file not shown.
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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.
@@ -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.
|
// Run launches the commands and begins creating data. It will block until Done is called.
|
||||||
func (v *FileWrite) Run() {
|
func (v *FileWrite) Run() {
|
||||||
|
if v.cfg.LocalCopy == "" {
|
||||||
|
// Feature is disabled; close right away
|
||||||
|
return
|
||||||
|
}
|
||||||
// Confirm that the target directory is a directory
|
// Confirm that the target directory is a directory
|
||||||
stat, err := os.Stat(v.cfg.LocalCopy)
|
stat, err := os.Stat(v.cfg.LocalCopy)
|
||||||
log := log.With().Str("directory", v.cfg.LocalCopy).Logger()
|
log := log.With().Str("directory", v.cfg.LocalCopy).Logger()
|
||||||
|
|||||||
@@ -139,6 +139,13 @@ func (v *Video) Join() (<-chan []byte, string, func()) {
|
|||||||
v.mu.Lock()
|
v.mu.Lock()
|
||||||
defer v.mu.Unlock()
|
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)
|
delete(v.ivfListeners, myID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user