Commit Graph

2967 Commits

Author SHA1 Message Date
chme
be6b4376e8 [db] wrap db_purge_cruft in a transaction 2016-12-27 21:31:01 +01:00
ejurgensen
3bb6220ce9 [transcode] Make sure transcode_seek() only returns negative on error
- newer ffmpeg seems to give timestamps that give negative got_pts when seeking to 0
2016-12-27 00:02:02 +01:00
chme
cf7787dbc2 [filescanner] Fix nested transaction 2016-12-24 07:44:03 +01:00
ejurgensen
1748430c48 [db] Review of cache regeneration triggers 2016-12-18 21:18:15 +01:00
ejurgensen
40d34ed4ad Merge pull request #324 from chme/db3
Remove rebuilding the persistent-ids on startup
2016-12-18 11:20:10 +01:00
chme
7856498951 [db] Remove unused functions db_files_update_songartistid,
db_files_update_songalbumid
2016-12-17 16:17:23 +01:00
chme
f5fe1e665a [filescanner] Remove rebuilding of persistent ids (artist, album)
The hash is not portable, therefor this removes the ability to build the
database on a different machine than the one running forked-daapd.
It also removes the clearing of the groups table and replaces it with a
cleanup call (removes unreferenced entries from the groups table).
2016-12-17 07:38:51 +01:00
chme
3d3c27190b [db] Add function to cleanup the 'groups' table (artists and albums)
Allows removing of item no longer referenced from the files table
2016-12-17 07:38:47 +01:00
chme
af774ef175 [filescanner] Remove unnecessary query for file id in process_media
The previous query for db_file_stamp_bypath already retrieves the file
id for the given path.
2016-12-17 07:11:51 +01:00
chme
351725c8b2 [db] initialize id parameter with 0 2016-12-17 07:11:43 +01:00
ejurgensen
1ab9151489 [http] Repair broken libevent 2.0 compability 2016-12-11 20:20:27 +01:00
ejurgensen
2ee4988a50 [httpd] Add missing include for event2/keyvalq_struct.h (closes #321) 2016-12-11 19:10:53 +01:00
chme
de61a3a851 [db] Remove db_admin_update and rename db_admin_add 2016-12-10 06:15:43 +01:00
chme
e29539fa68 [db] add primary key to admin table 2016-12-10 06:15:43 +01:00
ejurgensen
ad4cdc2216 [httpd] Silence compiler warning about unused var 2016-12-09 21:49:22 +01:00
ejurgensen
d7b63ebc6a Merge pull request #319 from chme/dbgetint
[db] Rename db_get_count
2016-12-09 19:29:01 +01:00
chme
c4732b835f [db] Remove unused function db_file_id_byfilebase 2016-12-09 16:20:50 +01:00
chme
588fe120b7 [db] Rename db_get_count to db_get_one_int 2016-12-09 16:20:03 +01:00
chme
1221244eed [mpd] Implement consume command and return consume mode in
status command
2016-12-09 14:48:24 +01:00
chme
c3e8568782 [player] Add 'consume' mode
If consume mode is active the current song is removed from the queue at
eof or if the next song action is triggered.
2016-12-09 14:48:24 +01:00
chme
94f450769d [db] Fix upgrade to v19.01 2016-12-09 07:08:14 +01:00
ejurgensen
9ba512a340 Merge pull request #309 from chme/persistentqueue3
Persistent queue
2016-12-08 21:06:17 +01:00
chme
2d1e5f6d60 [player/db] Remove function "db_file_get_seekpos" 2016-12-04 17:48:35 +01:00
chme
d339f5bcd2 [db] fixup 2016-12-04 11:34:54 +01:00
chme
edc609b531 [db] Queue fetch functions should end the query after start and fetch 2016-12-04 09:32:50 +01:00
chme
09c2e7ca76 [db] Add missing free of query_param.filter 2016-12-04 09:16:49 +01:00
chme
fb55960b0a [db] Remove db_queue_enum struct and use generic query_params 2016-12-04 08:18:33 +01:00
chme
b9117f9abd [db] Remove unnecessary setting of query param fields to 0 2016-12-04 07:42:38 +01:00
chme
d431ace5c4 [db] Use a minor version update for the new queue table (v19.01 instead
of v20.00)
2016-12-04 07:28:06 +01:00
chme
fdd85ccf66 [raop/dmap] Build raop metadata from queue item 2016-12-03 20:40:54 +01:00
chme
ea56ee91bd [spotify] Add missing virtual path to "Saved Tracks" playlist 2016-12-03 14:53:47 +01:00
chme
6c6f02fdfa Rename "queue_item.item_id" to "queue_item.id" 2016-12-03 11:14:03 +01:00
chme
eb896a1085 [db] Fix loglevel 2016-12-03 11:12:19 +01:00
chme
0251f3c514 [db] Rename "queue_add_mediafileinfo" to "queue_add_file" 2016-12-03 11:12:19 +01:00
chme
b5bf1928ff [db] Rename "plversion" to "queue_version", add missing init query for
queue_version
2016-12-03 11:12:19 +01:00
chme
6c7df96371 [db] Remove forward declaration of queue_fetch_byitemid 2016-12-03 11:12:19 +01:00
chme
cef4fedfb4 Remove unused structs and player arguments 2016-12-03 11:12:19 +01:00
chme
6c66d39d91 [player] Fix segfault if player reaches end of queue, fix repeat single 2016-12-03 11:12:19 +01:00
chme
a0590ce548 [db/player] Icy metadata update 2016-12-03 11:12:19 +01:00
chme
e08b4f3b01 [rng] Cleanup: remove unused function 'shuffle_ptr' 2016-12-03 11:12:19 +01:00
chme
a023595b6f [queue] Remove queue.c/.h 2016-12-03 11:12:19 +01:00
chme
c504abe451 Use queue db table instead of in memory queue struct 2016-12-03 11:11:33 +01:00
chme
8ebf2f9307 [db] Add functions to access/modify the queue table 2016-12-03 10:58:26 +01:00
chme
0beb68e1f1 [db] Upgrade db to v20.00
- New table 'queue' for persisting the queue/current playlist
- New entry 'plversion' in admin table for queue version
2016-12-03 10:58:26 +01:00
chme
faaeb92ce5 [player] Reading media_file_info is not necessary in source_pause 2016-12-03 10:58:26 +01:00
chme
2d27636644 [rng] Add function to shuffle an int array 2016-12-03 10:57:56 +01:00
ejurgensen
3921cf5732 Merge branch 'spwebapi2' 2016-11-27 22:54:06 +01:00
ejurgensen
7239d39c5f [httpd] UI apology 2016-11-27 22:52:59 +01:00
ejurgensen
51e6008ef6 Merge pull request #305 from chme/streamsetup
Reduce dependency to media file in stream setup methods
2016-11-26 17:43:24 +01:00
ejurgensen
633d297936 Merge pull request #314 from chme/pipeoutputsync
Sync output to fifo
2016-11-20 08:45:15 +01:00
chme
27b9ee16c9 [fifo] Try to keep in sync with airplay speakers 2016-11-20 06:55:55 +01:00
chme
fcbd88c56c [fifo] Fix: flush must return the number of pending events 2016-11-20 06:55:55 +01:00
chme
5bc52d7bc7 [rsp] Fix nullpointer dereference found by scan-build 2016-11-20 06:38:53 +01:00
chme
a95da7966b Fixes issues found by scan-build in mpd.c and queue.c 2016-11-20 06:27:45 +01:00
ejurgensen
94a55d9fc9 [scan] readdir_r deprecated, use readdir instead 2016-11-19 23:50:14 +01:00
ejurgensen
bdd6bab982 [-] Lots of housekeeping thanks to scan-build and input from @acmay 2016-11-19 23:08:50 +01:00
ejurgensen
8525c278ec [http] Fix crash with URLs without any "." chars in the path (issue #311, @credit acmay) 2016-11-17 19:24:55 +01:00
ejurgensen
bb2a73ddab [spotify] Keep saved tracks through restarts + misc fixing up 2016-11-13 22:13:35 +01:00
chme
2c801ca6db [db] Small code improvements (avoid hard coded values in query strings) 2016-11-12 12:35:22 +01:00
chme
6690ba32eb [player/transcode/httpd] Pass path, data_kind and song_length to
transcode_decode_setup/transcode_setup
2016-11-12 09:11:40 +01:00
chme
477088a36c [player/pipe] Only pass path to pipe_setup 2016-11-12 09:11:40 +01:00
chme
2db3318ce7 [player/spotify] Only pass spotify-path to spotify_playback_setup 2016-11-12 09:11:40 +01:00
ejurgensen
3040346a65 [spotify] Use Spotify OAuth and web api to get saved tracks/albums 2016-11-05 13:44:23 +01: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
575b6e13a8 [httpd] Hooks for OAuth user interface and callbacks 2016-11-05 13:38:15 +01:00
ejurgensen
807951976c [configure/mdns] Register CNAME forked-daapd.local + generalize CURL detection in configure.ac 2016-11-05 13:33:30 +01:00
ejurgensen
90ecc61ed7 [mdns] CNAME record so we have fixed uri for OAuth redirects
- also refactor mdns_avahi
2016-11-05 13:31:13 +01:00
ejurgensen
33c22a59b9 Merge pull request #304 from chme/cleanup
Minor cleanup of mdns and dacp
2016-11-04 19:17:17 +01:00
chme
eddab1f1c0 [dacp] Use correct log domain 2016-11-04 19:10:07 +01:00
chme
b75c07625c [mdns] Use %zu for size_t in printf (removes warning about wrong
argument type)
2016-11-04 19:09:59 +01:00
chme
f326cae142 [db] Remove duplication of db schema version 2016-11-04 14:31:15 +01:00
chme
f7aa3c225b [db] Move initialization of new db into its own file (db_init.c) 2016-11-04 14:31:15 +01:00
ejurgensen
91c3eb622c [mdns] Put the record browser back
We need to browse through all records so that we can filter out link-local that Avahi sometimes gives us
2016-10-31 22:04:27 +01:00
ejurgensen
087bc942ec Merge pull request #299 from chme/pipeoutput
Fifo output
2016-10-31 19:07:37 +01:00
chme
4f2d994151 [outputs] Remove unused old alsa output 2016-10-31 18:47:45 +01:00
chme
65732ccaf6 [outputs] New output type 'fifo' 2016-10-31 18:47:45 +01:00
ejurgensen
be6580d23e [mdns] Also ignore ipv4 link-local announcements 2016-10-30 20:04:08 +01:00
chme
60f9c779b6 [mpd] Add new command 'outputvolume' to set volume for a specific output 2016-10-25 22:40:48 +02:00
chme
bdb2c74934 [player/dacp/mpd] Pass absolute volume to speaker enumerate callback and
add absolute volume to mpd 'outputs' command
2016-10-25 22:40:48 +02:00
ejurgensen
a549f81861 [filescanner] Make for filetypes_ignore work for known file types as well 2016-10-25 09:08:56 +02:00
ejurgensen
bc1fb4b385 [mdns] Ignore ipv6 link-local mdns announcements 2016-10-23 23:27:34 +02:00
chme
39314c1560 [mpd] Do not treat playback_start return value > 0 as an error 2016-10-23 08:25:19 +02:00
chme
3981c67e3a [player] Do not execute the bottom half if playback_start is called
while player is already playing (results in s segfault after adding new
items through dacp clients)
2016-10-23 08:25:19 +02:00
chme
16149d5c61 [command] Only execute "bottom half" function if main command function
returns 0
2016-10-23 08:25:19 +02:00
ejurgensen
c0d07ae93b [httpd] Allow HEAD for evhttp requests just to be safe 2016-10-21 23:06:00 +02:00
ejurgensen
2ce1c8d28f [httpd] Enable OPTIONS for evhttp (if CORS headers are enabled) 2016-10-19 21:22:14 +02:00
ejurgensen
54a09fce63 [httpd] Add requirement for Access-Control-Request-Method for preflight CORS 2016-10-19 17:29:22 +02:00
ejurgensen
57945a592c [httpd] Reply to CORS preflight requests 2016-10-18 23:04:51 +02:00
ejurgensen
c44f4310b7 [httpd] Replace evhttp_send_error with the httpd_send_error wrapper 2016-10-18 22:45:22 +02:00
ejurgensen
fe7373e442 [httpd] Implement httpd_send_error, a modified evhttp_send_error, which
can include CORS headers (credit @bjoernricks and libevent)
2016-10-17 23:08:02 +02:00
ejurgensen
40c49f1fde [httpd] Use httpd_send_reply() wrapper in httpd_*, dmap_common and mpd 2016-10-17 22:25:31 +02:00
ejurgensen
e1cfccbce7 [httpd] Exchange evhttp_send_reply with httpd_send_reply in httpd.c 2016-10-17 22:14:10 +02:00
ejurgensen
0b29b4368d [httpd] Enable CORS headers by default (Access-Control-Allow-Origin: *) 2016-10-17 22:03:32 +02:00
ejurgensen
7dc2a46261 [cache] Save daap replies gzipped - should improve performance 2016-10-17 19:40:25 +02:00
ejurgensen
249d923af2 [httpd] Allow caller of httpd_send_reply to avoid gzipping 2016-10-17 14:18:13 +02:00
ejurgensen
d8696e72ea [httpd] Don't gzip small messages 2016-10-17 14:09:16 +02:00
ejurgensen
f7185db035 [httpd] Reduce memcpy when gzipping a response 2016-10-16 23:36:27 +02:00
ejurgensen
0c6af89807 [raop] Just remove ipv6 address if we can't connect with the one avahi gave us 2016-10-15 19:14:01 +02:00
ejurgensen
03513c56a8 [mdns] Simplify avahi implementation, e.g. drop record browser
- record browser and link level filtering doesn't seem required (I may regret this...)
- fix cast.c so it does not browse for ipv6 when disabled
2016-10-15 19:12:56 +02:00
ejurgensen
1e3df5ba52 [-] Add forgotten type in err2str() 2016-10-11 21:32:16 +02:00
ejurgensen
94e133e8dc [raop] Temporary fix for issue #293 2016-10-09 00:42:48 +02:00
ejurgensen
9a997551a2 [pulseaudio] Remove PA_STREAM_ADJUST_LATENCY - seems we then get a better match with the requested value 2016-10-08 21:40:49 +02:00
ejurgensen
9bd2ef4f42 [pulseaudio] Misc improvements
- Set volume on stream startup
- Change cleanup on server exit
- README update
2016-10-07 22:35:04 +02:00
ejurgensen
8b842b18d5 [pulseaudio] Add start/stop, config latency, avoid underruns when pausing and misc 2016-10-06 23:35:09 +02:00
ejurgensen
a0dfb5c93e [pulseaudio] Under/overrun detection + request 2 sec latency 2016-10-05 21:13:26 +02:00
ejurgensen
bc8c77c0d1 [pulseaudio] Go full async + some cleaning up 2016-10-05 08:53:14 +02:00
ejurgensen
a03bc2a4e2 [commands] A bit of cleanup 2016-10-02 22:05:53 +02:00
ejurgensen
8f6033e787 [pulseaudio] More logging 2016-10-02 18:48:00 +02:00
ejurgensen
07efdfe24e [pulseaudio] Drop autostarting again, won't work when running as non-root 2016-09-28 21:17:34 +02:00
ejurgensen
44ad4a8848 Merge branch 'autopulse' 2016-09-26 21:32:27 +02:00
ejurgensen
ac9900ff1a [pulseaudio] Modification of f202b5d: Now always try to start Pulseaudio 2016-09-26 20:48:00 +02:00
ejurgensen
89e3f05585 Merge pull request #288 from pcoultha/mixer_device
[ALSA] Add mixer_device configuration file option for ALSA
2016-09-26 00:11:28 +02:00
Pat Coulthard
ae79800493 Add mixer_device configuration file option for ALSA
Support a separate mixer_device configuration file option for
advanced ALSA configurations. Previously, ALSA local output
happened to work becasue "default" is valid as both a PCM and a
mixer. Now you can separately specify the device name for PCM
output and mixer operations.

In my setup, I am using the following setup:
card = "default:CARD=NVidia"
mixer = "Front"
mixer_device = "hw:CARD=NVidia"
2016-09-25 15:52:15 -05:00
ejurgensen
b3a1e744d6 [player] Fix possible segfault on http timeouts
Cause: 1) av_read_frame blocks and times out, 2) cur_streaming gets set to NULL, 3) playback timer callback where cur_streaming gets deref
2016-09-25 22:19:59 +02:00
ejurgensen
e5d328061b [logger] Be better at logging ffmpeg/libav error messages 2016-09-25 22:01:07 +02:00
ejurgensen
f202b5d2e9 [pulseaudio] Try to spawn Pulseaudio if it doesn't by itself
Requiring the user to set up Pulseaudio in system mode is not optimal. This
would, however, be required especially on headless systems. This is the
sledgehammer alternative to starting Pulseaudio.
2016-09-20 22:17:29 +02:00
ejurgensen
9355015b3c [main] Use waitpid instead of obsolete wait3 2016-09-20 22:17:04 +02:00
ejurgensen
ac290b8b65 [player] Config option to disable speaker autoselection (closes #282) 2016-09-10 23:26:06 +02:00
ejurgensen
3d6d4e8521 [config] Print build info in the log 2016-09-07 22:18:29 +02:00
ejurgensen
d66a130064 [lastfm] Also scrobble after regular daap streaming
Ref https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=813940
2016-09-02 21:52:45 +02:00
ejurgensen
7f0d34d4e1 [pulseaudio] Remove temp log messages 2016-08-29 21:56:05 +02:00
ejurgensen
7af9c25964 Merge branch 'pulseaudio1' 2016-08-28 22:37:41 +02:00
ejurgensen
1d862dd701 [pulseaudio] Extra state check when changing volume 2016-08-28 22:33:58 +02:00
ejurgensen
4318aa19b5 [commands] Update comment 2016-08-25 23:07:43 +02:00
ejurgensen
fa6c6a1832 [pulseaudio] Kill sessions if context becomes invalid 2016-08-25 22:31:25 +02:00
ejurgensen
84a5772439 [Pulseaudio] Implement flush, avoid adding known sinks and misc fixing up 2016-08-24 23:06:25 +02:00
ejurgensen
9b243f855a [pulseaudio] Support for setting volume 2016-08-24 21:23:33 +02:00
ejurgensen
998ae31a56 [cast] Fixup switched format strings 2016-08-22 21:22:47 +02:00
ejurgensen
202d9b951e [cast] Use proper print formats for size_t 2016-08-22 21:18:24 +02:00
ejurgensen
da8fa6a686 [cast] Just run empty callback on last request to time out. Running more is unsafe since the first is likely to free the session. 2016-08-13 23:33:06 +02:00
ejurgensen
61457f2a09 [cast] Change how we read from TLS and fix bug due to masking of negative enum, ref issue #270 and #275
(should have been two commits...)
2016-08-13 23:31:41 +02:00
ejurgensen
8a9d8c31da [alsa] Remove risky negative enum (risky when AND'ing with ALSA_F_STARTED) 2016-08-13 17:08:14 +02:00
ejurgensen
d3db30e46d [smartpl] Add smart playlist support for file modification time 2016-08-13 16:53:09 +02:00
chme
1238fe124a [commands] Stop command execution, if command function returns an unkown
command state
2016-08-06 06:50:27 +02:00
chme
da83af04e2 [player] Fix return value in repeat_set if repeat mode did not change 2016-08-06 06:36:42 +02:00
chme
30d43bef4f [player] Fix return value in volume_setrel_speaker if device is not
selected
2016-08-06 06:34:34 +02:00
chme
2ae94e8f82 [player] Fix return value in playback_prev_bh if source_open failed 2016-08-06 06:31:09 +02:00
chme
cd9a3bae07 [player] Fix return value in playback_start_item if source_open failed 2016-08-06 06:29:55 +02:00
chme
21d2c95eeb [spotify] Fix return of playback_eot if spotify returns an error 2016-08-06 06:26:38 +02:00
chme
388c5f4311 [filescanner] Fix building directory structure with trailing '/' (second
attempt)
2016-08-01 21:27:05 +02:00
ejurgensen
cbc3323111 [cast] Try to fix issue #270 by making a GET_STATUS if the normal reply to a LAUNCH does not arrive 2016-08-01 09:05:09 +02:00
ejurgensen
306dd47f1e [cast] Fix for issue #275 where gnutls returns the 4 byte prefix of
a Chromecast response together with the response message itself
2016-08-01 00:12:08 +02:00
ejurgensen
187ed6c1f7 [cast] Log raw replies when in DEBUG_CONNECTION mode 2016-07-31 23:36:27 +02:00
ejurgensen
1e02dc51fd [mpd] Modify output enum logging to show shortid as well 2016-07-31 23:28:03 +02:00
ejurgensen
561228d9f7 [misc] Add missing const qualifier 2016-07-31 23:27:57 +02:00
chme
cebf07b2f8 [filescanner] Fix building directory structure with trailing '/'
Library directories with a trailing '/' (like '/srv/music/') lead to an
unbrowsable directory structure. The trailing '/' resulted in an update
to the library directory in the directories table with a parent_id
pointing to itself.
2016-07-31 07:41:11 +02:00
chme
595f7c6091 [mpd] Fix copy/paste error in log message 2016-07-30 08:33:23 +02:00
chme
e6b53cb88e [mpd] Fix mpd command 'playid' if player is already playing
While playing issueing command 'playid' starts playback of the song with
the given item-id (if this song is already playing, it starts from the
beginning).
2016-07-30 08:33:22 +02:00
chme
9af09c204d [mpd] Fix mpd command 'play' if player is already playing
While playing issueing command 'play' with a songposition -1 does noting
in mpd, with songposition > 0 it starts playback of the song at this
position (if this song is already playing, it starts from the
beginning).
2016-07-30 08:31:54 +02:00
ejurgensen
db6823d676 [pulseaudio] Support for adding/removing sinks 2016-07-30 00:05:32 +02:00