34 Commits

Author SHA1 Message Date
Andrea Bondavalli
3af7dd3d64 Added support for sample rate 88200Hz to the WebUI and the test suite, see #173
Disabled daemon parallel builds in build.sh (option -j)  as this can cause hangs on some platforms
Disabled streamer in daemon configuration used by platform and latency tests
Changed daemon version to 2.0.1
2024-08-19 11:38:30 +02:00
Andrea Bondavalli
466f6b4fc4 First import of HTTP Streamer functionality in the daemon used to receive AES67 audio streams via HTTP file streaming.
The HTTP Streamer can be enabled via the _streamer_enabled_ daemon parameter.
When the Streamer is active the daemon starts capturing the configured _Sinks_ up to the maximum number of channels configured by the _streamer_channels_ parameters.

The captured PCM samples are split into _streamer_files_num_ files of _streamer_file_duration_ duration (in seconds) for each sink, compressed using AAC LC codec and served via HTTP.

The HTTP streamer requires the libfaac-dev package to compile.

Please note that since the HTTP Streamer uses the RAVENNA ALSA device for capturing it's not possible to use such device for other audio captures.
2024-07-06 17:27:49 +02:00
Andrea Bondavalli
45a39a4d2e Fix to avoid crash when option -a is not provided plus cosmetic changes. 2024-03-23 15:07:02 +01:00
Andrea Bondavalli
a41393adaf Updated daemon version to 1.7.0 2024-03-23 14:31:21 +01:00
NISHI, Takao
80cf4efd8d WebUI listening addr can be configured separately from AES67 interface 2024-03-19 16:32:50 +00:00
Andrea Bondavalli
58d97c981c Changed daemon version to v1.6.6 2024-01-21 10:29:40 +01:00
Andrea Bondavalli
98439a23cb Changed daemon version to v1.6.5 2023-09-23 12:55:24 +02:00
Andrea Bondavalli
17fb3d6940 Changed daemon version to v1.6.4 2023-05-20 09:20:22 +02:00
Andrea Bondavalli
a8b833ddc0 Changed daemon version to v1.6.3, updated documentation and restored daemon test parameters 2023-05-13 12:36:40 +02:00
Andrea Bondavalli
a255f31dfd Removed addtional code smells 2023-02-25 23:16:58 +01:00
Andrea Bondavalli
49a42f7ac7 Changed daemon version to 1.6.2 2023-02-25 22:47:01 +01:00
Andrea Bondavalli
f77db79869
Merge pull request #108 from glance-/systemd
Add Systemd integration to aes67-daemon
2023-02-03 13:48:21 +01:00
Anton Lundin
997fb31d0e Use systemd state RELOADING when ip address changed
In systemd when entering state STOPPING, you can't go back to READY.

So, we check if we're supposed to stop or just restart, and tells that
to systemd.
2023-01-25 15:18:16 +01:00
Anton Lundin
a28a6e148f Add Systemd integration to aes67-daemon
This adds integration and especially watchdog support between
aes67-daemon and systemd.

A example service file is also included.
2023-01-20 21:06:54 +01:00
Andrea Bondavalli
f89d8a9693 Changed daemon version to v1.6.1 2023-01-15 14:21:06 +01:00
Andrea Bondavalli
02ccef73c4 Changed daemon version to v1.5.4 2023-01-14 12:12:22 +01:00
Andrea Bondavalli
f826a5b2ef Implementation of automatic Sink updates based on remote source updates received by the Browser.
The daemon uses the most recent version of corresponding remote sources to update a Sync.
The Originator (o=) field of the SDP is used identify the corresponding remote sources.

Many thanks to @Sikabo for the original implementation !
2023-01-14 12:06:55 +01:00
Andrea Bondavalli
38dabd5887 Added support to the daemon for a fake driver version.
This allows daemon execution without the RAVENNA driver for testing purposes and to allow regression tests to run into a Docker container.
2022-11-15 22:00:51 +01:00
Andrea Bondavalli
acb1e55d08 Added RTSP client connection timeout of 5 secs. See issue #91 2022-08-20 11:12:05 +02:00
Andrea Bondavalli
1886317cab Fix to avoid creation of zombie processes by PTP status script, see #85 2022-06-03 08:52:04 +02:00
Andrea Bondavalli
dbb593120a Enhancement of daemon reconfiguration and PTP status update notification via shell script. See #82
The daemon can apply a configuration change to the following parameters without a restart:
    sap_interval, syslog_proto, syslog_server, log_severity, sample_rate

The daemon can apply a configuration change to the following parameters without a light restart:
    http_port, rtsp_port, http_base_dir, rtp_mcast_base, sap_mcast_addr, rtp_port, rtp_port, status_file, interface_name, mdns_enabled

A light restart means that the configuration can be applied without interrupting the playback/capture applications

A change to one of following paramters causes a full daemon restart:
    interface_name, tic_frame_size_at_1fs, max_tic_frame_size

On PTP status change the daemon can run in background an external shell script whose path name is specified by the new ptp_status_script Config parameter.
If this parameter is empty, no script is invoked. The PTP clock status is passed as first parameter to the script and it can be unlocked, locking or locked.
A sample script is provided in daemon/scripts/ptp_status.sh
2022-05-19 19:04:26 +02:00
Andrea Bondavalli
a0b15bfae2 changed daemon version to bondagit-1.4 2021-12-30 10:28:34 +01:00
Andrea Bondavalli
7ed2ad492c Added more DSCP values for Audio Source and PTP in WebUI. See #40. 2021-11-09 16:34:59 +01:00
Andrea Bondavalli
b2a582a14a Fix for #51: added inclusion of map header to rtsp_client.hpp 2021-10-05 19:19:41 +02:00
Andrea Bondavalli
4381260ffa Updated daemon version to 1.3 2021-09-30 19:08:32 +02:00
Andrea Bondavalli
1af74dcbf0 Added support for unicast RTP stream address to daemon and WebUI, see #30
- 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
2021-03-04 18:31:34 +01:00
Andrea Bondavalli
399e22216a - added command line option -v to daemon to return current version
- 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
2021-02-25 18:00:01 +01:00
Andrea Bondavalli
9062a82033 - modified daemon code to support startup in case the specified network interface doesn't have an IP address. In this case the daemon waits for an IP address.
- removed not functional daemon option (-i)
- fixed exception handling in SAP::send() method
2020-06-18 19:49:24 +02:00
Andrea Bondavalli
098cebd056 Applied Clang source code formatting to daemon sources 2020-06-16 21:14:44 +02:00
Andrea Bondavalli
d41b67d006 Set of changes to add support for mDNS sources SDP update via RTSP ANNOUNCE method as described by Ravenna.
- 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
2020-05-28 20:47:38 +02:00
Andrea Bondavalli
0dbfe78a10 - Added support for mDNS/RTSP sources advertisement compatible with Ravenna standard.
- mDNS advertisement for all local Sources is implemented by mdns_server.[cpp,hpp] and based on Linux Avahi.
  - RTSP server implementation supports DESCRIBE method to return SDP of local Sources and supports persistent connection but doesn't provide service updates via UPDATE method.
- Modified RTSP client to browse for _ravenna_session subtype of _rtsp._tcp services only.
- Modified SAP and mDNS discovery to avoid returning local Sources advertised by the daemon.
- Added "rtsp_port" and "node_id" config parameters.
  - rtsp_port is a read/write parameter that contains the port of the RTSP server.
  - node_id is a read only parameter that contains the unique daemon identifier used in mDNS and SAP sources announcements.
- Modified session manager to check that every Source and Sink created by the user has a unique name.
- Modified WebUI to visualize node_id and to visualize and edit rtsp_port parameters in Config tab.
- Extended regression test to verify proper behaviour of mDNS/RTSP sources advertisement and discovery.
- Modified REST API to browse remote sources to allow browsing of SAP, mDNS and all sources via HTTP GET /api/browse/sources/[all|mdns|sap].
- Amended daemon documentation.
2020-04-23 11:45:58 -07:00
Andrea Bondavalli
5deb6c1927 Added to the daemon the support for Multicast DNS (using Linux Avahi) to allow discovery of remote audio sources and of RTSP for SDP transfer.
Added to the WebUI the possibility to directly select a remote source SDP file for a Sink.

New files:
daemon/mdns_client.hpp,cpp -> mDNS client implementation using Avahi client library
daemon/rtsp_client.hpp,cpp -> RTSP client implementation used to transfer SDP file
daemon/utils.cpp -> used for common utility functions
.clang-format -> added clang-format configuration file

Modified files:
daemon/CMakeList.txt -> added support for Avahi and option WITH_AVAHI=[yes/no] to compile the daemon with or without Avahi mDNS support
daemon/config.hpp,cpp -> added configuration option mdns_enabled to enable or disable mDNS discovery at runtime
daemon/json.cpp -> extended JSON config with mdns_enabled option
daemon/browser.hpp,cpp -> added support for mDNS client to the browser
daemon/session_manager.cpp -> added support for RTSP protocol to Source URL field and fixed issue with SDP file parsing
webui/RemoteSources.js -> added visualization of mDNS remote sources
webui/SinkEdit.js -> added the possibility to directly select a remote source SDP file for a Sink
webui/SourceInfo.js -> added visualization of protocol source (SAP, mDNS or local) for a source
ubuntu-packages.sh -> added libavahi-client-dev to the list of required packages
build.sh -> added WITH_AVAHI=yes option when invoking CMake
README.md -> added notes about mDNS support via Avahi
daemon/README.md -> added notes about mDNS support via Avahi, support for RTSP protocol in source and new mdns_enabled config param

Additional minor changes to remaining files.
2020-03-29 19:41:56 +02:00
Andrea Bondavalli
d99bf3ed4a Added SAP browser functionalities to the daemon and the WebUI
- added "sap_mcast_addr" parameter to daemon conguration and WebUI to configure the SAP multicast address used for sending and receiving source announcements
- added REST API to retrieve the remote sources collected by the daemon (GET /api/browse/sources)
- added Browser tab to the WebUI to visualize info on the available remote sources
- added Info function to sources listed in the Sources tab to visualize the associated SDP file
- extended daemon regression tests to test the SAP Browser
2020-03-06 10:58:07 -08:00
Andrea Bondavalli
259e99afbc First import 2020-01-28 20:16:30 +01:00