109 Commits

Author SHA1 Message Date
Christian Meffert
27c9224f69 [listener] Support passing context arg to listener callbacks 2024-12-27 13:54:49 +01:00
ejurgensen
4a08644806 [xcode] Change the signature of transcode_setup/transcode_en/decode_setup()
Should make it easier to add/remove parameters without changing all calls to the
functions throughout the code.

Also adds an interface through which to call make_mp4_header().
2024-06-17 22:05:07 +02:00
ejurgensen
61bae6367d [spotify/rtp] Remove some unused functions
Closes #1705
2024-01-01 16:37:15 +01:00
ejurgensen
3ee9204ff8 [xcode/daap/rsp] Default transcode to 320 kbps mp3 instead of wav
- Calculate size for both formats (+ move the return to transcode_encode_query)
- Let transcode_needed() decide what format to output
- Determine content-type from transcoding type
- Add transcode-dependent ability to override file metadata in rsp/daap
- Send file size matching format
2023-12-04 17:26:03 +01:00
ejurgensen
65c72c484b [misc] Add misc_xml.c to wrap mxml, fixes XML reading of CDATA (et al)
The change removes all direct calls to mxml from the modules that need an XML
parser (lastfm.c, pipe.c, rssscanner.c and httpd_rsp.c).

Even with the help of mxml, reading XML is hard, so a layer is added which
helps deal with stuff like whitespace and CDATA. This should make OwnTone more
resilient to any XML variations it might receive.

The changes fixes issue #1677.
2023-11-12 23:43:38 +01:00
ejurgensen
214ef12cb5 [spotify] Fix free of invalid pointer on http request error
Fixes #1643
2023-08-29 20:14:19 +02:00
ejurgensen
0ca02687bd [spotify] Remove old libspotify integration
No longer works, libspotify has been sunset by Spotify
2022-05-25 22:49:35 +02:00
ejurgensen
d4a2b11c3e [spotify] Slightly improved version of recent commit 79fb65f 2022-05-24 20:34:45 +02:00
ejurgensen
79fb65fbd8 [spotify] Fix for "Premium account required" (issue #1474)
Sadly user-agent spoofing seems to be necessary after Spotify sunset of
libspotify. Apparently librespot is whitelisted.
2022-05-17 23:31:30 +02:00
chme
d277f7c7b3 [http/spotify] Add support for http sessions across multiple requests
This change allows to reuse curl handles for multiple requests.
Reusing a curl handle improves performance if more than one request is
made against a service (connection, session cache, dns cache are kept
between requests).
2022-05-01 09:01:23 +02:00
ejurgensen
03d05ea828 [spotify] Make sure failed AP's are avoided on next connection attempt 2022-03-22 20:58:43 +01:00
ejurgensen
48051f6364 [spotify] Handle channel error (so that new AP connection is triggered) 2022-03-15 21:14:28 +01:00
ejurgensen
cd4386228d [spotify] Coverity fixups 2022-01-20 20:17:38 +01:00
ejurgensen
c9aac896ee [player] Coverity fixups 2022-01-20 20:17:38 +01:00
ejurgensen
021a53aa64 [spotify] Add missing return() in librespot-c channel.c 2022-01-11 20:11:35 +01:00
chme
8becdee8f1 [db] Refactor db_query_fetch_* functions to take the output parameter
first and the input parameter as last parameter
2021-12-28 07:23:56 +01:00
chme
a65ee4462e [db] Refactor fetching query result into generic function
Additionally changes the return value in case the end of the result set
is reached.
2021-12-28 06:55:35 +01:00
chme
f3fa343b9b [spotify] Add missing listener notification on librespot logout 2021-12-26 20:22:06 +01:00
ejurgensen
5efe0eeb0f [pipe] Fix regression in commit 6646802
Don't try to apply pipe metadata if parsing failed. Resolves #1366.
2021-12-12 10:32:42 +01:00
ejurgensen
b71c353fc9 [spotify] Update librespot-c for better connection handling
- New attempt at fixing #1317: Don't prevent reconnection if a request is queued
- Protection against flooding Spotify with reconnection attempts
- Don't reconnect when getting a stop request during blocked download
2021-11-27 15:10:56 +01:00
ejurgensen
ce5634e372 [spotify] Fix log message typo 2021-11-20 14:55:27 +01:00
ejurgensen
6646802832 [pipe] Fix deadlock coming from metadata pipe (issue #1343)
Cause of deadlock:
  new volume pipe metadata -> lock pipe mutex -> set player volume waiting for
  player -> player waiting for input write -> input write waiting for get
  metadata -> get metadata waiting for mutex

Change implementation so lock is only held while parsing/storing metadata,
where it is required, and not when calling the player.
2021-11-15 23:13:13 +01:00
ejurgensen
6d54886030 [librespot-c] Close connection if peer disconnects
Attempt to fix possible bad state where librespot-c keeps try to using a
connection even after the access point has disconnected.
2021-11-04 17:20:55 +01:00
ejurgensen
5e66dbd8c9 [spotify] Fix Spotify initialization issues
* loading library even though library playback login failed
2021-11-01 10:37:17 +01:00
ejurgensen
c4d57aa5d1 [spotify] Clear spotify_status on logout (clears logged_in and username) 2021-10-05 20:46:44 +02:00
ejurgensen
63c3d59d2f [spotify] Preserve fine-grained errors from request_make() 2021-09-24 19:17:47 +02:00
chme
ce3e79d804 [spotify] Move "has_podcast_support" to spotify_status and expose this
flag in the web API
2021-09-04 09:46:29 +02:00
chme
24450bc90a [spotify] Scan spotify podcast subscriptions into library 2021-09-04 09:46:28 +02:00
ejurgensen
3f13ab1026 [pipe] Use fstat instead of lstat to fix time-of-check time-of-use warning
Fixes warning from CodeQL. Wasn't really a security issue since the check was
just a service to the user.
2021-09-02 00:17:22 +02:00
ejurgensen
54faa11ce5 [spotify] Update librespot-c so ./configure works with FreeBSD 2021-09-01 17:11:45 +02:00
ejurgensen
d2f4efa1bf [misc] Centralize thread naming plus name websocket thread 2021-07-05 21:40:31 +02:00
ejurgensen
eae09039d5 [spotify] Add missing include of config.h 2021-07-05 21:09:02 +02:00
ejurgensen
5d2d2ea227 [spotify] Add missing include of errno.h (fixes #1267) 2021-06-05 21:10:22 +02:00
ejurgensen
9fbbf9836c [spotify] Submit actual system info to Spotify 2021-06-05 21:09:44 +02:00
ejurgensen
4463d4e7d8 [-] Fix build with old libgcrypt versions (eg Buster's) with no pkg-config 2021-06-01 20:29:16 +02:00
ejurgensen
6f0fef6179 [spotify] Reintroduce libspotify support, change spotifyc to librespot-c
Select use of either libspotify or librespot-c as streaming backend via config
option.

librespot-c (renamed/improved spotifyc) impl has the following:
- sync interface
- seek support
- honor bitrate config, set client and thread name
- use web access token with "streaming" scope for login
- fix issue with podcast playback

Also say goodbye to file-based Spotify login.
2021-05-31 23:24:58 +02:00
ejurgensen
2bbc5f16c5 [xcode] Add support for seekable custom I/O (evbuffer input to transcode) 2021-05-31 11:55:32 +02:00
ejurgensen
a67c74ba6c [spotify] Introduce own spotifyc as replacement for libspotify 2021-05-31 11:54:30 +02:00
ejurgensen
5f1686695a [-] Name update forked-daapd -> owntone throughout the code 2021-04-24 23:54:20 +02:00
ejurgensen
363bd5644b [pipe] Support for Shairport sync metadata flush event 2021-03-12 19:48:01 +01:00
ejurgensen
d1a1f6c59c [pipe] Log when artwork is written to temp file 2020-11-28 21:27:58 +01:00
ejurgensen
67f16138c5 [pipe] Change int64_t print mask for log message
Removes compiler warning
2020-07-05 20:59:03 +02:00
ejurgensen
37521406f3 [input] Split file_http.c input into file.c and http.c
The common code is by now limited, and there is a lot of http-specific code.
2020-05-19 23:06:36 +02:00
ejurgensen
a69cc65ff6 [input] Download StreamUrl resource async so input thread is not blocked 2020-05-19 23:06:36 +02:00
ejurgensen
b44e5b3ede [input] Add handler/parser for StreamUrl tags 2020-05-19 23:06:36 +02:00
ejurgensen
d2ac216f47 [http] Change name of struct field for StreamUrl
Should not be called artwork_url, since it also can link to other ressources.

Also some fixup, e.g. use new macros.
2020-05-16 00:13:31 +02:00
ejurgensen
360e46683b [input] Add a simple input for testing timing 2020-05-12 22:25:38 +02:00
ejurgensen
63ab446bd5 [pipe] Fix issue where Shairport progress metadata was ignored
Sometimes the progress has a negative position, which we were incorrectly
disregarding.
2020-05-11 21:39:02 +02:00
ejurgensen
d84ea2008f [pipe] Increase metadata pipe max read size + don't abort if exceeded
Closes #976
2020-04-29 23:02:05 +02:00
ejurgensen
dbc798da4f [-] Workaround for mxml 2.10 memleak
2.10's mxmlDelete memleaks, and mxml is used in many parts of forked-daapd. So
to avoid that we ship upstream's fixed version of mxmlDelete and use that.
2020-04-04 21:07:16 +02:00