Commit Graph

60 Commits

Author SHA1 Message Date
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
ejurgensen
2651a979fe [inputs] Fix issue where input metadata would not be erased
When playing a stream, the input metadata is transferred to the queue_item.
However, that was not done if there was no input metadata, which meant that
old metadata was not getting erased.
2020-02-23 20:30:35 +01:00
ejurgensen
f5e59c9b26
[pipe] Allow sample rate of 88200
Ref. issue #838
2019-11-05 00:13:33 +01:00
ejurgensen
051e526b2c [pipe] Disallow 24 bit input, doesn't work currently
If 24 bit input needs to be transcoded, like it will for AirPlay, it
will fail in transcode.c, because XCODE_PCM24 actually produces 4-byte
samples.
2019-10-26 23:28:05 +02:00
ejurgensen
41f51d43ac [pipe] Allow configuration of 32 bit input format (issue #830)
Should work with e.g. arecord -f S32_LE -r 96000 -c 2 -t wav
2019-10-21 21:54:12 +02:00
ejurgensen
cae790ed7e [pipe] Harden pict_tmpfile_recreate() against invalid input, take 2 2019-09-22 22:56:18 +02:00
ejurgensen
d2921e9444 [pipe] Harden pict_tmpfile_recreate() against invalid input 2019-09-22 20:27:47 +02:00
ejurgensen
56d3f42598 Fix a few gcc 8 / scan-build compiler warnings 2019-09-22 00:51:17 +02:00
ejurgensen
cf927e7daa [pipe] Fixup missing condition 2019-09-20 21:51:09 +02: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
1752901529 [misc] Change b64_* to wrap ffmpeg's base64 encoder/decoder
Using ffmpeg's is probably better than having our own, plus it provides us with
decoded length, which we will need to support artwork via pipe.
2019-09-20 21:47:17 +02:00
ejurgensen
ef9c0117c9 [input] Fix pipe playback bringing cpu to 100%
When pipe playback is started, but no data is written to the pipe, the input
loop would bring the cpu to 100%. This fix limits the loop like it was before
player refactor.
2019-08-28 22:23:11 +02:00
ejurgensen
2f3ec36c6a [input] Fix for playback pause on http streams
This fixes a bug from commit 37ce8dd6 where seek_http (which is called when
pausing playback) for non-seekable streams would return -1, thus signalling
an error, even though it is not. The player would think that the stream
could not be played and then skip to the next item.
2019-07-12 19:15:31 +02:00
whatdoineed2do/Ray
37ce8dd607 [inputs] enable seek on non-live http streams 2019-05-12 11:08:42 +01:00
ejurgensen
9fcc3d2c01 [pipe] Fix double free of metadata strings (fixes #724) 2019-05-04 23:07:22 +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
ejurgensen
ab0a6055b9 [input] Refactor metadata handling + add playback wait timeout
Previously input_metadata_get() would retrieve artwork from the source being
read currently, which might not be the one that triggered the FLAG_METADATA
event. So to fix this the metadata is now read by the input module itself when
the METADATA event happens, and the result is stored with the marker.

The commit also includes a timer so that the input thread does loop forever
if the player never starts reading.

Also some refactoring of metadata + abolish input_metadata_get and
input_quality_get. The latter in an attempt to treat the two in the same way.
2019-03-18 23:06:08 +01:00
ejurgensen
107fa3634b [spotify] Remove obsolete .start reference 2019-03-18 23:06:08 +01:00
ejurgensen
b7add1d0fa [inputs/player] Fixup part 1 2019-03-18 23:06:08 +01:00
ejurgensen
87ca6363ae [player/input] Refactor - WIP
* Open input sources earlier
* Gapless playback
* Remove fixed 44100/16 from player
* Complete restructure player internals
2019-03-18 23:06:08 +01:00
ejurgensen
4fe5c47526 [inputs] Change pipe and file_http inputs to use media_quality 2019-03-18 23:06:08 +01:00
ejurgensen
1696fc3384 [input] Adapt input_buffer so it can handle dynamic quality (sample rates etc)
Still WIP, player and outputs cannot handle this yet
2019-03-18 23:06:08 +01:00
ejurgensen
9182597605 [input/xcode] Write to input buffer with the sources native sample rate/format
Still WIP at this point since the player and output can't use the use improved
quality yet, and because rtptimes etc. are likely incorrect
2019-03-18 23:06:08 +01:00
ejurgensen
53d7005547 [pipe] Error check of b64_decode return value 2018-12-29 16:50:27 +01:00
ejurgensen
103dda29f3 [misc] Move CHECK_NULL inside b64_decode (around the malloc)
To stay in line with general use of the macro
2018-12-29 16:39:52 +01:00
chme
788cb6f133 [pipe/raop] Check for NULL to avoid scan-build issues (in case of oom) 2018-12-29 16:34:56 +01:00
chme
d562cb9b6b [spotify] Retry playback setup if song is still loading 2018-05-10 07:02:15 +02:00
ejurgensen
f386c13bd9 [pipe] Add forgotten include of config.h 2018-02-22 22:11:42 +01:00
ejurgensen
6a56c19ad5 [pipe] Add forgotten include of pthread 2018-02-22 22:03:37 +01:00
chme
d90b869354 [pipe] Do not rely on the DATABASE event to be triggered during startup
to start listening on pipes
2017-12-28 16:05:03 +01:00
ejurgensen
4274653624 [pipe] Allow autostart of pipe even if it interrupts other playback (fix for #465) 2017-12-28 11:45:59 +01:00
chme
8d130cdc7c [listener] Support passing multiple events in a single notify call 2017-11-18 07:15:45 +01: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
e96b9500db [transcode] Implement new ffmpeg decoding methods: avcodec_send_packet/avcodec_receive_frame 2017-08-06 22:20:44 +02:00
ejurgensen
25c1795af2 [transcode] Update to new ffmpeg api - part 1
- no more use of AVStream.codec
- ditch some backwards compability
- move closer to being able do video, at least for artwork
2017-08-06 22:20:44 +02:00
ejurgensen
b803c30dcd [player] Check volume range when called for volume change + some adjustments in pipe input 2017-07-14 20:04:35 +02:00
juergen kellerer
93e4886993 [pipe] Added instant volume support (pvol) to named metadata pipe. 2017-07-13 21:53:35 +02:00
ejurgensen
1549d0d4b5 [pipe] Fix crash if pipe is deleted after being written to (caused by double free) 2017-07-08 01:41:12 +02:00
ejurgensen
26c22144fc [-] Misc housekeeping (minor memleaks, invalid free's) 2017-02-12 01:19:56 +01:00
ejurgensen
98348b8fe9 [pipe] Removing CHECK_NULL with malloc, scan-build not happy about it 2017-02-11 00:28:29 +01:00
ejurgensen
f0c9843194 [pipe] Fix exit problem due to misuse of COMMAND_PENDING 2017-02-10 23:56:58 +01:00
ejurgensen
d8255e1d08 [pipe] Fix minor memleak 2017-02-10 23:03:38 +01:00
ejurgensen
1f15fb1993 [pipe] Refactor pipe input, hopefully into a more thread safe version 2017-02-08 22:29:37 +01:00
ejurgensen
f27fb53caf [input] Rename player source ->xcode to ->input_ctx, because any input may use it, not just transcode 2017-02-08 22:29:37 +01:00
ejurgensen
18fe8fe0ef [pipe] Temporary "fix" for threading issues 2017-02-05 00:11:21 +01:00
ejurgensen
b44ae55c1d Some scan-build fixing up 2017-01-28 22:37:56 +01:00
ejurgensen
12567d8e93 [pipe] Make Shairport metadata parser work with incomplete reads from pipe 2017-01-28 22:20:35 +01:00
ejurgensen
b6f969d96e [pipe/mxml] Add compability with older versions of mxml 2017-01-28 22:20:35 +01:00