4165 Commits

Author SHA1 Message Date
ejurgensen
8b842be17f [evrtsp] Add support for SETPEERS and GET 2021-01-10 14:45:39 +01:00
ejurgensen
4621d25aaa [logger] Add DHEXDUMP() for logging raw data
Substitute for Wireshark when the data exchange is encrypted
2021-01-10 14:45:39 +01:00
Christian Meffert
724cfa0093
Merge pull request #1134 from chme/podcast-updates
[library] Directly notify listeners of db changes after adding new items
2021-01-09 11:21:42 +01:00
ejurgensen
506959985b [xcode] Treat Apple Music like iTunes (closes #1152) 2020-12-26 12:57:43 +01:00
ejurgensen
14756c0d59 [outputs] Add nickname option for Airplay/Chromecast speakers (issue #1145) 2020-12-15 21:45:58 +01:00
ejurgensen
76cd982201 [rtsp] Shorten evrtsp timeouts, 45-50 sec is too long 2020-12-11 17:12:31 +01:00
ejurgensen
1d5691be2f [artwork] Refactor artwork_get() and fix issue #1139
artwork_get() would return error for non-file images that shouldn't be
rescaled, which was a bit weird. This makes artwork_get() more straight-
forward.

Also fix issue #1139 simply by not calling artwork_get() in cases were
queue_item->artwork_url is an old temp file (in source_item_pipe_get).
2020-11-28 21:27:58 +01:00
ejurgensen
d1a1f6c59c [pipe] Log when artwork is written to temp file 2020-11-28 21:27:58 +01:00
whatdoineed2do/Ray
4082f9e215 [library] Add function to delete playlist by id that directly
invalidates the REST API client caches
2020-11-28 08:27:52 +01:00
Justin Wong
0f5393633a Check utf-8 in metadata_packet_get 2020-11-23 23:31:00 +08:00
chme
59bac6b068 [mpd] Add missing OK response line, if multiple commands are sent
without beeing wrapped in a command list
2020-11-22 11:33:40 +01:00
chme
ccaa7967bf [mpd] Fix nextsong/nextsongid in status cmd response 2020-11-22 11:33:40 +01:00
chme
3fbe16ac1b [library] Directly notify listeners of db changes after adding new items 2020-11-22 11:09:31 +01:00
chme
13e8103962 [httpd/spotify] Remove redirect to legacy admin.html page 2020-11-22 10:27:10 +01:00
ejurgensen
b6a686866a [xcode] Retry with default probe size if quick probe fails (issue #1126) 2020-11-21 20:40:30 +01:00
ejurgensen
04fa902b01 [xcode] Change open_input() to return ffmpeg error 2020-11-21 20:40:30 +01:00
ejurgensen
eea3a3bd27 [xcode] Fix memleak on open input error 2020-11-21 20:40:30 +01:00
whatdoineed2do/Ray
2e69f5dac6 [rss] defer playlistitems purge til ready to update with new rss
Current impl fetches pl, purge pl items, fetch RSS, inserts entries.  If the RSS
fetch fails (remote server is temporary unreachable) the playlistitems for that
RSS are all dropped.

This has a side effect that RSS playlists cannot be determined from tracks (see
issue #1126) and thus cannot be deleted.

Simple fix to defer playlist item purge to the point that the RSS fetch is ok
and before the inserts
2020-11-21 14:01:39 +00:00
ejurgensen
695927de2a [artwork] Remove old artwork_get_xxx in favor of new which has a format arg 2020-11-18 23:23:05 +01:00
ejurgensen
a9e6497be2 [cast] Increase packet buffer 2020-11-18 23:13:00 +01:00
ejurgensen
572c15a04d [cast] Remove some unused MEDIA_xxx commands 2020-11-18 23:13:00 +01:00
ejurgensen
bb8719718a [cast] Rename state enums, don't use MEDIA any more 2020-11-18 23:13:00 +01:00
ejurgensen
d5f5e312ab [cast] Add config option for max_volume, like for Airplay 2020-11-18 23:13:00 +01:00
ejurgensen
c21266d26f [cast] Use RTCP ACKs/nACKs from device to control how packets are sent
Previously we just sent packets when ready, which especially during startup
meant a largish number of packets got sent rapidly. This seemed to cause audio
glitches. With this change the rate is adapted to follow ACKs from the device,
which is more in line with Chromium's way, though still far from the same.

Also added capability to resend packets when a nACK is received.

Also some wip attempts at sending coverart as VP8 video.
2020-11-18 23:13:00 +01:00
ejurgensen
dff64e3dd0 [raop] Remove endian includes, now included via rtp_common.h 2020-11-18 23:13:00 +01:00
ejurgensen
06d1d7273d [player] Add a basic RTCP parser for Chromecast packets
Also put the endian includes in the header, both raop.c and cast.c will need
them.
2020-11-18 23:13:00 +01:00
ejurgensen
cd9fa019dd [misc] Add NTOSTR() macro
Get the string value of a number definition
2020-11-18 23:13:00 +01:00
ejurgensen
5929938a18 [outputs] RTP: Distinguish clearly between payload type and marker bit
Also make quality an optional input to rtp_session_new(), since it isn't
required internally by the RTP module.
2020-11-18 23:13:00 +01:00
ejurgensen
2098349fdb [artwork] Add ability to request a specific image format 2020-11-18 23:13:00 +01:00
ejurgensen
7e106aec09 [xcode] Add VP8 encoding profile 2020-11-18 23:13:00 +01:00
ejurgensen
a11ab808b2 [cast] Make fake announcement of video stream (fixes #1092)
For unknown reasons some Chromecast devices disconnect causing a TLS error if
we don't OFFER a video stream. Seems actually sending video isn't required to
fix the issue.
2020-11-18 23:13:00 +01:00
ejurgensen
db43d51568 [xcode] Explicitly set the frame duration of OPUS packets to 20 ms
Protect against errors in case future versions of ffmpeg change default
2020-11-18 23:13:00 +01:00
ejurgensen
ad4b886a11 [cast] Make GET_CAPABILITIES request in debug mode
Note that not all devices support this request
2020-11-18 23:13:00 +01:00
ejurgensen
92953f1a2c [cast] Use unsigned ints for ID's so we don't risk negative values
ssrc_id could become negative because rtp_session.ssrc_id is uint32, but we
were printing it with %d.
2020-11-18 23:13:00 +01:00
ejurgensen
504a66a315 [cast] Add some comments 2020-11-18 23:13:00 +01:00
Christian Meffert
22a4af7b93
Merge pull request #1111 from whatdoineed2do/disable-playlist-caching
[db] playlist cache invalidation fix
2020-11-07 08:43:07 +01:00
ejurgensen
745fee4eb9 [db] Remove unused macro STR() 2020-11-05 23:02:44 +01:00
ejurgensen
6eb01f8ffc [outputs] Remove incorrect NULL return if packet buffer seqnum is 0
Since seqnum wraps around it should be ok to call rtp_packet_get() even when
session->seqnum is 0.
2020-11-03 23:44:22 +01:00
whatdoineed2do/Ray
7917695676 [db] add LISTENER_DATABASE for db_pl_*() on CRUD 2020-11-03 10:12:42 +00:00
whatdoineed2do/Ray
827921a028 [db] update db_statement_run() to accepts update events like db_query_run() 2020-11-03 09:28:14 +00:00
nia
4cdeb1afea Remove unnecessary check for FreeBSD
The non-timerfd code path depends on SIGALRM being defined, so signal.h
always needs to be included.

This allows forked-daapd to build and run on NetBSD and probably other
BSD systems too.
2020-11-02 15:07:17 +01:00
Christian Meffert
3395773c9f
Merge pull request #1105 from chme/rescan-metadata
[spotify] Force metadata update on library "metarescan" update
2020-10-24 09:57:40 +02:00
ejurgensen
c20b85a6d9 [artwork] Always stash results of http requests in cache, even if negative
This is an attempt to be nice to peers, so that we don't make many similar
requests to e.g. Discogs. This could happen via proces_items() for an album
where we have the same artwork url for each track, and if it was 404 we
would continue attempting the same request for each track.
2020-10-20 23:22:49 +02:00
ejurgensen
0383f19e9f [artwork] Avoid repeating online search requests with same query
This changes online_source_search_check_last() so that it also works if the
last search query was unsuccesful, i.e. last_artwork_url was NULL.
2020-10-19 22:34:26 +02:00
ejurgensen
f48fae20e2 [db] Remove unused db_speaker_clear_all() 2020-10-19 20:39:03 +02:00
ejurgensen
d2d9b78ae7 [player] Don't unselect disappeared speakers on exit/restart
With the new speaker selection philosophy we aim to preserve user choice, so we
shouldn't unselect speakers just because they happen to be switched off when
the server is restarted.
2020-10-19 20:36:32 +02:00
ejurgensen
ce9fbff8f5 [artwork] Use cache stash to avoid making repeated requests
E.g. for an album we would for each track request artwork from Spotify, even
though the requests are similar and the first one didn't give a result.
2020-10-19 20:25:01 +02:00
ejurgensen
3233aefa8a [scan] Improve logging of inotify events 2020-10-19 20:24:31 +02:00
chme
bda2cff5db [spotify] Force metadata update on library "metarescan" update 2020-10-18 10:35:51 +02:00
chme
d29f56f3eb [httpd] Add "max-age=0" to Cache-Control header to force browsers to
always revalidate cached content
2020-09-27 19:13:07 +02:00