Updated daemon documentation with info on the new driver patch to remove unsupported non-interleved access that enables compatibility with JACK audio.
Changed default daemon configuration file to use a TIC frame size of 64 to enable configuring an ALSA period compatible with JACk audio.
Updated daemon version to 1.2.
- added address field to Source struct definition to contain the destination address. If this field is left empty the default multicast address is used.
- if a unicast address is provided when creating a new Source the daemon looks in the ARP cache to retrieve the corresponding MAC address.
If this is not found the daemon tries to connect to echo TCP service of the destination host and looks into the ARP cache up to 3 times and then returns and error.
- added RTP address field in the Source creating form of the WebUI. If this field is left empty the default multicast address is used instead.
- updated documentation and regression test suite
- set current daemon version to bondagit-1.0
- added HTTP API to return current daemon version and updated documentation
- added diplay of current daemon version in WebUI Config page
* daemon:
- do not assume filesystem hierarchy in CMakeLists.txt
- do not replace default CXX compilation flags to avoid breaking
builds with external toolchain (e.g. yocto)
- allow for tests to be enabled/disabled
- allow for cpp-httplib dir to be provided by hand; otherwise search
for it in system locations
- allow for the location of the ravenna alsa lkm to be provided by
hand, otherwise look for it in system locations
The bug was also preventing the daemon from terminating. It was possible to reproduce the problem using the add_remove_check_mdns_browser_update_all regression test.
Session ID is the Node ID plus the source ID.
Session version is the session ID plus an increasing version identifier.
This fixes issue #10 and allows Dante Controller to properly handle the daemon Sources.
This fixes a problem on old Ubuntu distro causing the Node ID to be the same for multiple hosts.
Additional minor changes:
- removed compilation warnings
- some fixes to code indentation
- removed changes to driver/MTAL_LKernelAPI.c in ravenna-alsa-lkm-kernel-v5.patch
- added patch ravenna-alsa-lkm-disable-ptp-checksum.patch to the driver to the disable UDP checksum verification for the incoming PTP packets
- changed build.sh script to use new driver revision and apply the new patch
- added handling of the sink status flag "all_muted" in daemon, WebUI and regression tests
- updated documentation
SessionManager allows the registration of source update observers and delivers via callbacks the above notifications.
RTSP server modified to register to source update notifications and to send updates to clients via ANNOUNCE method.
- added source_check_mdns_browser_update test to verify mDNS update notification for a single source
- added add_remove_check_mdns_browser_update_all test to verify mDNS update notifications for all 64 sources
- additional fixes and minor changes to the test suite
The following changes enable support for RTCP client persistent connections used to receive RTSP server ANNOUNCE messages. These in turn update the remote sources in the Browser.
- added new process static method to RtspClient class to receive and update source SDP files via DESCRIBE and ANNOUNCE methods. This method can handle persistent connections with the RTSP server and triggers an observer callback when a source SDP file is received or updated. A map is used to track all active RTSP clients.
- added new stop and stop_all static methods to RtspClient class respectively to stop a specific RTCP client and to stop all clients.
- modified MDNSClient class to call RtspClient::process method when a new Ravenna service is added and the RtspClient::stop method when a service is removed. The RtspClient::stop_all method is called when the daemon terminates.
- modified Browser class to receive and handle remote RTSP sources SDP file add and change notifications. This class receives the updates via the RtspClient observer callback
- updated documentation
- modified SessionManager class to register and trigger observer callbacks when a new session is added or removed
- moved MDNSServer out of the SessionManager and added instantiation in the daemon main
- MDNSServer instance registers to SessionManager to receive source add & remove events and invokes appropiate Avahi client operation
- RTSPServer instance registers to SessionManager to receive source update events. In case of update It sends RTSP ANNOUNCE (with the new SDP) to the connected RTSP clients that previously requested (via DESCRIBE method) the SDP file for the specific source
- removed disconnetion timeout handling in RTSPServer. RTSPServer connections are now persistent
- fixed handling of Max samples per packet Source parameter in the WebUI and added computation of the real frame duration
- fixed max number of channels configurable for a Sink in the WebUI
- fixed tic_frame_size_at_1fs daemon parameter documentation
- changed daemon default sample_rate parameter to 48000 Hz
- use correct delimiter ('=') and unsigned integer when extracing RTP timestamp offset from mediaclk:direct SDP audio attribute
- use session connection information (c=) when audio specific connection information is missing