Commit Graph

103 Commits

Author SHA1 Message Date
ejurgensen
70f0ff1f61 [artwork] Support for online artwork sources - WIP
* Discogs
* Spotify
* Cover Art Archive
2020-02-23 20:30:35 +01:00
ejurgensen
7316c060b8 [pipe/artwork] Support for artwork via Shairport metadata pipes, take 3
This implementation uses a tmpfile for storage of the artwork, plus it uses
artwork_get() which means that it scales the image as requested by the client.

It also does not create a tmpfile unless we actually receive artwork.
2019-09-20 21:47:17 +02:00
ejurgensen
ddb91e61ef [pipe/artwork] Support for artwork via Shairport metadata pipes, take 2
This implementation uses a tmpfile for storage of the artwork (instead of the
cache, which may not be enabled).
2019-09-20 21:47:17 +02:00
ejurgensen
69fafd873d [pipe/artwork] Support for artwork via Shairport metadata pipes
This implementation uses the cache for storage. Might change that to use a
tmpfile instead.
2019-09-20 21:47:17 +02:00
ejurgensen
4f5966c9ff [db] Speed up Q_PL query used by e.g. '/databases/1/containers' request
The previous solution would use subqueries to count the number of items and
streams in each playlist, which means that response time gets pretty slow if
there are many playlists.

This commit also includes a number of lesser db code changes.
2019-05-30 21:19:40 +02:00
ejurgensen
53780a7ef3 [xcode] Make sample rate + channels variable
This change is preparation to use ffmpeg's resampling capabilities to keep local
audio in sync (by up/downsampling slightly). This requires that sample rates are
not fixed for a transcode profile.

Added benefit of this is that we don't need quite as many xcode profiles.
2019-04-02 22:47:11 +02:00
chme
9b8bff45ab [artwork/http] Check response code and content type
Extends the http_client_ctx to hold the response code for a request.
Also adds the content type header, if it was a https request (using
libcurl instead of libevent)
2019-02-09 08:35:20 +01:00
chme
733a521df8 [spotify/artwork] Add spotify webapi as an additional artwork source 2019-02-05 16:04:08 +01:00
chme
c77acbddf2 [artwork] Ignore artwork requests for items with a non persistent id 2018-05-10 07:23:33 +02:00
ejurgensen
4802823f3c Revert "[spotify/artwork] Load artwork for spotify through the wep api" and "[spotify] Thread safety for the webapi access"
Wait with this until it becomes necessary or we can achieve same performance as libspotify

This reverts commit 997b4da4ad and 2da993cc7b
2017-12-27 18:51:11 +01:00
chme
997b4da4ad [spotify/artwork] Load artwork for spotify through the wep api 2017-12-25 19:52:40 +01:00
ejurgensen
b64d282f32 [artwork] Fix for issue #427, some embedded file artwork not showing
Artwork in embedded files not showing up in non-legacy mode if the artwork does
not require rescaling. The bug is that we are by mistake sending a chunk of the
embedded file, not the artwork in it.
2017-10-27 19:51:37 +02:00
ejurgensen
88a565ea2c [db] Replace sqlite3_xxx() calls outside db.c/cache.c so they are abstracted 2017-10-17 23:11:31 +02:00
ejurgensen
441ad006a6 [artwork/transcode] Also let transcode.c handle rescaling of non-file Spotify artwork 2017-08-06 22:31:43 +02:00
ejurgensen
e7f888645f [artwork/transcode] Adjust transcode.c so it can take care of artwork
rescaling, meaning we can do without parallel ffmpeg interfaces.
This also moves artwork rescaling from libswscale to libavfilter, which
seems to fix a problem with PNG rescaling.
2017-08-06 22:31:43 +02:00
ejurgensen
ef13abe2cf [artwork] Fix for issue #345 and #367: Broken PNG rescaling 2017-03-15 22:12:37 +01:00
sshambar
c54c909ae4 Added support for libav/ffmpeg dual installs (#346)
* [config] Added support for libav/ffmpeg dual installs

Reordered CPPFLAGS/LIBS so that library flags (includes etc) appear
ahead of prefix/global directives and the correct headers/libraries
are checked (if symbols are defined in alternative libraries).
Updated libav checks to use header declaration checks
rather than link checks (so differences between
libav/ffmpeg can be correctly found), and updated code references
to use new defines.  Added support the alternate pkg-config
package names for libav.  Updated ffmpeg vs libav check
to check MICRO version number (>=100 for ffmpeg).  Simplified
resulting configure script by using a function to merge
CPPFLAGS variables.

* [config] Use FORKED_OPTS prefix for libevent_pthreads option

* [config] Add --with-libav option to select libav even if ffmpeg present
2017-02-19 15:21:00 +01:00
ejurgensen
2696b27972 [artwork] Let the artwork handler for streams use queue->artwork_url instead of calling the player, which was messy 2017-01-27 22:36:00 +01:00
ejurgensen
db4068f046 [artwork] Hardcode destination pixel format for png rescaling since
avcode_find_best_pix_fmt_of_list() does not live up to its name
(fixes issue #345)
2017-01-25 21:02:41 +01:00
ejurgensen
785ff21045 Merge pull request #328 from sshambar/fixconfig
Updated configure/makefiles related to Issue #327
2017-01-12 22:41:47 +01:00
ejurgensen
966a81cc77 [db] Fixup - itemcount not required for finding a playlist 2017-01-06 20:03:02 +01:00
ejurgensen
27946a472b [artwork] Add handler for playlist local artwork (for http items)
- ref https://www.raspberrypi.org/forums/viewtopic.php?p=1090166#p1090166
2017-01-06 19:35:05 +01:00
Scott Shambarger
ce4ef0aa23 [config] Many updates to configuration and feature checks
- Added custom checks for libraries and pkgconfig modules that test library
 presence with additional checks for use of headers and functions with
 given options.  Also support correct additional feature library checks
 using provided flags.
- Added custom enable/disable feature macros to simplify their use.
- Use custom CFLAGS and LIBS variables for Makefiles to simplify maintenance.
- Update many feature checks from platform to function.
- Streamline many function checks.
- Correctly check gnutls, gcrypt and gpg-error libraries.
- Fix chromecast and spotify config and compile on FreeBSD
- Added inotify, signalfd and kqueue, and byte swap checks.
- Many clarifications of error messages.
- Correct json-c checks to properly use supplied CFLAGS.
- Correct many quoting inconsistencies
- Use __DATE__ in place of BUILDDATE
- Use full path for gperf and antlr3
- Remove unnecessary CFLAGS
- Added tests for pthread_setname_np parameters
- Added tests for clock_gettime and timer_settime
- Added tests for time.h
- Test if pthread, dl and rt libs are required/available.
- Updated checks for libunistring
2017-01-06 00:44:18 -08:00
ejurgensen
8c0db10e67 [http] Move Curl https client from lastfm to http so it is available for other modules 2016-11-05 13:43:35 +01:00
ejurgensen
22a1e16c12 [artwork] Move timebase back, it must be set for the AVCodecContext for libav (and older versions of ffmpeg?) 2016-01-07 23:42:27 +01:00
ejurgensen
1b24a86169 [artwork] Tidy up artwork.c and handle remaining ffmpeg deprecated warning 2016-01-07 22:48:04 +01:00
ejurgensen
d56576094a [artwork] Do like libav says: "Using AVStream.codec.time_base as a timebase hint to the muxer is deprecated. Set AVStream.time_base instead." 2016-01-06 23:02:43 +01:00
ejurgensen
1f1d79025d [artwork] Keep a raw Spotify source image in case rescaling is not required 2016-01-06 22:39:32 +01:00
ejurgensen
0d55e055c0 [ffmpeg] Update most deprecated functions 2016-01-05 23:22:01 +01:00
ejurgensen
7caf8cc66a [artwork] Add ability to rescale Spotify (should improve caching so we don't save too large images) 2016-01-05 21:44:44 +01:00
ejurgensen
9a0a390a73 [artwork] Get rid of legacy libav/ffmpeg support in artwork.c 2016-01-03 12:24:21 +01:00
ejurgensen
c3d9f65f8b [artwork] Adjust existing code to new structure 2016-01-03 12:24:20 +01:00
ejurgensen
238ee3c122 [artwork] Refactor artwork to make it easier to add new backends (WIP) 2016-01-03 12:24:20 +01:00
ejurgensen
55104015e0 Full removal of libevent 1 legacy code. Also drop pipe() in FreeBSD, since pipe2 is available now. 2015-10-19 21:15:29 +02:00
ejurgensen
294d7a270f Protect against possible segfault if the artwork pixel format is unknown
- thank you groinwood for reporting this bug
2015-08-24 21:27:55 +02:00
ejurgensen
b6703ab7cd Don't retrieve ICY StreamUrls without jpg/png extension (don't want to risk initiating a major, useless download) 2015-06-20 23:11:18 +02:00
chme
659f9c09bb Use enum values for data_kind and media_kind 2015-04-23 11:34:44 +02:00
ejurgensen
5fa908cd9c Add an artwork "stash" in cache.c so we avoid making redundant http artwork requests 2015-04-18 22:55:00 +02:00
ejurgensen
2d8a6a7102 Drop support for libavformat versions < 53 (issue #128) 2015-04-12 20:05:14 +02:00
ejurgensen
e72447954a Some cleaning up of ICY artwork retrieval 2015-04-09 22:22:42 +02:00
ejurgensen
94f94b03fe Swap artwork arguments so destination evbuffer comes first 2015-04-09 21:23:20 +02:00
ejurgensen
50ef710549 Fix memleak in artwork.c 2015-04-02 00:40:10 +02:00
ejurgensen
19ba8fba67 Drop async mode from http client, not needed and probably not working 2015-03-31 23:27:18 +02:00
ejurgensen
96200eb808 Use own libevent http client for downloading artwork, ffmpeg seems a
bit too slow
2015-03-31 00:08:29 +02:00
ejurgensen
e5c8128c9d Minor improvements for rescale_needed() 2015-03-30 23:10:33 +02:00
ejurgensen
0b67ae3974 Some fixup for libav 0.8 2015-03-29 01:02:14 +01:00
ejurgensen
cde8441493 Don't cache internet artwork 2015-03-17 22:04:07 +01:00
ejurgensen
46e4214b39 Adjust log severity 2015-03-16 21:40:50 +01:00
ejurgensen
6221e24f1b Support for live ICY metadata for streams (incl. artwork) 2015-03-14 21:42:53 +01:00
ejurgensen
103ce0887a Misc artwork fixup 2015-01-04 19:38:13 +01:00