Merge pull request #1224 from owntone/rename_owntone2

Main renaming of forked-daapd
This commit is contained in:
ejurgensen 2021-05-01 16:50:27 +02:00 committed by GitHub
commit b63a2e0976
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
52 changed files with 347 additions and 350 deletions

6
.gitignore vendored
View File

@ -29,9 +29,9 @@ missing
stamp-h1
autotools-stamp
build-stamp
forked-daapd.spec
forked-daapd.conf
forked-daapd.service
owntone.spec
owntone.conf
owntone.service
# ignore debian packaging for convenience
debian/

19
AUTHORS
View File

@ -1,12 +1,13 @@
forked-daapd is a fork/rewrite of mt-daapd (Firefly Media Server)
written by Julien BLACHE <jb@jblache.org>.
OwnTone is maintained by:
mt-daapd (Firefly Media Server) was originally written by
Ron Pedde <ron@pedde.com> and a handful of contributors.
Contributors to forked-daapd include:
- Ace Jones <ace.jones1@yahoo.com>
- Dustin King <daking@rescomp.stanford.edu>
- Kai Elwert <elwertk@googlemail.com>
- Espen Jürgensen <espenjurgensen@gmail.com>
- Christian Meffert <christian.meffert@googlemail.com>
Up until version 27.4 it was called forked-daapd.
forked-daapd up until 0.19 was written by Julien BLACHE <jb@jblache.org>. It was
build on mt-daapd (Firefly Media Server), which was originally written by Ron
Pedde <ron@pedde.com> and a handful of contributors.
For a complete list of contributers, please see:
https://github.com/owntone/owntone-server/graphs/contributors

View File

@ -1,15 +1,14 @@
# Installation instructions for forked-daapd
# Installation instructions for OwnTone
This document contains instructions for installing forked-daapd from the git
tree.
This document contains instructions for installing OwnTone from the git tree.
The source for this version of forked-daapd can be found here:
The source for this version of OwnTone can be found here:
[owntone/owntone-server](https://github.com/owntone/owntone-server.git)
## Quick version for Raspbian (Raspberry Pi)
See the instructions here:
[Improved forked-daapd (iTunes server) -
[OwnTone server (iTunes server) -
Raspberry Pi Forums](http://www.raspberrypi.org/phpBB3/viewtopic.php?t=49928)
## Quick version for Debian/Ubuntu users
@ -27,10 +26,10 @@ sudo apt-get install \
libcurl4-openssl-dev
```
Note that forked-daapd will also work with other versions and flavours of
Note that OwnTone will also work with other versions and flavours of
libgcrypt and libcurl, so the above are just suggestions.
While forked-daapd will work with versions of libevent between 2.0.0 and 2.1.3,
While OwnTone will work with versions of libevent between 2.0.0 and 2.1.3,
it is recommended to use 2.1.4+. Otherwise you may not have support for
simultaneous streaming to multiple DAAP clients.
@ -48,7 +47,7 @@ Then run the following (adding configure arguments for optional features):
```bash
git clone https://github.com/owntone/owntone-server.git
cd forked-daapd
cd owntone-server
autoreconf -i
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
make
@ -74,11 +73,11 @@ sudo yum install \
libcurl-devel
```
Clone the forked-daapd repo:
Clone the OwnTone repo:
```bash
git clone https://github.com/owntone/owntone-server.git
cd forked-daapd
cd owntone-server
```
Now you need to install ANTLR3, but you probably can't use the version that
@ -119,7 +118,7 @@ you can still look through it and use it as an installation guide.
## Quick version for macOS (using Homebrew)
This workflow file used for building forked-daapd via Github actions includes
This workflow file used for building OwnTone via Github actions includes
all the steps that you need to execute:
[.github/workflows/macos.yml](.github/workflows/macos.yml)
@ -169,11 +168,11 @@ Optional features require the following additional ports:
Chromecast | `--enable-chromecast` | gnutls protobuf-c
Pulseaudio | `--with-pulseaudio` | pulseaudio
Clone the forked-daapd repo:
Clone the OwnTone repo:
```bash
git clone https://github.com/owntone/owntone-server.git
cd forked-daapd
cd owntone-server
```
Install antlr3 and library using the included script:
@ -195,19 +194,19 @@ sudo make install
Note: if for some reason you've installed the avahi port, you need to
add `--without-avahi` to configure above.
Edit `/usr/local/etc/forked-daapd.conf` and change the `uid` to a nice
Edit `/usr/local/etc/owntone.conf` and change the `uid` to a nice
system daemon (eg: unknown), and run the following:
```bash
sudo mkdir -p /usr/local/var/run
sudo mkdir -p /usr/local/var/log # or change logfile in conf
sudo chown unknown /usr/local/var/cache/forked-daapd # or change conf
sudo chown unknown /usr/local/var/cache/owntone # or change conf
```
Run forked-daapd:
Run OwnTone:
```bash
sudo /usr/local/sbin/forked-daapd
sudo /usr/local/sbin/owntone
```
Verify it's running (you need to <kbd>Ctrl</kbd>+<kbd>C</kbd> to stop
@ -221,7 +220,7 @@ dns-sd -B _daap._tcp
Required tools:
- ANTLR v3 is required to build forked-daapd, along with its C runtime
- ANTLR v3 is required to build OwnTone, along with its C runtime
(libantlr3c). Use a version between 3.1.3 and 3.5 of ANTLR v3 and the
matching C runtime version. Get it from <http://www.antlr3.org/>
- Java runtime: ANTLR is written in Java and as such a JRE is required to
@ -276,7 +275,7 @@ Libraries:
from <https://libwebsockets.org/>
If using binary packages, remember that you need the development packages to
build forked-daapd (usually named -dev or -devel).
build OwnTone (usually named -dev or -devel).
sqlite3 needs to be built with support for the unlock notify API; this isn't
always the case in binary packages, so you may need to rebuild sqlite3 to
@ -284,9 +283,9 @@ enable the unlock notify API (you can check for the presence of the
sqlite3_unlock_notify symbol in the sqlite3 library). Refer to the sqlite3
documentation, look for `SQLITE_ENABLE_UNLOCK_NOTIFY`.
libav (or ffmpeg) is a central piece of forked-daapd and most other FLOSS
libav (or ffmpeg) is a central piece of OwnTone and most other FLOSS
multimedia applications. The version of libav you use will potentially have a
great influence on your experience with forked-daapd.
great influence on your experience with OwnTone.
## Long version - building and installing
@ -378,31 +377,31 @@ You can safely ignore all of these warnings.
After installation:
- edit the configuration file, `/etc/forked-daapd.conf`
- edit the configuration file, `/etc/owntone.conf`
- make sure the Avahi daemon is installed and running (Debian:
`apt install avahi-daemon`)
Note that `sudo make install` will not install any system files to start the
service after boot, and it will not setup a system user.
forked-daapd will drop privileges to any user you'll specify in the
OwnTone will drop privileges to any user you'll specify in the
configuration file if it's started as root.
This user must have read permission on your library (you can create a group for
this and make the user a member of the group, for instance) and read/write
permissions on the database location (`$localstatedir/cache/forked-daapd` by
permissions on the database location (`$localstatedir/cache/owntone` by
default).
If your system uses systemd then you might be able to use the service file
included, see `forked-daapd.service`.
included, see `owntone.service`.
Otherwise you might need an init script to start forked-daapd at boot. A simple
init script will do, forked-daapd daemonizes all by itself and creates a
Otherwise you might need an init script to start OwnTone at boot. A simple
init script will do, OwnTone daemonizes all by itself and creates a
pidfile under `/var/run`. Different distributions have different standards for
init scripts and some do not use init scripts anymore; check the documentation
for your distribution.
For dependency-based boot systems, here are the forked-daapd dependencies:
For dependency-based boot systems, here are the OwnTone dependencies:
- local filesystems
- network filesystems, if needed in your setup (library on NFS, ...)
@ -414,7 +413,7 @@ The LSB header below sums it up:
```bash
### BEGIN INIT INFO
# Provides: forked-daapd
# Provides: owntone
# Required-Start: $local_fs $remote_fs $network $time
# Required-Stop: $local_fs $remote_fs $network $time
# Should-Start: avahi
@ -422,8 +421,8 @@ The LSB header below sums it up:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: DAAP/DACP (iTunes) server, support for AirPlay and Spotify
# Description: forked-daapd is an iTunes-compatible media server for
# sharing your media library over the local network with DAAP
# Description: OwnTone is an iTunes-compatible media server for sharing
# your media library over the local network with DAAP/DACP
# clients like iTunes. Like iTunes, it can be controlled by
# Apple Remote (and compatibles) and stream music directly to
# AirPlay devices. It also supports streaming to RSP clients

View File

@ -1,8 +1,8 @@
ACLOCAL_AMFLAGS = -I m4
RPM_SPEC_FILE = forked-daapd.spec
CONF_FILE = forked-daapd.conf
SYSTEMD_SERVICE_FILE = forked-daapd.service
RPM_SPEC_FILE = owntone.spec
CONF_FILE = owntone.conf
SYSTEMD_SERVICE_FILE = owntone.service
sysconf_DATA = $(CONF_FILE)
@ -10,7 +10,7 @@ BUILT_SOURCES = $(CONF_FILE) $(SYSTEMD_SERVICE_FILE)
SUBDIRS = sqlext src htdocs
dist_man_MANS = forked-daapd.8
dist_man_MANS = owntone.8
nobase_dist_doc_DATA = \
UPGRADING \
@ -38,7 +38,7 @@ CLEANFILES = $(BUILT_SOURCES)
do_subst = $(SED) -e 's|@sbindir[@]|$(sbindir)|g' \
-e 's|@localstatedir[@]|$(localstatedir)|g' \
-e 's|@PACKAGE[@]|$(PACKAGE)|g' \
-e 's|@DAAPD_USER[@]|$(DAAPD_USER)|g'
-e 's|@OWNTONE_USER[@]|$(OWNTONE_USER)|g'
# these files use $prefix, which is determined at build (not configure) time
$(CONF_FILE) $(SYSTEMD_SERVICE_FILE): Makefile

View File

@ -1,6 +1,6 @@
# OwnTone Server (previously forked-daapd)
# OwnTone (previously forked-daapd)
OwnTone Server is a Linux/FreeBSD DAAP (iTunes), MPD (Music Player Daemon) and
OwnTone is a Linux/FreeBSD DAAP (iTunes), MPD (Music Player Daemon) and
RSP (Roku) media server.
It supports AirPlay devices/speakers, Apple Remote (and compatibles),
@ -11,7 +11,7 @@ It does not support streaming video by AirPlay nor Chromecast.
DAAP stands for Digital Audio Access Protocol which is the protocol used
by iTunes and friends to share/stream media libraries over the network.
OwnTone Server was previously called forked-daapd, which again was a rewrite of
OwnTone was previously called forked-daapd, which again was a rewrite of
mt-daapd (Firefly Media Server).
@ -20,9 +20,9 @@ mt-daapd (Firefly Media Server).
Before you continue, make sure you know what version of OwnTone you have,
and what features it was built with (e.g. Spotify support).
How to find out? Go to the [web interface](http://forked-daapd.local:3689) and
How to find out? Go to the [web interface](http://owntone.local:3689) and
check. No web interface? Then check the top of the log file (usually
/var/log/forked-daapd.log).
/var/log/owntone.log).
Note that you are viewing a snapshot of the instructions that may or may not
match the version that you are using. Go to [references](#references) to find
@ -59,10 +59,10 @@ please see the [INSTALL.md](INSTALL.md) file.
After installation (see [INSTALL.md](INSTALL.md)) do the following:
1. Edit the configuration file (usually `/etc/forked-daapd.conf`) to suit your
1. Edit the configuration file (usually `/etc/owntone.conf`) to suit your
needs
2. Start or restart the server (usually `/etc/init.d/forked-daapd restart`)
3. Go to the web interface [http://forked-daapd.local:3689](http://forked-daapd.local:3689),
2. Start or restart the server (usually `/etc/init.d/owntone restart`)
3. Go to the web interface [http://owntone.local:3689](http://owntone.local:3689),
or, if that won't work, to [http://[your_server_address_here]:3689](http://[your_server_address_here]:3689)
4. Wait for the library scan to complete
5. If you will be using a remote, e.g. Apple Remote: Start the remote, go to
@ -117,15 +117,12 @@ probably obsolete when you read it :-)
## Web interface
You can find the web interface at [http://forked-daapd.local:3689](http://forked-daapd.local:3689)
You can find the web interface at [http://owntone.local:3689](http://owntone.local:3689)
or alternatively at [http://[your_server_address_here]:3689](http://[your_server_address_here]:3689).
Use the web interface to control playback, trigger manual library rescans, pair
with remotes, select speakers, authenticate with Spotify, etc.
The Debian forked-daapd package does not include the web interface due to Debian
packaging rules.
You can find some screenshots and build instructions in [README_PLAYER_WEBINTERFACE.md](https://github.com/owntone/owntone-server/blob/master/README_PLAYER_WEBINTERFACE.md).
## Using Remote
@ -144,7 +141,7 @@ they return online during playback.
### Pairing
1. Open the [web interface](http://forked-daapd.local:3689)
1. Open the [web interface](http://owntone.local:3689)
2. Start Remote, go to Settings, Add Library
3. Enter the pair code in the web interface (update the page with F5 if it does
not automatically pick up the pairing request)
@ -359,7 +356,7 @@ the list, OwnTone will look for /foo/bar.{jpg,png}.
You can use symlinks for the artwork files.
OwnTone caches artwork in a separate cache file. The default path is
`/var/cache/forked-daapd/cache.db` and can be configured in the configuration
`/var/cache/owntone/cache.db` and can be configured in the configuration
file. The cache.db file can be deleted without losing the library and pairing
informations.
@ -419,7 +416,7 @@ is changed. So that means OwnTone cannot update its database in real time.
Instead you can schedule a cron job to update the database.
The first step in doing this is to add two entries to the 'directories'
configuration item in forked-daapd.conf:
configuration item in owntone.conf:
```
directories = { "/some/local/dir", "/your/network/mount/library" }
@ -480,7 +477,7 @@ curl "http://localhost:3689/logout?session-id=50"
OwnTone has support for playback of the tracks in your Spotify library.
1. Go to the [web interface](http://forked-daapd.local:3689) and check that your
1. Go to the [web interface](http://owntone.local:3689) and check that your
version of OwnTone was built with Spotify support.
2. You must have a Spotify premium account. If you normally log into Spotify
with your Facebook account you must first go to Spotify's web site where you
@ -496,7 +493,7 @@ Once the above is in order you can login to Spotify via the web interface. The
procedure for logging in to Spotify is a two-step procedure due to the current
state of libspotify, but the web interface makes both steps available to you.
Note that the address [http://forked-daapd.local:3689](http://forked-daapd.local:3689)
Note that the address [http://owntone.local:3689](http://owntone.local:3689)
must be working on your local network to complete the Spotify OAuth web login.
The address is announced automatically via mDNS, but if that for some reason
doesn't work then configure it via router or .hosts file. You can remove it
@ -513,7 +510,7 @@ configure the location of your Spotify user data in the configuration file.
To permanently logout and remove Spotify tracks + credentials make a request to
[http://[your_server_address_here]:3689/api/spotify-logout](http://[your_server_address_here]:3689/api/spotify-logout)
and also delete the contents of `/var/cache/forked-daapd/libspotify`.
and also delete the contents of `/var/cache/owntone/libspotify`.
Limitations:
You will not be able to do any playlist management through OwnTone - use

View File

@ -1,6 +1,6 @@
# forked-daapd and ALSA
# OwnTone and ALSA
ALSA is one of the main output configuration options for local audio; when using ALSA you will typically let the system select the soundcard on your machine as the `default` device/sound card - a mixer associated with the ALSA device is used for volume control. However if your machine has multiple sound cards and your system chooses the wrong playback device, you will need to manually select the card and mixer to complete the `forked daapd` configuration.
ALSA is one of the main output configuration options for local audio; when using ALSA you will typically let the system select the soundcard on your machine as the `default` device/sound card - a mixer associated with the ALSA device is used for volume control. However if your machine has multiple sound cards and your system chooses the wrong playback device, you will need to manually select the card and mixer to complete the OwnTone configuration.
## Quick introduction to ALSA devices
ALSA devices can be addressed in a number ways but traditionally we have referred to them using the hardware prefix, card number and optionally device number with something like `hw:0` or `hw:0,1`. In ALSA configuration terms `card X, device Y` is known as `hw:X,Y`.
@ -11,7 +11,7 @@ Alternative ALSA names can be used to refer to physical ALSA devices and can be
* more descriptive rather than being a card number
* consistent for USB numeration - USB ALSA devices may not have the same card number across reboots/reconnects
The ALSA device information required for configuration the server can be deterined using `aplay`, as described in the rest of this document, but `forked-daapd` can also assist; when configured to log at `INFO` level the following information is provided during startup:
The ALSA device information required for configuration the server can be deterined using `aplay`, as described in the rest of this document, but OwnTone can also assist; when configured to log at `INFO` level the following information is provided during startup:
```
laudio: Available ALSA playback mixer(s) on hw:0 CARD=Intel (HDA Intel): 'Master' 'Headphone' 'Speaker' 'PCM' 'Mic' 'Beep'
laudio: Available ALSA playback mixer(s) on hw:1 CARD=E30 (E30): 'E30 '
@ -22,7 +22,7 @@ The `CARD=` string is the alternate ALSA name for the device and can be used in
On this machine the server reports that it can see the onboard HDA Intel sound card and two additional sound cards: a Topping E30 DAC and a Plantronics Headset which are both USB devices. We can address the first ALSA device as `hw:0` or `hw:CARD=Intel` or `hw:Intel` or `plughw:Intel`, the second ALSA device as `hw:1` or `hw:E30` and so forth. The latter 2 devices being on USB will mean that `hw:1` may not always refer to `hw:E30` and thus in such a case using the alternate name is useful.
## Configuring the server
`forked-daapd` can support a single ALSA device or multiple ALSA devices.
OwnTone can support a single ALSA device or multiple ALSA devices.
```
# example audio section for server for a single soundcard
audio {
@ -34,7 +34,7 @@ audio {
mixer_device = "hw:1" # defaults to same as 'card' value
}
```
Multiple devices can be made available to `forked-daapd` using seperate `alsa { .. }` sections.
Multiple devices can be made available to OwnTone using seperate `alsa { .. }` sections.
```
audio {
type = "alsa"
@ -63,13 +63,13 @@ $ aplay -Ddefault /tmp/sine441.wav
If you can hear music played then you are good to use `default` for the server configuration. If you can not hear anything from the `aplay` firstly verify (using `alsamixer`) that the sound card is not muted. If the card is not muted AND there is no sound you can try the options below to determine the card and mixer for configuring the server.
## Automatically Determine ALL relevant the sound card information
As shown above, `forked-daapd` can help, consider the information that logged:
As shown above, OwnTone can help, consider the information that logged:
```
laudio: Available ALSA playback mixer(s) on hw:0 CARD=Intel (HDA Intel): 'Master' 'Headphone' 'Speaker' 'PCM' 'Mic' 'Beep'
laudio: Available ALSA playback mixer(s) on hw:1 CARD=E30 (E30): 'E30 '
laudio: Available ALSA playback mixer(s) on hw:2 CARD=Seri (Plantronics Blackwire 3210 Seri): 'Sidetone' 'Headset'
```
Using the information above, we can see 3 soundcards that we could use with `forked-daap` with the first soundcard having a number of seperate mixer devices (volume control) for headphone and the interal speakers - we'll configure the server to use both these and also the E30 device. The server configuration for theese multiple outputs would be:
Using the information above, we can see 3 soundcards that we could use with OwnTone with the first soundcard having a number of seperate mixer devices (volume control) for headphone and the interal speakers - we'll configure the server to use both these and also the E30 device. The server configuration for theese multiple outputs would be:
```
# using ALSA device alias where possible
@ -92,7 +92,7 @@ alsa "plughw:E30" {
mixer_device = "hw:E30"
}
```
NB: it is troublesome to use `hw` or `plughw` ALSA addressing when running `forked-daapd` on a machine with `pulseaudio` and if you wish to use refer to ALSA devices directly that you stop `pulseaudio`.
NB: it is troublesome to use `hw` or `plughw` ALSA addressing when running OwnTone on a machine with `pulseaudio` and if you wish to use refer to ALSA devices directly that you stop `pulseaudio`.
## Manually Determining the sound cards you have / ALSA can see
The example below is how I determined the correct sound card and mixer values for a Raspberry Pi that has an additional DAC card (hat) mounted. Of course using the log output from the server would have given the same results.
@ -271,13 +271,13 @@ $ aplay -v -Dhw:1 /tmp/sine441.wav
aplay: main:788: audio open error: Device or resource busy
```
In this instance this device cannot open multiple streams - `forked-daapd` can handle this situation transparently with some audio being truncated from the end of the current file as the server prepares to play the following track. If this handling is causing you problems you may wish to use [ALSA's `dmix` functionally](https://www.alsa-project.org/main/index.php/Asoundrc#Software_mixing) which provides a software mixing module. We will need to define a `dmix` component and configure the server to use that as it's sound card.
In this instance this device cannot open multiple streams - OwnTone can handle this situation transparently with some audio being truncated from the end of the current file as the server prepares to play the following track. If this handling is causing you problems you may wish to use [ALSA's `dmix` functionally](https://www.alsa-project.org/main/index.php/Asoundrc#Software_mixing) which provides a software mixing module. We will need to define a `dmix` component and configure the server to use that as it's sound card.
The downside to the `dmix` approach will be the need to fix a samplerate (48000 being the default) for this software mixing module meaning any files that have a mismatched samplerate will be resampled.
## ALSA dmix configuration/setup
A `dmix` device can be defined in `/etc/asound.conf` or `~/.asoundrc` for the same user running `forked-daapd`. We will need to know the underlying physical soundcard to be used: in our examples above, `hw:1,0` / `card 1, device 0` representing our IQaudIODAC as per output of `aplay -l`. We also take the `buffer_size` and `period_size` from the output of playing a sound file via `aplay -v`.
A `dmix` device can be defined in `/etc/asound.conf` or `~/.asoundrc` for the same user running OwnTone. We will need to know the underlying physical soundcard to be used: in our examples above, `hw:1,0` / `card 1, device 0` representing our IQaudIODAC as per output of `aplay -l`. We also take the `buffer_size` and `period_size` from the output of playing a sound file via `aplay -v`.
```
# use 'dac' as the name of the device: "aplay -Ddac ...."
@ -328,7 +328,7 @@ At this point we are able to rerun the concurrent `aplay` commands (adding `-Dda
If there is only one card on the machine you may use `pcm.!default` instead of `pcm.!dac` - there is less configuration to be done later since many ALSA applications will use the device called `default` by default. Furthermore on RPI you can explicitly disable the onboard sound card to leave us with only the IQaudIODAC board enabled (won't affect HDMI sound output) by commenting out `#dtparam=audio=on` in `/boot/config.txt` and rebooting.
### forked-daapd config with dmix
### Config with dmix
We will use the newly defined card named `dac` which uses the underlying `hw:1` device as per `/etc/asound.conf` or `~/.asoundrc` configuration. Note that the `mixer_device` is now required and must refer to the real device (see the `slave.pcm` value) and not the named device (ie `dac`) that we created and are using for the `card` configuration value.
@ -370,7 +370,7 @@ pcm.equal {
hint.description "equalised device"
}
```
and in `forked-daapd.conf`
and in `owntone.conf`
```
alsa "equal" {
nickname = "Equalised Output"

View File

@ -1,4 +1,4 @@
# forked-daapd API Endpoint Reference
# OwnTone API Endpoint Reference
Available API endpoints:
@ -395,7 +395,7 @@ curl -X GET "http://localhost:3689/api/outputs"
### Set enabled outputs
Set the enabled outputs by passing an array of output ids. forked-daapd enables all outputs
Set the enabled outputs by passing an array of output ids. The server enables all outputs
with the given ids and disables the remaining outputs.
**Endpoint**
@ -2192,9 +2192,9 @@ GET /api/config
| Key | Type | Value |
| --------------- | -------- | ----------------------------------------- |
| version | string | forked-daapd server version |
| version | string | Server version |
| websocket_port | integer | Port number for the [websocket](#push-notifications) (or `0` if websocket is disabled) |
| buildoptions | array | Array of strings indicating which features are supported by the forked-daapd server |
| buildoptions | array | Array of strings indicating which features are supported by the server |
**Example**
@ -2402,10 +2402,10 @@ curl -X DELETE "http://localhost:3689/api/settings/webinterface/show_composer_no
## Push notifications
If forked-daapd was built with websocket support, forked-daapd exposes a websocket at `localhost:3688` to inform clients of changes (e. g. player state or library updates).
The port depends on the forked-daapd configuration and can be read using the [`/api/config`](#config) endpoint.
If the server was built with websocket support it exposes a websocket at `localhost:3688` to inform clients of changes (e. g. player state or library updates).
The port depends on the server configuration and can be read using the [`/api/config`](#config) endpoint.
After connecting to the websocket, the client should send a message containing the event types it is interested in. After that forked-daapd
After connecting to the websocket, the client should send a message containing the event types it is interested in. After that the server
will send a message each time one of the events occurred.
**Message**
@ -2610,8 +2610,8 @@ curl --include \
### Artwork urls
Artwork urls in `queue item`, `artist`, `album` and `track` objects can be either relative urls or absolute urls to the artwork image.
Absolute artwork urls are pointing to external artwork images (e. g. for radio streams that provide artwork metadata), while relative artwork urls are served from forked-daapd.
Absolute artwork urls are pointing to external artwork images (e. g. for radio streams that provide artwork metadata), while relative artwork urls are served from the server.
It is possible to add the query parameters `maxwidth` and/or `maxheight` to relative artwork urls, in order to get a smaller image (forked-daapd only scales down never up).
It is possible to add the query parameters `maxwidth` and/or `maxheight` to relative artwork urls, in order to get a smaller image (the server only scales down never up).
Note that even if a relative artwork url attribute is present, it is not guaranteed to exist.

View File

@ -1,6 +1,6 @@
# forked-daapd player web interface
# OwnTone player web interface
Mobile friendly player web interface for [forked-daapd](http://owntone.github.io/forked-daapd/) build with [Vue.js](https://vuejs.org), [Bulma](http://bulma.io).
Mobile friendly player web interface for [OwnTone](http://owntone.github.io/owntone-server/) build with [Vue.js](https://vuejs.org), [Bulma](http://bulma.io).
## Screenshots
@ -9,7 +9,7 @@ Mobile friendly player web interface for [forked-daapd](http://owntone.github.io
## Usage
You can find forked-daapd's web interface at [http://forked-daapd.local:3689](http://forked-daapd.local:3689)
You can find OwnTone's web interface at [http://owntone.local:3689](http://owntone.local:3689)
or alternatively at [http://[your_server_address_here]:3689](http://[your_server_address_here]:3689).
@ -37,4 +37,4 @@ npm run build
npm run build --report
```
After running `npm run dev` the web interface is reachable at [localhost:8080](http://localhost:8080). By default it expects **forked-daapd** to be running at [localhost:3689](http://localhost:3689) and proxies all JSON API calls to this location. If **forked-daapd** is running at a different location you need to modify the `proxyTable` configuration in `config/index.js`
After running `npm run dev` the web interface is reachable at [localhost:8080](http://localhost:8080). By default it expects **owntone** to be running at [localhost:3689](http://localhost:3689) and proxies all JSON API calls to this location. If the server is running at a different location you need to modify the `proxyTable` configuration in `config/index.js`

View File

@ -1,4 +1,4 @@
# forked-daapd and Pulseaudio
# OwnTone and Pulseaudio
You have the choice of runnning Pulseaudio either in system mode or user mode.
For headless servers, i.e. systems without desktop users, system mode is
@ -24,7 +24,7 @@ instructions will require that you are root.
### Step 1: Setting up Pulseaudio
If you see a "Connection refused" error when starting forked-daapd, then you
If you see a "Connection refused" error when starting the server, then you
will probably need to setup Pulseaudio to run in system mode [1]. This means
that the Pulseaudio daemon will be started during boot and be available to all
users.
@ -72,16 +72,16 @@ Phew, almost done with Pulseaudio! Now you should:
3. check that the Bluetooth module is loaded with `pactl list modules short`
### Step 2: Setting up forked-daapd
### Step 2: Setting up the server
Add the user forked-daapd is running as (typically "daapd") to the
Add the user the server is running as (typically "owntone") to the
"pulse-access" group:
```
adduser daapd pulse-access
```
Now (re)start forked-daapd.
Now (re)start the server.
### Step 3: Adding a Bluetooth device
@ -99,8 +99,8 @@ trust [MAC address]
connect [MAC address]
```
Now the speaker should appear in forked-daapd. You can also verify that
Pulseaudio has detected the speaker with `pactl list sinks short`.
Now the speaker should appear. You can also verify that Pulseaudio has detected
the speaker with `pactl list sinks short`.
@ -137,7 +137,7 @@ pulseaudio -D
### Step 4: Adjust configuration file
In the `audio` section of `/etc/forked-daapd.conf`, set `server` to `localhost`:
In the `audio` section of `/etc/owntone.conf`, set `server` to `localhost`:
```
server = "localhost"

View File

@ -1,9 +1,9 @@
# forked-daapd and Radio Stream tweaking
# OwnTone and Radio Stream tweaking
Radio streams have many different ways in how metadata is sent. Many should
just work as expected, but a few may require some tweaking. If you are not
seeing expected title, track, artist, artwork in forked-daapd clients or web UI,
the following may help.
seeing expected title, track, artist, artwork in clients or web UI, the
following may help.
First, understand what and how the particular stream is sending information.
ffprobe is a command that can be used to interegrate most of the stream
@ -23,11 +23,11 @@ look at the Metadata section, below is an example.
```
In the example above, all tags are populated with correct information, no
modifications to forked-daapd configuration should be needed. Note that
modifications to the server configuration should be needed. Note that
StreamUrl points to the artwork image file.
Below is another example that will require some tweaks to forked-daapd, Notice
Below is another example that will require some tweaks to the server, Notice
`icy-name` is blank and `StreamUrl` doesn't point to an image.
```
@ -60,7 +60,7 @@ Length is -1 since it's a stream, `<Artist Name>` was left blank since
### 2) StreamUrl is a JSON file with metadata
If `StreamUrl` does not point directly to an artwork file then the link may be
to a json file that contains an artwork link. If so, you can make forked-daapd
to a json file that contains an artwork link. If so, you can make the server
download the file automatically and search for an artwork link, and also track
duration.
@ -82,7 +82,7 @@ Let's assume you get something like this:
}
```
In this case, you would need to tell forked-daapd to look for "eventDuration"
In this case, you would need to tell the server to look for "eventDuration"
and "eventImageUrl" (or just "duration" and "url"). You can do that like this:
```
@ -95,7 +95,7 @@ If you want multiple search phrases then comma separate, e.g. "duration,length".
### 3) Set metadata with a custom script
If your radio station publishes metadata via another method than the above, e.g.
just on their web site, then you will have to write a script that pulls the
metadata and then pushes it to forked-daapd. To update metadata for the
metadata and then pushes it to the server. To update metadata for the
currently playing radio station use something like this JSON API request:
```shell

View File

@ -1,7 +1,7 @@
# forked-daapd smart playlists
# OwnTone smart playlists
To add a smart playlist to forked-daapd, create a new text file with a filename ending with .smartpl;
To add a smart playlist to the server, create a new text file with a filename ending with .smartpl;
the filename doesn't matter, only the .smartpl ending does. The file must be placed somewhere in your
library folder.
@ -128,7 +128,7 @@ This would match all songs added as files to the library that are not placed und
}
```
This would match any podcast and audiobook file that was never played with forked-daapd.
This would match any podcast and audiobook file that was never played.
```
"Recently added music" {
@ -190,7 +190,7 @@ This matches all songs added in the last 2 weeks.
This matches all audiobooks played since the start of the last Monday 00:00AM.
All dates, except for `YYYY-DD-HH`, are relative to the day of when `forked-daapd` evaluates the smartpl query; `time_added after today` run on a Monday would match against items added since Monday 00:00hrs and evaluating the same smartpl on Friday would only match against added on Friday 00:00hrs.
All dates, except for `YYYY-DD-HH`, are relative to the day of when the server evaluates the smartpl query; `time_added after today` run on a Monday would match against items added since Monday 00:00hrs and evaluating the same smartpl on Friday would only match against added on Friday 00:00hrs.
Note that `time_added after 4 weeks ago` and `time_added after last month` are subtly different; the former is exactly 4 weeks ago (from today) whereas the latter is the first day of the previous month.

View File

@ -1,21 +1,20 @@
Upgrading forked-daapd
----------------------
Upgrading
---------
From time to time, newer versions of forked-daapd may need to perform a
database upgrade. This upgrade is handled by forked-daapd upon startup if
required.
From time to time, newer versions of OwnTone may need to perform a database
upgrade. This upgrade is handled by the server upon startup if required.
Before upgrading forked-daapd, it is always a good idea to backup your
database, just in case.
Before upgrading the server, it is always a good idea to backup your database,
just in case.
The database upgrade procedure is built into forked-daapd; there is no
external upgrade script to run. Depending on the changes done to the database
structure, the upgrade process will take more or less time and may need some
space in /tmp for temporary data. The upgrade can also require some more space
in the directory containing the database file.
The database upgrade procedure is built into the server; there is no external
upgrade script to run. Depending on the changes done to the database structure,
the upgrade process will take more or less time and may need some space in /tmp
for temporary data. The upgrade can also require some more space in the
directory containing the database file.
Before running the new forked-daapd version, make sure you have done your
backups and checked your disk space.
Before running the new server version, make sure you have done your backups and
checked your disk space.
Some upgrades can also trigger a full rescan to rebuild parts of the database,
so startup will be a bit slower and more resource-intensive than usual.

View File

@ -1,7 +1,7 @@
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ([2.60])
AC_INIT([forked-daapd], [27.4])
AC_INIT([owntone], [27.4])
AC_CONFIG_SRCDIR([config.h.in])
AC_CONFIG_MACRO_DIR([m4])
@ -50,12 +50,12 @@ AC_SUBST([AM_CPPFLAGS])
dnl Checks for header files.
AC_CHECK_HEADERS_ONCE([regex.h pthread_np.h])
AC_CHECK_HEADERS([sys/wait.h sys/param.h dirent.h getopt.h stdint.h], [],
[AC_MSG_ERROR([[Missing header required to build forked-daapd]])])
[AC_MSG_ERROR([[Missing header required to build OwnTone]])])
AC_CHECK_HEADERS([time.h], [],
[AC_MSG_ERROR([[Missing header required to build forked-daapd]])])
[AC_MSG_ERROR([[Missing header required to build OwnTone]])])
AC_CHECK_FUNCS_ONCE([posix_fadvise pipe2])
AC_CHECK_FUNCS([strptime strtok_r], [],
[AC_MSG_ERROR([[Missing function required to build forked-daapd]])])
[AC_MSG_ERROR([[Missing function required to build OwnTone]])])
dnl check for clock_gettime or replace it
AC_SEARCH_LIBS([clock_gettime], [rt],
@ -105,33 +105,33 @@ dnl Checks for libraries.
AC_SUBST([COMMON_LIBS])
AC_SUBST([COMMON_CPPFLAGS])
AC_SUBST([FORKED_LIBS])
AC_SUBST([FORKED_CPPFLAGS])
AC_SUBST([FORKED_OPTS_LIBS])
AC_SUBST([FORKED_OPTS_CPPFLAGS])
AC_SUBST([OWNTONE_LIBS])
AC_SUBST([OWNTONE_CPPFLAGS])
AC_SUBST([OWNTONE_OPTS_LIBS])
AC_SUBST([OWNTONE_OPTS_CPPFLAGS])
AM_ICONV
dnl All FORK_ macros defined in m4/fork_checks.m4
FORK_FUNC_REQUIRE([COMMON], [GNU libunistring], [LIBUNISTRING], [unistring],
dnl All OWNTONE_ macros defined in m4/owntone_checks.m4
OWNTONE_FUNC_REQUIRE([COMMON], [GNU libunistring], [LIBUNISTRING], [unistring],
[u8_strconv_from_locale], [uniconv.h], [],
[dnl Retry test with iconv library
FORK_VARS_PREPEND([COMMON], [LIBICONV], [INCICONV])
FORK_FUNC_REQUIRE([COMMON], [GNU libunistring], [LIBUNISTRING],
OWNTONE_VARS_PREPEND([COMMON], [LIBICONV], [INCICONV])
OWNTONE_FUNC_REQUIRE([COMMON], [GNU libunistring], [LIBUNISTRING],
[unistring], [u8_strconv_from_locale], [uniconv.h])])
FORK_MODULES_CHECK([FORKED], [ZLIB], [zlib], [deflate], [zlib.h])
FORK_MODULES_CHECK([FORKED], [CONFUSE], [libconfuse >= 3.0], [cfg_init], [confuse.h])
FORK_MODULES_CHECK([FORKED], [LIBCURL], [libcurl], [curl_global_init], [curl/curl.h])
FORK_MODULES_CHECK([FORKED], [LIBSODIUM], [libsodium], [sodium_init], [sodium.h])
OWNTONE_MODULES_CHECK([OWNTONE], [ZLIB], [zlib], [deflate], [zlib.h])
OWNTONE_MODULES_CHECK([OWNTONE], [CONFUSE], [libconfuse >= 3.0], [cfg_init], [confuse.h])
OWNTONE_MODULES_CHECK([OWNTONE], [LIBCURL], [libcurl], [curl_global_init], [curl/curl.h])
OWNTONE_MODULES_CHECK([OWNTONE], [LIBSODIUM], [libsodium], [sodium_init], [sodium.h])
FORK_MODULES_CHECK([FORKED], [MINIXML], [mxml],
OWNTONE_MODULES_CHECK([OWNTONE], [MINIXML], [mxml],
[mxmlNewElement], [mxml.h],
[
dnl See mxml-compat.h
AC_CHECK_FUNCS([mxmlGetOpaque] [mxmlGetText] [mxmlGetType] [mxmlGetFirstChild])
])
FORK_MODULES_CHECK([COMMON], [SQLITE3], [sqlite3 >= 3.5.0],
OWNTONE_MODULES_CHECK([COMMON], [SQLITE3], [sqlite3 >= 3.5.0],
[sqlite3_initialize], [sqlite3.h],
[dnl Check that SQLite3 has the unlock notify API built-in
AC_CHECK_FUNC([[sqlite3_unlock_notify]], [],
@ -151,7 +151,7 @@ FORK_MODULES_CHECK([COMMON], [SQLITE3], [sqlite3 >= 3.5.0],
[AC_MSG_RESULT([[runtime will tell]])])
])
FORK_MODULES_CHECK([FORKED], [LIBEVENT], [libevent >= 2],
OWNTONE_MODULES_CHECK([OWNTONE], [LIBEVENT], [libevent >= 2],
[event_base_new], [event2/event.h],
[dnl check for old version
PKG_CHECK_EXISTS([libevent >= 2.1.4], [],
@ -159,7 +159,7 @@ FORK_MODULES_CHECK([FORKED], [LIBEVENT], [libevent >= 2],
[Define to 1 if you have libevent 2 (<2.1.4)])])
])
FORK_MODULES_CHECK([FORKED], [JSON_C], [json-c],
OWNTONE_MODULES_CHECK([OWNTONE], [JSON_C], [json-c],
[json_tokener_parse], [json.h],
[dnl check for old version
PKG_CHECK_EXISTS([json-c >= 0.11], [],
@ -169,13 +169,13 @@ FORK_MODULES_CHECK([FORKED], [JSON_C], [json-c],
dnl Build with libplist (2.2.0 does not ship libplist.pc, only libplist-2.0.pc)
PKG_CHECK_EXISTS([libplist],
[FORK_MODULES_CHECK([FORKED], [LIBPLIST], [libplist >= 0.16],
[OWNTONE_MODULES_CHECK([OWNTONE], [LIBPLIST], [libplist >= 0.16],
[plist_dict_get_item], [plist/plist.h])],
[FORK_MODULES_CHECK([FORKED], [LIBPLIST], [libplist-2.0],
[OWNTONE_MODULES_CHECK([OWNTONE], [LIBPLIST], [libplist-2.0],
[plist_dict_get_item], [plist/plist.h])])
FORK_FUNC_REQUIRE([FORKED], [ANTLR3 C runtime], [ANTLR3C], [antlr3c],
OWNTONE_FUNC_REQUIRE([OWNTONE], [ANTLR3 C runtime], [ANTLR3C], [antlr3c],
[antlr3BaseRecognizerNew], [antlr3.h],
[AC_CHECK_FUNC([[antlr3NewAsciiStringInPlaceStream]],
[AC_DEFINE([ANTLR3C_NEW_INPUT], 0,
@ -185,10 +185,10 @@ FORK_FUNC_REQUIRE([FORKED], [ANTLR3 C runtime], [ANTLR3C], [antlr3c],
])
AM_PATH_LIBGCRYPT([1:1.2.0])
FORK_FUNC_REQUIRE([FORKED], [GNU Crypt Library], [LIBGCRYPT], [gcrypt],
OWNTONE_FUNC_REQUIRE([OWNTONE], [GNU Crypt Library], [LIBGCRYPT], [gcrypt],
[gcry_control], [gcrypt.h])
AM_PATH_GPG_ERROR([1.6])
FORK_FUNC_REQUIRE([FORKED], [GNUPG Error Values], [GPG_ERROR_MT], [gpg-error],
OWNTONE_FUNC_REQUIRE([OWNTONE], [GNUPG Error Values], [GPG_ERROR_MT], [gpg-error],
[gpg_err_init], [gpg-error.h])
@ -197,7 +197,7 @@ AC_CHECK_HEADER([sys/eventfd.h], [AC_CHECK_FUNCS([eventfd])])
AC_CHECK_HEADER([sys/timerfd.h], [AC_CHECK_FUNC([timerfd_create],
[AC_DEFINE([HAVE_TIMERFD], 1, [Define to 1 if you have timerfd])])])
FORK_FUNC_REQUIRE([FORKED], [inotify], [INOTIFY], [inotify],
OWNTONE_FUNC_REQUIRE([OWNTONE], [inotify], [INOTIFY], [inotify],
[inotify_add_watch], [sys/inotify.h])
have_signal=no
@ -229,7 +229,7 @@ AC_ARG_WITH([libav], [AS_HELP_STRING([--with-libav],
[choose libav even if ffmpeg present (default=no)])],
[[LIBAV=-libav]], [[LIBAV=]])
dnl libav/ffmpeg requires many feature checks
FORK_MODULES_CHECK([FORKED], [LIBAV],
OWNTONE_MODULES_CHECK([OWNTONE], [LIBAV],
[libavformat$LIBAV libavcodec$LIBAV libavutil$LIBAV libavfilter$LIBAV],
[av_init_packet], [libavcodec/avcodec.h],
[dnl Checks for misc libav and ffmpeg API differences
@ -247,9 +247,9 @@ FORK_MODULES_CHECK([FORKED], [LIBAV],
[Define to 1 if you have ffmpeg (not libav)])],
[[is_ffmpeg=no]])
AC_MSG_RESULT([$is_ffmpeg])
FORK_CHECK_DECLS([av_version_info],
OWNTONE_CHECK_DECLS([av_version_info],
[libavutil/avutil.h])
FORK_CHECK_DECLS([avformat_network_init],
OWNTONE_CHECK_DECLS([avformat_network_init],
[libavformat/avformat.h])
])
@ -257,61 +257,61 @@ AC_CHECK_SIZEOF([void *])
dnl --- Begin configuring the options ---
dnl ALSA
FORK_ARG_WITH_CHECK([FORKED_OPTS], [ALSA support], [alsa], [ALSA],
OWNTONE_ARG_WITH_CHECK([OWNTONE_OPTS], [ALSA support], [alsa], [ALSA],
[alsa], [snd_mixer_open], [alsa/asoundlib.h])
AM_CONDITIONAL([COND_ALSA], [[test "x$with_alsa" = "xyes"]])
dnl PULSEAUDIO
FORK_ARG_WITH_CHECK([FORKED_OPTS], [Pulseaudio support], [pulseaudio], [LIBPULSE],
OWNTONE_ARG_WITH_CHECK([OWNTONE_OPTS], [Pulseaudio support], [pulseaudio], [LIBPULSE],
[libpulse], [pa_stream_get_state], [pulse/pulseaudio.h],
[AC_CHECK_FUNCS([pa_threaded_mainloop_set_name])])
AM_CONDITIONAL([COND_PULSEAUDIO], [[test "x$with_pulseaudio" = "xyes"]])
dnl Build with libwebsockets
FORK_ARG_WITH_CHECK([FORKED_OPTS], [libwebsockets support], [libwebsockets], [LIBWEBSOCKETS],
OWNTONE_ARG_WITH_CHECK([OWNTONE_OPTS], [libwebsockets support], [libwebsockets], [LIBWEBSOCKETS],
[libwebsockets >= 2.0.2])
AM_CONDITIONAL([COND_LIBWEBSOCKETS], [[test "x$with_libwebsockets" = "xyes"]])
dnl Build with libevent_pthreads
FORK_ARG_WITH_CHECK([FORKED_OPTS], [libevent_pthreads support],
OWNTONE_ARG_WITH_CHECK([OWNTONE_OPTS], [libevent_pthreads support],
[libevent_pthreads], [LIBEVENT_PTHREADS], [libevent_pthreads],
[evthread_use_pthreads], [event2/thread.h])
dnl Build with Avahi (or Bonjour if not)
FORK_ARG_WITH_CHECK([FORKED_OPTS], [Avahi mDNS], [avahi], [AVAHI],
OWNTONE_ARG_WITH_CHECK([OWNTONE_OPTS], [Avahi mDNS], [avahi], [AVAHI],
[avahi-client >= 0.6.24], [avahi_client_new], [avahi-client/client.h])
AS_IF([[test "x$with_avahi" = "xno"]],
[FORK_FUNC_REQUIRE([FORKED_OPTS], [Bonjour DNS_SD], [DNSSD], [dns_sd],
[OWNTONE_FUNC_REQUIRE([OWNTONE_OPTS], [Bonjour DNS_SD], [DNSSD], [dns_sd],
[DNSServiceGetAddrInfo], [dns_sd.h], [],
[AC_MSG_ERROR([[Avahi client or Bonjour DNS_SD required, please install one.]])])])
AM_CONDITIONAL([COND_AVAHI], [[test "x$with_avahi" = "xyes"]])
dnl Spotify with dynamic linking to libspotify
FORK_ARG_ENABLE([Spotify support], [spotify], [SPOTIFY],
OWNTONE_ARG_ENABLE([Spotify support], [spotify], [SPOTIFY],
[AS_IF([[test "x$with_libevent_pthreads" = "xno"]],
[AC_MSG_ERROR([[Spotify support requires libevent_pthreads]])])
FORK_MODULES_CHECK([SPOTIFY], [LIBSPOTIFY], [libspotify],
OWNTONE_MODULES_CHECK([SPOTIFY], [LIBSPOTIFY], [libspotify],
[], [libspotify/api.h])
AC_DEFINE([HAVE_SPOTIFY_H], 1,
[Define to 1 if you have the <libspotify/api.h> header file.])
dnl Don't link with libspotify, use dynamic linking
AC_SEARCH_LIBS([dlopen], [dl], [],
[AC_MSG_ERROR([[Spotify support requires dlopen]])])
FORK_VAR_PREPEND([FORKED_OPTS_CPPFLAGS], [$SPOTIFY_CPPFLAGS])
FORK_VAR_PREPEND([FORKED_OPTS_LIBS], [-rdynamic])
OWNTONE_VAR_PREPEND([OWNTONE_OPTS_CPPFLAGS], [$SPOTIFY_CPPFLAGS])
OWNTONE_VAR_PREPEND([OWNTONE_OPTS_LIBS], [-rdynamic])
])
AM_CONDITIONAL([COND_SPOTIFY], [[test "x$enable_spotify" = "xyes"]])
dnl LastFM support
FORK_ARG_DISABLE([LastFM support], [lastfm], [LASTFM])
OWNTONE_ARG_DISABLE([LastFM support], [lastfm], [LASTFM])
AM_CONDITIONAL([COND_LASTFM], [[test "x$enable_lastfm" = "xyes"]])
dnl ChromeCast support with libprotobuf-c
FORK_ARG_ENABLE([Chromecast support], [chromecast], [CHROMECAST],
[FORK_MODULES_CHECK([FORKED_OPTS], [LIBPROTOBUF_C],
OWNTONE_ARG_ENABLE([Chromecast support], [chromecast], [CHROMECAST],
[OWNTONE_MODULES_CHECK([OWNTONE_OPTS], [LIBPROTOBUF_C],
[libprotobuf-c >= 1.0.0], [protobuf_c_message_pack],
[protobuf-c/protobuf-c.h], [],
[FORK_FUNC_REQUIRE([FORKED_OPTS], [v0 libprotobuf-c],
[OWNTONE_FUNC_REQUIRE([OWNTONE_OPTS], [v0 libprotobuf-c],
[LIBPROTOBUF_OLD], [protobuf-c],
[protobuf_c_message_pack],
[google/protobuf-c/protobuf-c.h],
@ -320,43 +320,43 @@ FORK_ARG_ENABLE([Chromecast support], [chromecast], [CHROMECAST],
[protobuf_old=yes]],
[AC_MSG_ERROR([[Chromecast support requires protobuf-c]])])
])
FORK_MODULES_CHECK([FORKED_OPTS], [GNUTLS], [gnutls], [gnutls_init],
OWNTONE_MODULES_CHECK([OWNTONE_OPTS], [GNUTLS], [gnutls], [gnutls_init],
[gnutls/gnutls.h])
])
AM_CONDITIONAL([COND_CHROMECAST], [[test "x$enable_chromecast" = "xyes"]])
AM_CONDITIONAL([COND_PROTOBUF_OLD], [[test "x$protobuf_old" = "xyes"]])
dnl Prefer AirPlay 2
FORK_ARG_ENABLE([preference for AirPlay 2 for devices that support both 1 and 2], [preferairplay2], [PREFER_AIRPLAY2])
OWNTONE_ARG_ENABLE([preference for AirPlay 2 for devices that support both 1 and 2], [preferairplay2], [PREFER_AIRPLAY2])
dnl DB profiling support
FORK_ARG_ENABLE([DB profiling support], [dbprofile], [DB_PROFILE])
OWNTONE_ARG_ENABLE([DB profiling support], [dbprofile], [DB_PROFILE])
dnl MPD support
FORK_ARG_DISABLE([MPD client protocol support], [mpd], [MPD])
OWNTONE_ARG_DISABLE([MPD client protocol support], [mpd], [MPD])
AM_CONDITIONAL([COND_MPD], [[test "x$enable_mpd" = "xyes"]])
dnl Include default webinterface
FORK_ARG_DISABLE([Include default web interface], [webinterface], [WEBINTERFACE],
OWNTONE_ARG_DISABLE([Include default web interface], [webinterface], [WEBINTERFACE],
[AS_IF([[test "x$with_libwebsockets" = "xno"]],
[AC_MSG_ERROR([[Web interface requires libwebsockets >= 2.0.2 (or use --disable-webinterface)]])])
])
AM_CONDITIONAL([COND_WEBINTERFACE], [[test "x$enable_webinterface" = "xyes"]])
dnl Defining users and groups
AC_ARG_WITH([daapd_user],
[AS_HELP_STRING([--with-daapd-user=USER],
[User for running forked-daapd (default=daapd)])],
AC_ARG_WITH([owntone_user],
[AS_HELP_STRING([--with-user=USER],
[User for running OwnTone (default=owntone)])],
[[test x"$withval" = xyes && withval=]], [[withval=]])
DAAPD_USER=${withval:-daapd}
AC_SUBST([DAAPD_USER])
OWNTONE_USER=${withval:-owntone}
AC_SUBST([OWNTONE_USER])
AC_ARG_WITH([daapd_group],
[AS_HELP_STRING([--with-daapd-group=GROUP],
[Group for daapd user (default=USER)])],
AC_ARG_WITH([owntone_group],
[AS_HELP_STRING([--with-group=GROUP],
[Group for owntone user (default=USER)])],
[[test x"$withval" = xyes && withval=]], [[withval=]])
DAAPD_GROUP=${withval:-$DAAPD_USER}
AC_SUBST([DAAPD_GROUP])
OWNTONE_GROUP=${withval:-$OWNTONE_USER}
AC_SUBST([OWNTONE_GROUP])
dnl --- End options ---
AC_CONFIG_FILES([
@ -364,6 +364,6 @@ AC_CONFIG_FILES([
sqlext/Makefile
htdocs/Makefile
Makefile
forked-daapd.spec
owntone.spec
])
AC_OUTPUT

View File

@ -1,4 +1,4 @@
# fork_checks.m4 serial 2
# owntone_checks.m4 serial 2
dnl Copyright (c) Scott Shambarger <devel@shambarger.net>
dnl
dnl Copying and distribution of this file, with or without modification, are
@ -6,10 +6,10 @@ dnl permitted in any medium without royalty provided the copyright notice
dnl and this notice are preserved. This file is offered as-is, without any
dnl warranty.
dnl _FORK_FUNC_MERGE
dnl _OWNTONE_FUNC_MERGE
dnl ----------------
dnl Internal only. Defines function used by FORK_VAR_PREPEND
AC_DEFUN([_FORK_FUNC_MERGE], [[
dnl Internal only. Defines function used by OWNTONE_VAR_PREPEND
AC_DEFUN([_OWNTONE_FUNC_MERGE], [[
# fork_fn_merge(before, after)
# create wordlist removing duplicates
fork_fn_merge() {
@ -31,55 +31,55 @@ fork_fn_merge() {
unset fork_fn_var_result
}]])
dnl FORK_VAR_PREPEND(VARNAME, BEFORE)
dnl OWNTONE_VAR_PREPEND(VARNAME, BEFORE)
dnl ---------------------------------
dnl Prepends words in BEFORE to the contents of VARNAME, skipping any
dnl duplicate words.
AC_DEFUN([FORK_VAR_PREPEND],
[AC_REQUIRE([_FORK_FUNC_MERGE])dnl
AC_DEFUN([OWNTONE_VAR_PREPEND],
[AC_REQUIRE([_OWNTONE_FUNC_MERGE])dnl
[ $1=$(fork_fn_merge "$2" "$$1")]])
dnl FORK_VARS_PREPEND(TARGET, LIBS_ENV, CFLAGS_ENV)
dnl OWNTONE_VARS_PREPEND(TARGET, LIBS_ENV, CFLAGS_ENV)
dnl -----------------------------------------------
dnl Prepend LIBS_ENV to LIBS and TARGET_LIBS
dnl Append CFLAGS_ENV to CPPFLAGS and TARGET_CPPFLAGS.
AC_DEFUN([FORK_VARS_PREPEND],
AC_DEFUN([OWNTONE_VARS_PREPEND],
[[
LIBS="$$2 $LIBS"
$1_LIBS="$$2 $$1_LIBS"]
FORK_VAR_PREPEND([CPPFLAGS], [$$3])
FORK_VAR_PREPEND([$1_CPPFLAGS], [$$3])
OWNTONE_VAR_PREPEND([CPPFLAGS], [$$3])
OWNTONE_VAR_PREPEND([$1_CPPFLAGS], [$$3])
])
dnl _FORK_VARS_ADD_PREFIX(TARGET)
dnl _OWNTONE_VARS_ADD_PREFIX(TARGET)
dnl -----------------------------
dnl Internal use only. Add libdir prefix to {TARGET_}LIBS and
dnl includedir prefix to {TARGET_}CPPFLAGS as fallback search paths
dnl expanding all variables.
AC_DEFUN([_FORK_VARS_ADD_PREFIX],
AC_DEFUN([_OWNTONE_VARS_ADD_PREFIX],
[AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
AC_LIB_WITH_FINAL_PREFIX([[
eval LIBS=\"-L$libdir $LIBS\"
eval $1_LIBS=\"-L$libdir $$1_LIBS\"
eval fork_tmp_cppflags=\"-I$includedir\"]
FORK_VAR_PREPEND([CPPFLAGS], [$fork_tmp_cppflags])
FORK_VAR_PREPEND([$1_CPPFLAGS], [$fork_tmp_cppflags])
OWNTONE_VAR_PREPEND([CPPFLAGS], [$fork_tmp_cppflags])
OWNTONE_VAR_PREPEND([$1_CPPFLAGS], [$fork_tmp_cppflags])
])
])
dnl FORK_CHECK_DECLS(SYMBOLS, INCLUDE, [ACTION-IF-FOUND],
dnl OWNTONE_CHECK_DECLS(SYMBOLS, INCLUDE, [ACTION-IF-FOUND],
dnl [ACTION-IF-NOT-FOUND])
dnl -----------------------------------------------------
dnl Expands AC_CHECK_DECLS with SYMBOLS and INCLUDE appended to
dnl AC_INCLUDES_DEFAULT.
dnl NOTE: Remember that AC_CHECK_DECLS defines HAVE_* to 1 or 0
dnl (not 1 or undefined!)
AC_DEFUN([FORK_CHECK_DECLS],
AC_DEFUN([OWNTONE_CHECK_DECLS],
[AC_CHECK_DECLS([$1], [$3], [$4], [AC_INCLUDES_DEFAULT
[@%:@include <$2>]])
])
dnl FORK_FUNC_REQUIRE(TARGET, DESCRIPTION, ENV, LIBRARY, FUNCTION, [HEADER],
dnl OWNTONE_FUNC_REQUIRE(TARGET, DESCRIPTION, ENV, LIBRARY, FUNCTION, [HEADER],
dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
dnl ------------------------------------------------------------------------
dnl Check for software which lacks pkg-config support, setting TARGET_CPPFLAGS
@ -95,22 +95,22 @@ dnl identify software to install. If FUNCTION not found, either displays
dnl error suggested use of ENV_* overrides, or if ENV_* were not set
dnl expands optional ACTION-IF-NOT-FOUND in place of error.
dnl Restores original CPPFLAGS and LIBS when done.
AC_DEFUN([FORK_FUNC_REQUIRE],
[AS_VAR_PUSHDEF([FORK_MSG], [fork_msg_$3])
AC_DEFUN([OWNTONE_FUNC_REQUIRE],
[AS_VAR_PUSHDEF([OWNTONE_MSG], [fork_msg_$3])
AC_ARG_VAR([$3_CFLAGS], [C compiler flags for $2, overriding search])
AC_ARG_VAR([$3_LIBS], [linker flags for $2, overriding search])
[fork_save_$3_LIBS=$LIBS; fork_save_$3_CPPFLAGS=$CPPFLAGS
fork_found_$3=yes]
AS_IF([[test -n "$$3_CFLAGS" && test -n "$$3_LIBS"]],
[dnl ENV variables provided, just verify they work
AS_VAR_SET([FORK_MSG], [["
AS_VAR_SET([OWNTONE_MSG], [["
Library specific environment variables $3_LIBS and
$3_CFLAGS were used, verify they are correct..."]])
FORK_VARS_PREPEND([$1], [$3_LIBS], [$3_CFLAGS])
OWNTONE_VARS_PREPEND([$1], [$3_LIBS], [$3_CFLAGS])
AC_CHECK_FUNC([[$5]], [],
[AC_MSG_FAILURE([[Unable to link function $5 with $2.$]FORK_MSG])])],
[AC_MSG_FAILURE([[Unable to link function $5 with $2.$]OWNTONE_MSG])])],
[dnl Search w/o LIBRARY, w/ LIBRARY, and finally adding $prefix path
AS_VAR_SET([FORK_MSG], [["
AS_VAR_SET([OWNTONE_MSG], [["
Install $2 in the default include path, or alternatively set
library specific environment variables $3_CFLAGS
and $3_LIBS."]])
@ -119,7 +119,7 @@ and $3_LIBS."]])
[[LIBS="-l$4 $LIBS"
$1_LIBS="-l$4 $$1_LIBS"]
AC_TRY_LINK_FUNC([[$5]], [AC_MSG_RESULT([[-l$4]])],
[_FORK_VARS_ADD_PREFIX([$1])
[_OWNTONE_VARS_ADD_PREFIX([$1])
AC_TRY_LINK_FUNC([[$5]], [AC_MSG_RESULT([[-l$4]])],
[AC_MSG_RESULT([[no]])
fork_found_$3=no])])
@ -128,17 +128,17 @@ and $3_LIBS."]])
AS_IF([[test "$fork_found_$3" != "no"]],
[dnl check HEADER, then expand FOUND
m4_ifval([$6], [AC_CHECK_HEADER([[$6]], [],
[AC_MSG_FAILURE([[Unable to find header $6 for $2.$]FORK_MSG])])])
[AC_MSG_FAILURE([[Unable to find header $6 for $2.$]OWNTONE_MSG])])])
$7])
[LIBS=$fork_save_$3_LIBS; CPPFLAGS=$fork_save_$3_CPPFLAGS]
dnl Expand NOT-FOUND after restoring saved flags to allow recursive expansion
AS_IF([[test "$fork_found_$3" = "no"]],
[m4_default_nblank([$8],
[AC_MSG_FAILURE([[Function $5 in lib$4 not found.$]FORK_MSG])])])
AS_VAR_POPDEF([FORK_MSG])
[AC_MSG_FAILURE([[Function $5 in lib$4 not found.$]OWNTONE_MSG])])])
AS_VAR_POPDEF([OWNTONE_MSG])
])
dnl FORK_MODULES_CHECK(TARGET, ENV, MODULES, [FUNCTION], [HEADER],
dnl OWNTONE_MODULES_CHECK(TARGET, ENV, MODULES, [FUNCTION], [HEADER],
dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
dnl --------------------------------------------------------------
dnl Expands PKG_CHECK_MODULES, but when found also attempt to link
@ -147,10 +147,10 @@ dnl TARGET_CPPFLAGS and TARGET_LIBS. Expands optional ACTION-IF-FOUND with
dnl working CPPFLAGS/LIBS for additional checks. Expands
dnl ACTION-IF-NOT-FOUND only if package not found (not link/include failures)
dnl overriding default error. Restores original CPPFLAGS and LIBS when done.
AC_DEFUN([FORK_MODULES_CHECK],
AC_DEFUN([OWNTONE_MODULES_CHECK],
[PKG_CHECK_MODULES([$2], [[$3]],
[[fork_save_$2_LIBS=$LIBS; fork_save_$2_CPPFLAGS=$CPPFLAGS]
FORK_VARS_PREPEND([$1], [$2_LIBS], [$2_CFLAGS])
OWNTONE_VARS_PREPEND([$1], [$2_LIBS], [$2_CFLAGS])
m4_ifval([$4], [AC_CHECK_FUNC([[$4]], [],
[AC_MSG_ERROR([[Unable to link function $4]])])])
m4_ifval([$5], [AC_CHECK_HEADER([[$5]], [],
@ -160,23 +160,23 @@ AC_DEFUN([FORK_MODULES_CHECK],
m4_default_nblank_quoted([$7]))
])
dnl FORK_ARG_WITH_CHECK(TARGET, DESCRIPTION, OPTION, ENV, MODULES, [FUNCTION],
dnl OWNTONE_ARG_WITH_CHECK(TARGET, DESCRIPTION, OPTION, ENV, MODULES, [FUNCTION],
dnl [HEADER], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
dnl --------------------------------------------------------------------------
dnl Create an --with-OPTION with a default of "check" (include MODULES
dnl if they are available). Expands FORK_MODULES_CHECK with remaining
dnl if they are available). Expands OWNTONE_MODULES_CHECK with remaining
dnl arguments. Defines HAVE_ENV to 1 if package found. DESCRIPTION is used
dnl in option help. Shell variable with_OPTION set to yes before
dnl ACTION-IF-FOUND. Default ACTION-IF-NOT-FOUND will fail
dnl if --with-OPTION given and MODULES not found, or sets shell var
dnl with_OPTION to no if option was check. A non-empty ACTION-IF-NOT-FOUND
dnl overrides this behavior to allow alternate checks.
AC_DEFUN([FORK_ARG_WITH_CHECK],
AC_DEFUN([OWNTONE_ARG_WITH_CHECK],
[AC_ARG_WITH([[$3]], [AS_HELP_STRING([--with-$3],
[with $2 (default=check)])], [],
[[with_$3=check]])
AS_IF([[test "x$with_$3" != "xno"]],
[FORK_MODULES_CHECK([$1], [$4], [$5], [$6], [$7],
[OWNTONE_MODULES_CHECK([$1], [$4], [$5], [$6], [$7],
[[with_$3=yes]
AC_DEFINE([HAVE_$4], 1, [Define to 1 to build with $2])
$8],
@ -188,12 +188,12 @@ AC_DEFUN([FORK_ARG_WITH_CHECK],
])
])
dnl FORK_ARG_ENABLE(DESCRIPTION, OPTION, DEFINE, [ACTION-IF-ENABLE])
dnl OWNTONE_ARG_ENABLE(DESCRIPTION, OPTION, DEFINE, [ACTION-IF-ENABLE])
dnl ----------------------------------------------------------------
dnl Create an --enable-OPTION, setting shell variable enable_OPTION
dnl to no by default. If feature is enabled, defines DEFINE to 1
dnl and expand ACTION-IF_ENABLE. DESCRIPTION is used in option help.
AC_DEFUN([FORK_ARG_ENABLE],
AC_DEFUN([OWNTONE_ARG_ENABLE],
[AC_ARG_ENABLE([[$2]], [AS_HELP_STRING([--enable-$2],
[enable $1 (default=no)])])
AS_IF([[test "x$enable_$2" = "xyes"]],
@ -202,12 +202,12 @@ AC_DEFUN([FORK_ARG_ENABLE],
[[enable_$2=no]])
])
dnl FORK_ARG_DISABLE(DESCRIPTION, OPTION, DEFINE, [ACTION-IF-ENABLE])
dnl OWNTONE_ARG_DISABLE(DESCRIPTION, OPTION, DEFINE, [ACTION-IF-ENABLE])
dnl ----------------------------------------------------------------
dnl Create an --disable-OPTION, setting shell variable enable_OPTION
dnl to yes by default. If feature is enabled, defines DEFINE to 1
dnl and expand ACTION-IF_ENABLE. DESCRIPTION is used in option help.
AC_DEFUN([FORK_ARG_DISABLE],
AC_DEFUN([OWNTONE_ARG_DISABLE],
[AC_ARG_ENABLE([[$2]], [AS_HELP_STRING([--disable-$2],
[disable $1 (default=no)])])
AS_IF([[test "x$enable_$2" = "x" || test "x$enable_$2" = "xyes"]],

View File

@ -1,15 +1,15 @@
.\" -*- nroff -*-
.TH FORKED-DAAPD "8" "2018-01-14" "forked-daapd" "DAAP, MPD, Chromecast & RSP media server"
.TH OWNTONE "8" "2018-01-14" "owntone" "DAAP, MPD, Chromecast & RSP media server"
.SH NAME
forked\-daapd \- iTunes\-compatible DAAP server with MPD, Chromecast and RSP support
OwnTone \- iTunes\-compatible DAAP server with MPD, Chromecast and RSP support
.SH SYNOPSIS
.B forked-daapd
.B OwnTone
[\fIoptions\fR]
.SH DESCRIPTION
\fBforked\-daapd\fP is a Linux/FreeBSD DAAP (iTunes) media server with support
\fBOwnTone\fP is a Linux/FreeBSD DAAP (iTunes) media server with support
for AirPlay devices, Apple Remote (and compatibles), MPD, Spotify, Chromecast,
mp3 streaming and internet radio. It allows you to share your music collection over
the local network.
mp3 streaming and internet radio. It allows you to share your music collection
over the local network.
.SH OPTIONS
.TP
\fB\-d, \-\-debug=\fR\fIlevel\fP
@ -46,15 +46,15 @@ Don't announce RSP service via mDNS.
Don't announce DAAP service via mDNS.
.TP
\fB\-\-mdns-no-cname\fR
Don't register forked-daapd.local as CNAME via mDNS.
Don't register owntone.local as CNAME via mDNS.
.TP
\fB\-\-mdns-no-web\fR
Don't announce web interface via mDNS.
.SH FILES
.nf
\fI/etc/forked\-daapd.conf\fR
\fI/var/cache/forked\-daapd\fR
\fI/etc/owntone.conf\fR
\fI/var/cache/owntone\fR
.fi
.SH SEE ALSO
See \fIhttp://owntone.github.io/forked-daapd/\fR for more in-depth information
about using \fBforked-daapd\fP.
See \fIhttp://owntone.github.io/owntone-server/\fR for more in-depth information
about using \fBOwnTone\fP.

View File

@ -1,4 +1,4 @@
# A quick guide to configuring forked-daapd:
# A quick guide to configuring OwnTone:
#
# For regular use, the most important setting to configure is "directories",
# which should be the location of your media. Whatever user you have set as
@ -11,7 +11,7 @@ general {
# Username
# Make sure the user has read access to the library directories you set
# below, and full access to the databases, log and local audio
uid = "@DAAPD_USER@"
uid = "@OWNTONE_USER@"
# Database location
# db_path = "@localstatedir@/cache/@PACKAGE@/songs3.db"
@ -140,7 +140,7 @@ library {
# name_radio = "Radio"
# Artwork file names (without file type extension)
# forked-daapd will look for jpg and png files with these base names
# OwnTone will look for jpg and png files with these base names
# artwork_basenames = { "artwork", "cover", "Folder" }
# Enable searching for artwork corresponding to each individual media
@ -162,11 +162,11 @@ library {
# filepath_ignore = { "myregex" }
# Disable startup file scanning
# When forked-daapd starts it will do an initial file scan of your
# When OwnTone starts it will do an initial file scan of your
# library (and then watch it for changes). If you are sure your library
# never changes while forked-daapd is not running, you can disable the
# never changes while OwnTone is not running, you can disable the
# initial file scan and save some system ressources. Disabling this scan
# may lead to forked-daapd's database coming out of sync with the
# may lead to OwnTone's database coming out of sync with the
# library. If that happens read the instructions in the README on how
# to trigger a rescan.
# filescan_disable = false
@ -184,7 +184,7 @@ library {
# Decoding options for DAAP clients
# Since iTunes has native support for mpeg, mp4a, mp4v, alac and wav,
# such files will be sent as they are. Any other formats will be decoded
# to raw wav. If forked-daapd detects a non-iTunes DAAP client, it is
# to raw wav. If OwnTone detects a non-iTunes DAAP client, it is
# assumed to only support mpeg and wav, other formats will be decoded.
# Here you can change when to decode. Note that these settings have no
# effect on AirPlay.
@ -216,7 +216,7 @@ library {
# allow_modifying_stored_playlists = false
# A directory in one of the library directories that will be used as the default
# playlist directory. forked-dapd creates new playlists in this directory if only
# playlist directory. OwnTone creates new playlists in this directory if only
# a playlist name is provided (requires "allow_modify_stored_playlists" set to true).
# default_playlist_directory = ""
}
@ -283,7 +283,7 @@ audio {
#}
# Pipe output
# Allows forked-daapd to output audio data to a named pipe
# Allows OwnTone to output audio data to a named pipe
#fifo {
# nickname = "fifo"
# path = "/path/to/fifo"
@ -291,8 +291,9 @@ audio {
# AirPlay settings common to all devices
#airplay_shared {
# UDP ports used when airplay devices make connections back to forked-daapd
# (choosing specific ports may be helpful when running forked-daapd behind a firewall)
# UDP ports used when airplay devices make connections back to
# OwnTone (choosing specific ports may be helpful when running
# OwnTone behind a firewall)
# control_port = 0
# timing_port = 0
#}
@ -300,7 +301,7 @@ audio {
# AirPlay per device settings
# (make sure you get the capitalization of the device name right)
#airplay "My AirPlay device" {
# forked-daapd's volume goes to 11! If that's more than you can handle
# OwnTone's volume goes to 11! If that's more than you can handle
# you can set a lower value here
# max_volume = 11
@ -310,11 +311,11 @@ audio {
# Enable this option to keep a particular AirPlay device in the speaker
# list and thus ignore mdns notifications about it no longer being
# present. The speaker will remain until restart of forked-daapd.
# present. The speaker will remain until restart of OwnTone.
# permanent = false
# Some devices spuriously disconnect during playback, and based on the
# device type forked-daapd may attempt to reconnect. Setting this option
# device type OwnTone may attempt to reconnect. Setting this option
# overrides this so reconnecting is either always enabled or disabled.
# reconnect = false
@ -331,7 +332,7 @@ audio {
# Chromecast settings
# (make sure you get the capitalization of the device name right)
#chromecast "My Chromecast device" {
# forked-daapd's volume goes to 11! If that's more than you can handle
# OwnTone's volume goes to 11! If that's more than you can handle
# you can set a lower value here
# max_volume = 11
@ -387,7 +388,7 @@ mpd {
# work). Set to 0 to disable serving artwork over http.
# http_port = 0
# By default forked-daapd will - like iTunes - clear the playqueue if
# By default OwnTone will - like iTunes - clear the playqueue if
# playback stops. Setting clear_queue_on_stop_disable to true will keep
# the playlist like MPD does. Note that some dacp clients do not show
# the playqueue if playback is stopped.

View File

@ -1,13 +1,13 @@
[Unit]
Description=DAAP/DACP (iTunes), RSP and MPD server, supports AirPlay and Remote
Documentation=man:forked-daapd(8)
Documentation=man:owntone(8)
After=network.target sound.target remote-fs.target pulseaudio.service avahi-daemon.service
[Service]
ExecStart=@sbindir@/forked-daapd -f
ExecStart=@sbindir@/owntone -f
# Constrain the upper limit of memory/swap that can be used; this prevents
# forked-daapd from consuming all system memory (in event of bug/malformed user
# the server from consuming all system memory (in event of bug/malformed user
# curl/SMARTPL query etc) that would hang/freeze low resource and headless (ie
# RPi) machines
#

View File

@ -1,7 +1,7 @@
# @configure_input@
# -*- Mode:rpm-spec -*-
%global username @DAAPD_USER@
%global groupname @DAAPD_GROUP@
%global username @OWNTONE_USER@
%global groupname @OWNTONE_GROUP@
%bcond_without alsa
%bcond_without pulseaudio
@ -12,7 +12,7 @@
%global _hardened_build 1
Summary: iTunes-compatible DAAP server with MPD and RSP support
Name: forked-daapd
Name: owntone
Version: @PACKAGE_VERSION@
Release: 1%{?dist}
License: GPLv2+
@ -51,8 +51,8 @@ BuildRequires: pkgconfig(gnutls)
%{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}-%{version}}
%description
forked-daapd is a DAAP/DACP (iTunes), MPD (Music Player Daemon)
and RSP (Roku) media server.
OwnTone is a DAAP/DACP (iTunes), MPD (Music Player Daemon) and RSP (Roku) media
server.
It has support for AirPlay devices/speakers, Apple Remote (and compatibles),
MPD clients, Chromecast, network streaming, internet radio, Spotify and LastFM.
@ -62,8 +62,6 @@ It does not support streaming video by AirPlay nor Chromecast.
DAAP stands for Digital Audio Access Protocol, and is the protocol used
by iTunes and friends to share/stream media libraries over the network.
forked-daapd is a complete rewrite of mt-daapd (Firefly Media Server).
%prep
%setup -q
@ -83,7 +81,7 @@ mkdir -p %{buildroot}%{homedir}
mkdir -p %{buildroot}%{_localstatedir}/log
touch %{buildroot}%{_localstatedir}/log/%{name}.log
mkdir -p %{buildroot}%{_unitdir}
install -m 0644 forked-daapd.service %{buildroot}%{_unitdir}/%{name}.service
install -m 0644 owntone.service %{buildroot}%{_unitdir}/%{name}.service
rm -f %{buildroot}%{_libdir}/%{name}/*.la
%pre
@ -106,8 +104,8 @@ exit 0
%{!?_licensedir:%global license %%doc}
%license COPYING
%{_pkgdocdir}
%config(noreplace) %{_sysconfdir}/forked-daapd.conf
%{_sbindir}/forked-daapd
%config(noreplace) %{_sysconfdir}/owntone.conf
%{_sbindir}/owntone
%{_libdir}/%{name}/
%{_datarootdir}/%{name}/
%{_unitdir}/%{name}.service

View File

@ -2,7 +2,7 @@
# Credit thorsteneckel who made the how-to that is the basis for this
# script, see https://gist.github.com/thorsteneckel/c0610fb415c8d0486bce
echo "This script will install forked-daapd in FreeBSD 11.0. The script is not"
echo "This script will install OwnTone in FreeBSD 11.0. The script is not"
echo "very polished, so you might want to look through it before running it."
read -p "Continue? [y/N] " yn
if [ "$yn" != "y" ]; then
@ -32,8 +32,8 @@ if [ "$yn" = "y" ]; then
fi
fi
WORKDIR=~/forked-daapd_build
CONFIG=/usr/local/etc/forked-daapd.conf
WORKDIR=~/owntone_build
CONFIG=/usr/local/etc/owntone.conf
read -p "Should the script create $WORKDIR and use it for building? [Y/n] " yn
if [ "$yn" = "n" ]; then
exit
@ -69,10 +69,10 @@ CLASSPATH=\$CLASSPATH:/usr/local/share/java/antlr-3.4-complete.jar:/usr/local/sh
cd $WORKDIR
fi
read -p "Should the script build forked-daapd? [y/N] " yn
read -p "Should the script build owntone? [y/N] " yn
if [ "$yn" = "y" ]; then
git clone https://github.com/owntone/owntone-server.git
cd forked-daapd
cd owntone-server
#Cleanup in case this is a re-run
gmake clean
@ -90,7 +90,7 @@ if [ "$yn" = "y" ]; then
export LDFLAGS="-L/usr/local/lib -L/usr/lib"
./configure && gmake
read -p "Should the script install forked-daapd and add service startup scripts? [y/N] " yn
read -p "Should the script install owntone and add service startup scripts? [y/N] " yn
if [ "$yn" = "y" ]; then
if [ -f $CONFIG ]; then
echo "Backing up old config file to $CONFIG.bak"
@ -100,17 +100,17 @@ if [ "$yn" = "y" ]; then
sudo sed -i -- 's/\/var\/cache/\/usr\/local\/var\/cache/g' $CONFIG
# Setup user and startup scripts
echo "daapd::::::forked-daapd:/nonexistent:/usr/sbin/nologin:" | sudo adduser -w no -D -f -
sudo chown -R daapd:daapd /usr/local/var/cache/forked-daapd
echo "owntone::::::owntone:/nonexistent:/usr/sbin/nologin:" | sudo adduser -w no -D -f -
sudo chown -R owntone:owntone /usr/local/var/cache/owntone
if [ ! -f scripts/freebsd_start_10.1.sh ]; then
echo "Could not find FreeBSD startup script"
exit
fi
sudo install -m 755 scripts/freebsd_start_10.1.sh /usr/local/etc/rc.d/forked-daapd
sudo install -m 755 scripts/freebsd_start_10.1.sh /usr/local/etc/rc.d/owntone
service forked-daapd enabled
service owntone enabled
if [ $? -ne 0 ]; then
sudo sh -c 'echo "forked_daapd_enable=\"YES\"" >> /etc/rc.conf'
sudo sh -c 'echo "owntone_enable=\"YES\"" >> /etc/rc.conf'
fi
fi
@ -132,8 +132,8 @@ if [ "$yn" = "y" ]; then
sudo service avahi-daemon start
fi
read -p "Should the script (re)start forked-daapd and display the log output? [y/N] " yn
read -p "Should the script (re)start owntone and display the log output? [y/N] " yn
if [ "$yn" = "y" ]; then
sudo service forked-daapd restart
tail -f /usr/local/var/log/forked-daapd.log
sudo service owntone restart
tail -f /usr/local/var/log/owntone.log
fi

View File

@ -1,25 +1,25 @@
#!/bin/sh
# PROVIDE: forked-daapd
# PROVIDE: owntone
# REQUIRE: avahi_daemon dbus
# Add the following lines to /etc/rc.conf to enable `forked-daapd':
# Add the following lines to /etc/rc.conf to enable `owntone':
#
# forked_daapd_enable="YES"
# forked_daapd_flags="<set as needed>"
# owntone_enable="YES"
# owntone_flags="<set as needed>"
. /etc/rc.subr
name="forked_daapd"
name="owntone"
rcvar=`set_rcvar`
command="/usr/local/sbin/forked-daapd"
command_args="-P /var/run/forked-daapd.pid"
pidfile="/var/run/forked-daapd.pid"
required_files="/usr/local/etc/forked-daapd.conf"
command="/usr/local/sbin/owntone"
command_args="-P /var/run/owntone.pid"
pidfile="/var/run/owntone.pid"
required_files="/usr/local/etc/owntone.conf"
# read configuration and set defaults
load_rc_config "$name"
: ${forked_daapd_enable="NO"}
: ${owntone_enable="NO"}
run_rc_command "$1"

View File

@ -1,9 +1,9 @@
pkglib_LTLIBRARIES = forked-daapd-sqlext.la
pkglib_LTLIBRARIES = owntone-sqlext.la
forked_daapd_sqlext_la_SOURCES = sqlext.c
forked_daapd_sqlext_la_LDFLAGS = -avoid-version -module -shared
owntone_sqlext_la_SOURCES = sqlext.c
owntone_sqlext_la_LDFLAGS = -avoid-version -module -shared
AM_CPPFLAGS += \
$(COMMON_CPPFLAGS)
forked_daapd_sqlext_la_LIBADD = \
owntone_sqlext_la_LIBADD = \
$(COMMON_LIBS)

View File

@ -214,7 +214,7 @@ expr returns [ pANTLR3_STRING result, int valid ]
goto STR_result_valid_0; /* ABORT */
}
/* No need to exclude empty artist and album, as forked-daapd makes sure there always exists an artist/album. */
/* No need to exclude empty artist and album, as the server makes sure there always exists an artist/album. */
if (neg_op && (op == ':' || op == '@')
&& (strcmp((char *)field, "daap.songalbumartist") == 0
|| strcmp((char *)field, "daap.songartist") == 0
@ -255,7 +255,7 @@ expr returns [ pANTLR3_STRING result, int valid ]
*end = '\0'; /* Cut out potential garbage - we're being kind */
/* forked-daapd only has media_kind = 1 for music - so remove media_kind = 32 to imporve select query performance. */
/* The server only has media_kind = 1 for music - so remove media_kind = 32 to imporve select query performance. */
if (llval == 32
&& (strcmp((char *)field, "com.apple.itunes.mediakind") == 0
|| strcmp((char *)field, "com.apple.itunes.extended-media-kind") == 0))

View File

@ -1,5 +1,5 @@
sbin_PROGRAMS = forked-daapd
sbin_PROGRAMS = owntone
if COND_SPOTIFY
SPOTIFY_SRC=spotify.c spotify.h spotify_webapi.c spotify_webapi.h inputs/spotify.c
@ -75,8 +75,8 @@ ANTLR_OBJECTS = \
SMARTPLLexer.$(OBJEXT) SMARTPLParser.$(OBJEXT) SMARTPL2SQL.$(OBJEXT)
AM_CPPFLAGS += \
$(FORKED_CPPFLAGS) \
$(FORKED_OPTS_CPPFLAGS) \
$(OWNTONE_CPPFLAGS) \
$(OWNTONE_OPTS_CPPFLAGS) \
$(COMMON_CPPFLAGS) \
\
-D_GNU_SOURCE \
@ -85,12 +85,12 @@ AM_CPPFLAGS += \
-DSTATEDIR=\"$(localstatedir)\" \
-DPKGLIBDIR=\"$(pkglibdir)\"
forked_daapd_LDADD = \
$(FORKED_LIBS) \
$(FORKED_OPTS_LIBS) \
owntone_LDADD = \
$(OWNTONE_LIBS) \
$(OWNTONE_OPTS_LIBS) \
$(COMMON_LIBS)
forked_daapd_SOURCES = main.c \
owntone_SOURCES = main.c \
db.c db.h \
db_init.c db_init.h \
db_upgrade.c db_upgrade.h \

View File

@ -7,7 +7,7 @@
#include <confuse.h>
#define CONFFILE CONFDIR "/forked-daapd.conf"
#define CONFFILE CONFDIR "/owntone.conf"
// Some shorthand macros for poor man's
#define CFG_NAME_UNKNOWN_TITLE (cfg_getstr(cfg_getsec(cfg, "library"), "name_unknown_title"))

View File

@ -2700,7 +2700,7 @@ db_file_inc_playcount_byfilter(const char *filter)
#define Q_TMPL "UPDATE files SET play_count = play_count + 1, time_played = %" PRIi64 ", seek = 0 WHERE %s;"
/*
* Rating calculation is taken from from the beets plugin "mpdstats" (see https://beets.readthedocs.io/en/latest/plugins/mpdstats.html)
* and adapted to the forked-daapd rating rage (0 to 100).
* and adapted to this servers rating rage (0 to 100).
*
* Rating consist of the stable rating and a rolling rating.
* The stable rating is calculated based on the number was played and skipped:
@ -6807,7 +6807,7 @@ db_open(void)
}
errmsg = NULL;
ret = sqlite3_load_extension(hdl, PKGLIBDIR "/forked-daapd-sqlext.so", NULL, &errmsg);
ret = sqlite3_load_extension(hdl, PKGLIBDIR "/" PACKAGE_NAME "-sqlext.so", NULL, &errmsg);
if (ret != SQLITE_OK)
{
if (errmsg)

View File

@ -21,10 +21,10 @@
#include <sqlite3.h>
/* Rule of thumb: Will the current version of forked-daapd work with the new
/* Rule of thumb: Will the current version of the server work with the new
* version of the database? If yes, then it is a minor upgrade, if no, then it
* is a major upgrade. In other words minor version upgrades permit downgrading
* forked-daapd after the database was upgraded. */
* the server after the database was upgraded. */
#define SCHEMA_VERSION_MAJOR 21
#define SCHEMA_VERSION_MINOR 06

View File

@ -753,7 +753,7 @@ evrtsp_request_dispatch(struct evrtsp_connection* evcon)
/* Create the header from the store arguments */
evrtsp_make_header(evcon, req);
/* forked-daapd customisation for encryption */
/* owntone customisation for encryption */
if (!evcon->ciphercb)
evbuffer_add_buffer(evcon->output_raw, evcon->output_buffer);
else

View File

@ -1775,7 +1775,7 @@ httpd_init(const char *webroot)
ret = net_evhttp_bind(evhttpd, httpd_port, "httpd");
if (ret < 0)
{
DPRINTF(E_FATAL, L_HTTPD, "Could not bind to port %d (forked-daapd already running?)\n", httpd_port);
DPRINTF(E_FATAL, L_HTTPD, "Could not bind to port %d (server already running?)\n", httpd_port);
goto bind_fail;
}

View File

@ -2301,7 +2301,7 @@ daap_request(struct evhttp_request *req, struct httpd_uri_parsed *uri_parsed)
// Set reply headers
headers = evhttp_request_get_output_headers(req);
evhttp_add_header(headers, "Accept-Ranges", "bytes");
evhttp_add_header(headers, "DAAP-Server", "forked-daapd/" VERSION);
evhttp_add_header(headers, "DAAP-Server", PACKAGE_NAME "/" VERSION);
// Content-Type for all replies, even the actual audio streaming. Note that
// video streaming will override this Content-Type with a more appropriate
// video/<type> Content-Type as expected by clients like Front Row.

View File

@ -2868,7 +2868,7 @@ dacp_request(struct evhttp_request *req, struct httpd_uri_parsed *uri_parsed)
}
headers = evhttp_request_get_output_headers(req);
evhttp_add_header(headers, "DAAP-Server", "forked-daapd/" VERSION);
evhttp_add_header(headers, "DAAP-Server", PACKAGE_NAME "/" VERSION);
/* Content-Type for all DACP replies; can be overriden as needed */
evhttp_add_header(headers, "Content-Type", "application/x-dmap-tagged");

View File

@ -769,7 +769,7 @@ jsonapi_reply_config(struct httpd_request *hreq)
#endif
json_object_object_add(jreply, "websocket_port", json_object_new_int(websocket_port));
// forked-daapd version
// server version
json_object_object_add(jreply, "version", json_object_new_string(VERSION));
// enabled build options
@ -1212,7 +1212,7 @@ jsonapi_reply_spotify(struct httpd_request *hreq)
json_object_object_add(jreply, "enabled", json_object_new_boolean(true));
httpd_port = cfg_getint(cfg_getsec(cfg, "library"), "port");
snprintf(redirect_uri, sizeof(redirect_uri), "http://forked-daapd.local:%d/oauth/spotify", httpd_port);
snprintf(redirect_uri, sizeof(redirect_uri), "http://owntone.local:%d/oauth/spotify", httpd_port);
oauth_uri = spotifywebapi_oauth_uri_get(redirect_uri);
if (!oauth_uri)
@ -2189,7 +2189,7 @@ queue_item_to_json(struct db_queue_item *queue_item, char shuffle)
|| strncmp(queue_item->artwork_url, "https://", strlen("https://")) == 0))
{
// The queue item contains a valid http url for an artwork image, there is no need
// for the client to request the image through the forked-daapd artwork handler.
// for the client to request the image through the server artwork handler.
// Directly pass the artwork url to the client.
safe_json_add_string(item, "artwork_url", queue_item->artwork_url);
}

View File

@ -50,7 +50,7 @@ oauth_reply_spotify(struct httpd_request *hreq)
httpd_port = cfg_getint(cfg_getsec(cfg, "library"), "port");
snprintf(redirect_uri, sizeof(redirect_uri), "http://forked-daapd.local:%d/oauth/spotify", httpd_port);
snprintf(redirect_uri, sizeof(redirect_uri), "http://owntone.local:%d/oauth/spotify", httpd_port);
ret = spotifywebapi_oauth_callback(hreq->query, redirect_uri, &errmsg);
if (ret < 0)
{
@ -68,9 +68,9 @@ oauth_reply_spotify(struct httpd_request *hreq)
static int
oauth_reply_spotify(struct httpd_request *hreq)
{
DPRINTF(E_LOG, L_WEB, "This version of forked-daapd was built without support for Spotify\n");
DPRINTF(E_LOG, L_WEB, "This version was built without support for Spotify\n");
httpd_send_error(hreq->req, HTTP_NOTFOUND, "This version of forked-daapd was built without support for Spotify");
httpd_send_error(hreq->req, HTTP_NOTFOUND, "This version was built without support for Spotify");
return -1;
}

View File

@ -568,7 +568,7 @@ streaming_request(struct evhttp_request *req, struct httpd_uri_parsed *uri_parse
output_headers = evhttp_request_get_output_headers(req);
evhttp_add_header(output_headers, "Content-Type", "audio/mpeg");
evhttp_add_header(output_headers, "Server", "forked-daapd/" VERSION);
evhttp_add_header(output_headers, "Server", PACKAGE_NAME "/" VERSION);
evhttp_add_header(output_headers, "Cache-Control", "no-cache");
evhttp_add_header(output_headers, "Pragma", "no-cache");
evhttp_add_header(output_headers, "Expires", "Mon, 31 Aug 2015 06:00:00 GMT");

View File

@ -76,7 +76,7 @@
// Ignore pictures with larger size than this
#define PIPE_PICTURE_SIZE_MAX 1048576
// Where we store pictures for the artwork module to read
#define PIPE_TMPFILE_TEMPLATE "/tmp/forked-daapd.XXXXXX.ext"
#define PIPE_TMPFILE_TEMPLATE "/tmp/" PACKAGE_NAME ".XXXXXX.ext"
#define PIPE_TMPFILE_TEMPLATE_EXTLEN 4
enum pipetype

View File

@ -49,8 +49,8 @@
static bool lastfm_disabled = false;
/**
* The API key and secret (not so secret being open source) is specific to
* forked-daapd, and is used to identify forked-daapd and to sign requests
* The API key and secret (not so secret being open source) is specific to us,
* and is used to identify client and to sign requests.
*/
static const char *lastfm_api_key = "579593f2ed3f49673c7364fd1c9c829b";
static const char *lastfm_secret = "ce45a1d275c10b3edf0ecfa27791cb2b";

View File

@ -816,7 +816,7 @@ library(void *arg)
#ifdef __linux__
struct sched_param param;
/* Lower the priority of the thread so forked-daapd may still respond
/* Lower the priority of the thread so the server may still respond
* during library scan on low power devices. Param must be 0 for the SCHED_BATCH
* policy.
*/

View File

@ -224,7 +224,7 @@ static const struct metadata_map md_map_vorbis[] =
* Update 20180131: Removed tags supported by ffmpeg 2.5.4 (around 3 years old)
* + added some tags used for grouping
* Update 20200114: Removed TDA, TDAT, TYE, TYER, TDR since the they are
* well supported by ffmpeg, and forked-daapd was parsing TDA/TDAT incorrectly
* well supported by ffmpeg, and the server was parsing TDA/TDAT incorrectly
*
*/
static const struct metadata_map md_map_id3[] =

View File

@ -637,7 +637,7 @@ main(int argc, char **argv)
/* Set up libevent logging callback */
event_set_log_callback(logger_libevent);
DPRINTF(E_LOG, L_MAIN, "Forked Media Server Version %s taking off\n", VERSION);
DPRINTF(E_LOG, L_MAIN, "OwnTone version %s taking off\n", VERSION);
DPRINTF(E_LOG, L_MAIN, "Built with:\n");
buildopts = buildopts_get();
@ -858,7 +858,9 @@ main(int argc, char **argv)
/* Register this CNAME with mDNS for OAuth */
if (!mdns_no_cname)
mdns_cname("forked-daapd.local");
{
mdns_cname("owntone.local");
}
#ifdef HAVE_SIGNALFD
/* Set up signal fd */

View File

@ -49,7 +49,7 @@ mdns_register(char *name, char *type, int port, char **txt);
* Register a CNAME record, it will be an alias for hostname
* Call only from the main thread!
*
* @in name The CNAME alias, e.g. "forked-daapd.local"
* @in name The CNAME alias, e.g. "myserver.local"
* @return 0 on success, -1 on error
*/
int

View File

@ -897,7 +897,7 @@ create_group_entry(struct mdns_group_entry *ge, int commit)
return -1;
}
// Convert to dns string: .forked-daapd.local -> \12forked-daapd\6local
// Convert to dns string: .myserver.local -> \12myserver\6local
count = 0;
for (i = ret - 1; i >= 0; i--)
{

View File

@ -516,7 +516,7 @@ mdns_cname(char *name)
return -1;
}
// Convert to dns string: .forked-daapd.local -> \12forked-daapd\6local
// Convert to dns string: .myserver.local -> \12myserver\6local
count = 0;
for (i = ret - 1; i >= 0; i--)
{

View File

@ -352,7 +352,7 @@ net_evhttp_bind(struct evhttp *evhttp, short unsigned port, const char *log_serv
{
if (!v6enabled)
{
DPRINTF(E_FATAL, L_HTTPD, "Could not bind to port %d (forked-daapd already running?)\n", httpd_port);
DPRINTF(E_FATAL, L_HTTPD, "Could not bind to port %d (server already running?)\n", httpd_port);
goto bind_fail;
}

View File

@ -117,7 +117,7 @@ enum command_list_type
* This lists for ffmpeg suffixes and mime types are taken from the ffmpeg decoder plugin from mpd
* (FfmpegDecoderPlugin.cxx, git revision 9fb351a139a56fc7b1ece549894f8fc31fa887cd).
*
* forked-daapd does not support different decoders and always uses ffmpeg or libav for decoding.
* The server does not support different decoders and always uses ffmpeg or libav for decoding.
* Some clients rely on a response for the decoder commands (e.g. ncmpccp) therefor return something
* valid for this command.
*/
@ -704,7 +704,7 @@ parse_filter_window_params(int argc, char **argv, bool exact_match, struct query
if (!tagtype)
{
DPRINTF(E_WARN, L_MPD, "Parameter '%s' is not supported by forked-daapd and will be ignored\n", argv[i]);
DPRINTF(E_WARN, L_MPD, "Parameter '%s' is not supported and will be ignored\n", argv[i]);
continue;
}
@ -1210,8 +1210,8 @@ mpd_command_setvol(struct evbuffer *evbuf, int argc, char **argv, char **errmsg,
/*
* Command handler function for 'single'
* Sets the repeat mode, expects argument argv[1] to be an integer.
* forked-daapd only allows single-mode in combination with repeat, therefor the command
* single translates (depending on the current repeat mode) into:
* The server only allows single-mode in combination with repeat, therefore
* the command single translates (depending on the current repeat mode) into:
* a) if repeat off:
* 0 = repeat off
* 1 = repeat song
@ -1250,7 +1250,7 @@ mpd_command_single(struct evbuffer *evbuf, int argc, char **argv, char **errmsg,
/*
* Command handler function for 'replay_gain_status'
* forked-daapd does not support replay gain, therefor this function returns always
* The server does not support replay gain, therefor this function returns always
* "replay_gain_mode: off".
*/
static int
@ -1441,7 +1441,7 @@ mpd_command_playid(struct evbuffer *evbuf, int argc, char **argv, char **errmsg,
id = 0;
if (argc > 1)
{
//TODO [mpd] mpd allows passing "-1" as argument and simply ignores it, forked-daapd fails to convert "-1" to an unsigned int
//TODO [mpd] mpd allows passing "-1" as argument and simply ignores it, the server fails to convert "-1" to an unsigned int
ret = safe_atou32(argv[1], &id);
if (ret < 0)
{
@ -3932,7 +3932,7 @@ mpd_command_sendmessage(struct evbuffer *evbuf, int argc, char **argv, char **er
}
/*
* Dummy function to handle commands that are not supported by forked-daapd and should
* Dummy function to handle commands that are not supported and should
* not raise an error.
*/
static int
@ -4000,7 +4000,7 @@ mpd_command_urlhandlers(struct evbuffer *evbuf, int argc, char **argv, char **er
* Command handler function for 'decoders'
* MPD returns the decoder plugins with their supported suffix and mime types.
*
* forked-daapd only uses libav/ffmepg for decoding and does not support decoder plugins,
* The server only uses libav/ffmepg for decoding and does not support decoder plugins,
* therefor the function reports only ffmpeg as available.
*/
static int
@ -4166,7 +4166,7 @@ static struct mpd_command mpd_handlers[] =
{ "readmessages", mpd_command_ignore, -1 },
{ "sendmessage", mpd_command_sendmessage, -1 },
// Forked-daapd commands (not supported by mpd)
// Custom commands (not supported by mpd)
{ "outputvolume", mpd_command_outputvolume, 3 },
// NULL command to terminate loop
@ -4637,7 +4637,7 @@ mpd_listener_cb(short event_mask)
*
* Artwork is found by taking the uri and removing everything after the last '/'. The first
* item in the library with a virtual path that matches *path/to* is used to read the artwork
* file through the default forked-daapd artwork logic.
* file through the default artwork logic.
*/
static void
artwork_cb(struct evhttp_request *req, void *arg)

View File

@ -237,7 +237,7 @@ struct output_definition
// Request a change of quality from the device
int (*device_quality_set)(struct output_device *device, struct media_quality *quality, int callback_id);
// Authorize forked-daapd to use the device
// Authorize the server to use the device
int (*device_authorize)(struct output_device *device, const char *pin, int callback_id);
// Change the call back associated with a device

View File

@ -264,7 +264,7 @@ struct airplay_session
unsigned short data_port;
unsigned short control_port;
unsigned short events_port;
unsigned short timing_port; // ATV4 has this set to 0, but it is not used by forked-daapd anyway
unsigned short timing_port; // ATV4 has this set to 0, but it is not used by us anyway
/* Pairing, see pair.h */
enum pair_type pair_type;

View File

@ -351,7 +351,7 @@ struct cast_msg_basic cast_msg[] =
.type = CONNECT,
.namespace = NS_CONNECTION,
.payload = "{'type':'CONNECT'}",
// msg.payload_utf8 = "{\"origin\":{},\"userAgent\":\"forked-daapd\",\"type\":\"CONNECT\",\"senderInfo\":{\"browserVersion\":\"44.0.2403.30\",\"version\":\"15.605.1.3\",\"connectionType\":1,\"platform\":4,\"sdkType\":2,\"systemVersion\":\"Macintosh; Intel Mac OS X10_10_3\"}}";
// msg.payload_utf8 = "{\"origin\":{},\"userAgent\":\"owntone\",\"type\":\"CONNECT\",\"senderInfo\":{\"browserVersion\":\"44.0.2403.30\",\"version\":\"15.605.1.3\",\"connectionType\":1,\"platform\":4,\"sdkType\":2,\"systemVersion\":\"Macintosh; Intel Mac OS X10_10_3\"}}";
},
{
.type = CLOSE,
@ -439,7 +439,7 @@ struct cast_msg_basic cast_msg[] =
{
.type = PRESENTATION,
.namespace = NS_WEBRTC,
.payload = "{'type':'PRESENTATION','sessionId':'%s','seqNum':%u,'title':'forked-daapd','icons':[{'url':'http://www.gyfgafguf.dk/images/fugl.jpg'}] }",
.payload = "{'type':'PRESENTATION','sessionId':'%s','seqNum':%u,'title':'" PACKAGE_NAME "','icons':[{'url':'http://www.gyfgafguf.dk/images/fugl.jpg'}] }",
.flags = USE_TRANSPORT_ID | USE_REQUEST_ID,
},
{

View File

@ -18,7 +18,7 @@
/* This file includes much of the boilerplate code required for making an
* audio output for forked-daapd.
* audio output.
*/
#ifdef HAVE_CONFIG_H

View File

@ -595,7 +595,7 @@ stream_open(struct pulse_session *ps, struct media_quality *quality, pa_stream_n
pa_threaded_mainloop_lock(pulse.mainloop);
if (!(ps->stream = pa_stream_new(pulse.context, "forked-daapd audio", &ss, NULL)))
if (!(ps->stream = pa_stream_new(pulse.context, PACKAGE_NAME " audio", &ss, NULL)))
goto unlock_and_fail;
pa_stream_set_state_callback(ps->stream, cb, ps);
@ -932,7 +932,7 @@ pulse_init(void)
pa_threaded_mainloop_set_name(pulse.mainloop, "pulseaudio");
#endif
if (!(pulse.context = pa_context_new(pa_threaded_mainloop_get_api(pulse.mainloop), "forked-daapd")))
if (!(pulse.context = pa_context_new(pa_threaded_mainloop_get_api(pulse.mainloop), PACKAGE_NAME)))
goto fail;
pa_context_set_state_callback(pulse.context, context_state_cb, NULL);

View File

@ -211,7 +211,7 @@ struct raop_session
/* AirTunes v2 */
unsigned short server_port;
unsigned short control_port;
unsigned short timing_port; // ATV4 has this set to 0, but it is not used by forked-daapd anyway
unsigned short timing_port; // ATV4 has this set to 0, but it is not used by us anyway
/* Device verification, see pair.h */
struct pair_verify_context *pair_verify_ctx;

View File

@ -28,7 +28,7 @@
* - maintain the playback queue
*
* The player thread should never be making operations that may block, since
* that could block callers requesting status (effectively making forked-daapd
* that could block callers requesting status (effectively making the server
* unresponsive) and it could also starve the outputs. In practice this rule is
* not always obeyed, for instance some outputs do their setup in ways that
* could block.

View File

@ -76,7 +76,7 @@ struct player_history
/* Count of song ids in the buffer */
unsigned int count;
/* Circular buffer of song ids previously played by forked-daapd */
/* Circular buffer of song ids previously played */
uint32_t id[MAX_HISTORY_COUNT];
uint32_t item_id[MAX_HISTORY_COUNT];
};

View File

@ -1790,8 +1790,8 @@ initscan()
if (ret < 0)
{
DPRINTF(E_LOG, L_SPOTIFY, "Spotify webapi token refresh failed. "
"In order to use the web api, authorize forked-daapd to access "
"your saved tracks by visiting http://forked-daapd.local:3689\n");
"In order to use the web api, authorize the server to access "
"your saved tracks by visiting http://owntone.local:3689\n");
db_spotify_purge();
@ -1808,7 +1808,7 @@ initscan()
if (ret < 0)
{
DPRINTF(E_LOG, L_SPOTIFY, "libspotify-login failed. In order to use Spotify, "
"provide valid credentials for libspotify by visiting http://forked-daapd.local:3689\n");
"provide valid credentials for libspotify by visiting http://owntone.local:3689\n");
db_spotify_purge();