Christian Meffert
91175dc905
[listener] Support passing context arg to listener callbacks
2025-01-22 20:27:34 +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
c9aac896ee
[player] Coverity fixups
2022-01-20 20:17:38 +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
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
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
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
d2f4efa1bf
[misc] Centralize thread naming plus name websocket thread
2021-07-05 21:40:31 +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
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
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
9fcc3d2c01
[pipe] Fix double free of metadata strings ( fixes #724 )
2019-05-04 23:07:22 +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
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
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
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