Previously, there was no way to detect if WebRTC clients were still
connected to the stream. This lead to the RTC streams being kept
open indefinitely when clients focibly closed the stream. This can
happen with Chrome, Edge, Safari, etc when the tab is closed or on
mobile devices when the screen is locked or browser closed.
This change adds a data channel to the stream and requires users to
respond to ping requests. While sending a frame the ping might be
sent to the client. If clients do not respond to these ping requests before
the timeout duration the stream is closed and the client is removed
from the server. This causes the client to reinitiate the connection.
The timeout defaults to 30 seconds.
The client needs to send `keepAlive: true` as part of webrtc request.
On the received `ping` send back the `pong` over data-channel.
* libcamera: add support for ControlTypePoint
Signed-off-by: Patrick Gehrsitz <mryel00.github@gmail.com>
* libcamera: fix compile error on missing ControlType
This adds a runtime error for missing ControlTypes to fix compilation errors if there are new ControlTypes that are not implemented yet.
Signed-off-by: Patrick Gehrsitz <mryel00.github@gmail.com>
* chore: remove whitespaces
Signed-off-by: Patrick Gehrsitz <mryel00.github@gmail.com>
* libcamera: only use ControlTypePoint for libcamera>=0.3.2
Signed-off-by: Patrick Gehrsitz <mryel00.github@gmail.com>
* fix: add version check to second switch case
Signed-off-by: Patrick Gehrsitz <mryel00.github@gmail.com>
* fix: add version check to libcamera_parse_point
Signed-off-by: Patrick Gehrsitz <mryel00.github@gmail.com>
* Add AeState to stable LIBCAMERA_CONTROL block
Moved AeState from the draft control list to the stable control block for better alignment with finalized controls.
* fix: fix backwards compatibility
Signed-off-by: Patrick Gehrsitz <mryel00.github@gmail.com>
---------
Signed-off-by: Patrick Gehrsitz <mryel00.github@gmail.com>
Co-authored-by: Surion79 <102791900+Surion79@users.noreply.github.com>
* libcamera: add support for ControlTypePoint
Signed-off-by: Patrick Gehrsitz <mryel00.github@gmail.com>
* libcamera: fix compile error on missing ControlType
This adds a runtime error for missing ControlTypes to fix compilation errors if there are new ControlTypes that are not implemented yet.
Signed-off-by: Patrick Gehrsitz <mryel00.github@gmail.com>
* chore: remove whitespaces
Signed-off-by: Patrick Gehrsitz <mryel00.github@gmail.com>
* libcamera: only use ControlTypePoint for libcamera>=0.3.2
Signed-off-by: Patrick Gehrsitz <mryel00.github@gmail.com>
* fix: add version check to second switch case
Signed-off-by: Patrick Gehrsitz <mryel00.github@gmail.com>
* fix: add version check to libcamera_parse_point
Signed-off-by: Patrick Gehrsitz <mryel00.github@gmail.com>
---------
Signed-off-by: Patrick Gehrsitz <mryel00.github@gmail.com>
For libcamera0.2 configuraiton.stride is already set to some incorrect value and configurations->validate() doesn't update it if it's not 0.
For libcamera0.1 it was set to 0. So set it to 0 manually to make sure configurations->validate() computes the correct value.
This fixes 3DO camera not accepting `--camera-options=focus_absolute=100`
and `--camera-options=focus_automatic_continuous=0`, and not properly
configuring the sensor.
The settings are applied twice (if failed) to ignore ordering problems
related to auto-focus and focus-absolute value command line order.
As discussed on Discord a while ago, adding
Breaks/Conflicts/Replaces entries against
camera-streamer (<< 0.2) allows for a smooth
migration from the camera-streamer package
built for OctoPi to camera-streamer-raspi, through
a transitional camera-streamer version 0.2 on
OctoPi's side.
An upgrade of camera-streamer from OctoPrint's
apt repo will pull in an updated transitional
camera-streamer package version 0.2 that depends
on camera-streamer-raspi. For that to install
flawlessly in all cases, it needs to be installed
*before* the camera-streamer-raspi dependency
(as some files between that and the former
camera-streamer package overlap). By
declaring Breaks/Conflicts/Replaces relationships
on camera-streamer-raspi this is ensured.
- control: add `device_option_is_equal`
- libcamera: provide human readable configurable options
- v4l2: include camera control values
- libcamera: store all applied controls
- libcamera: use `device_option_is_equal`