Commit Graph

2317 Commits

Author SHA1 Message Date
ejurgensen
65110a9f39 Fix FreeBSD sound timing problems 2014-09-27 22:59:19 +02:00
ejurgensen
dafa26a48a Protect against uinitialized var if query is empty 2014-09-26 23:13:17 +02:00
ejurgensen
ca3fada215 Fix ALSA audio problem where threshold will not be reset because
commit 7462290 decreased the value of pcm_pos
2014-09-19 22:18:07 +02:00
ejurgensen
27e7148405 Use STOB() in player.c since it is defined right in player.h 2014-09-19 22:14:31 +02:00
ejurgensen
f543b768ac Merge pull request #41 from chme/skipprev
rfc: Change behavior of skip to previous song
2014-09-12 21:45:15 +02:00
ejurgensen
2fc681a971 Add condition for FreeBSD, ignore SCHED_BATCH in filescanner.c 2014-09-12 17:52:08 +02:00
ejurgensen
8c9793d9ef Fix filescanner bugs:
- stop init-rescan/full-rescan from running twice
- set thread priority to batch
- don't request libevent to loop when the loop is already running
2014-09-11 22:41:07 +02:00
ejurgensen
5bfe4673f5 Add a function in filescanner.c to enumerate certain file types
Fixes bug where init-rescan and full-rescan would run twice because
two inotify events get triggered by eg 'touch xxx.init-rescan'
2014-09-10 22:16:52 +02:00
ejurgensen
97910f3a99 Fix bug where LastFM session key in db was ignored 2014-09-08 23:13:12 +02:00
ejurgensen
be7a6c7b1e Don't try to login to Spotify if the filescanner got an exit signal 2014-09-08 22:45:05 +02:00
ejurgensen
94c5352db6 Remove EVLOOP_ONCE calls in filescanner
These calls generate error messages when the loop is already running, which
will be the case when using init-rescan or full-rescan. The only purpose
of these calls seems to be to check for exit signals from the main thread
during a startup bulk scan, where the loop is not running yet. However, we
can check for an exit signal by just setting/checking scan_exit.

This commit also removes the unused filescanner_status().
2014-09-08 21:57:52 +02:00
ejurgensen
d2d85b29f4 Lower the priority of the thread so forked-daapd may still respond
during file scan on low power devices
2014-09-07 13:48:03 +02:00
ejurgensen
2545aedc2a Avoid duplicate rows in the admin table 2014-08-27 22:12:42 +02:00
ejurgensen
ae3b5077ec Add support for .pls playlists 2014-08-27 21:57:16 +02:00
ejurgensen
1b51fcf07c Rename filescanner_m3u to _playlist, because we are going to add
support for pls
2014-08-27 21:54:28 +02:00
ejurgensen
b26e507baa Fix memleak in DAAP cache 2014-08-25 22:05:44 +02:00
ejurgensen
271e2c29e1 Add some libevent 1 compability 2014-08-24 14:51:41 +02:00
ejurgensen
d157aca620 Save response times in DB and show in log (for debugging) 2014-08-24 12:43:32 +02:00
ejurgensen
31ef4d4e13 Add slow DAAP queries to cache automatically 2014-08-24 01:23:23 +02:00
ejurgensen
cf091e8d8b Adjust daapcache so it serves User-Agent to httpd_daap's reply handlers 2014-08-23 00:02:01 +02:00
ejurgensen
624dd40c59 Include DAAP queries from Retune and TunesRemote+ for caching
+ misc fixing up
2014-08-22 22:51:13 +02:00
ejurgensen
f997aca452 More DAAP cache adjustments 2014-08-21 23:06:52 +02:00
ejurgensen
eac718ea0f Some more daap cache triggers 2014-08-21 10:14:24 +02:00
ejurgensen
76231cac0f Experimental caching of playlist 1 2014-08-21 10:01:47 +02:00
ejurgensen
7623de1ac4 Allow const char tags and handle null requests in dmap_common 2014-08-21 09:59:59 +02:00
ejurgensen
39b9c4fc33 Make DAAP cache use and location configurable 2014-08-20 23:09:23 +02:00
ejurgensen
f3a19fce8e Add DAAP cache backend 2014-08-20 00:21:48 +02:00
ejurgensen
a594455e09 Add db_query_run() to get rid of some redundancy in db.c 2014-08-18 00:20:23 +02:00
ejurgensen
6d8e4c67aa Support for LastFM scrobbling (issue #19) 2014-08-15 23:36:54 +02:00
ejurgensen
21cf3ab7d3 Add trimwhitespace(), keyval sorting and alloc to misc functions
- features required by the LastFM module
2014-08-15 22:56:39 +02:00
ejurgensen
d5efc2dcb3 Add db interface to update the admin table 2014-08-15 22:54:47 +02:00
ejurgensen
b0807b168e Preproc defines in evhttp_compat.h to protect against double inclusion 2014-08-15 22:53:47 +02:00
Marlies Heijkoop
bbb21b0bad Don't segfault on invalid utf8 while sorting
`strmblen` returns -1 on invalid sequences, which causes a segfault when passed as length to `stpncpy`.
2014-08-14 20:06:45 +02:00
chme
05e6402dc6 Fix skip to next song while the last song in Up Next is playing
(introduced in a6c2a25)
2014-08-02 07:25:18 +02:00
chme
974c6e6323 add missing "#undef Q_TMPL" 2014-07-27 11:16:00 +02:00
chme
a6c2a25642 If reshuffling with repeat all songs in queue active, set shuffle-head
to current playing song. Previously the shuffle-head was set to the next
song after the current, therefor the UpNext-queue appeared empty after
adding new songs to the queue.
2014-07-25 18:51:34 +02:00
chme
87b415b0d4 Fix segfault on reshuffling one item 2014-07-25 18:25:20 +02:00
chme
5065c3e4a0 Use query parameter if queuefilter parameter is unkown 2014-07-19 08:45:40 +02:00
chme
49a985391d Ignore queuefilter on playqueue-edit-add if mode = 0 (add to up next) 2014-07-19 08:44:27 +02:00
chme
74622904e3 local audio: do not add pcm_buf_threshold to pcm_pos (leads to wrong
position in Remote)
2014-07-17 20:14:21 +02:00
chme
4d79a85780 Change behavior of skip to previous song to start the current song from
the beginning, if it is playing for more than 3 seconds
2014-07-17 20:14:21 +02:00
chme
fe2abfd123 clear queue on playback abort 2014-07-17 20:12:19 +02:00
chme
9527e06f71 reshuffle only songs in the UpNext queue 2014-07-17 20:12:19 +02:00
chme
46c0239a79 Added options to modify the operation of the SQLite database (through PRAGMA statements)
- set cache size (in number of pages)
- set synchronous flag
- set journal mode
2014-07-13 10:35:38 +02:00
ejurgensen
17ffdc56ad Fix bug where streams with sample rate < 44100 stop too early (with libav 10+)
- avresample_convert should be passed max samples to convert, not
number of samples in input (which for low sample rates is lower
than output)
2014-07-06 23:31:20 +02:00
ejurgensen
129c00c3d1 Change some playlist scanner log levels 2014-06-23 01:51:32 +02:00
ejurgensen
0a2d2273bd Remove build warning caused by data type mismatch 2014-06-22 22:29:45 +02:00
ejurgensen
7810f16361 Fix bug where it will wait endlessly if a Spotify track is paused the last few
seconds of a track (after new track has been opened)
2014-06-22 22:27:52 +02:00
ejurgensen
a860907202 Another preprocesser condition for OpenWrt compability 2014-06-16 23:46:30 +02:00
ejurgensen
2247fadbfa Some preprocessor conditions for compability on OpenWrt 2014-06-16 23:31:44 +02:00
ejurgensen
a181b515f2 Merge branch 'dev' 2014-06-11 23:10:52 +02:00
ejurgensen
d993bc3750 Defer loading Spotify playlists until bulk scan is complete
(because of database locking issues)
2014-06-10 22:49:44 +02:00
ejurgensen
1bd11d2895 Fix so permission changes in the library are handled (issue #8) 2014-06-09 23:42:02 +02:00
ejurgensen
30aa93479d Merge branch: libevent compability improvements 2014-06-02 21:59:50 +02:00
ejurgensen
844a9b43c9 Fixup new libav 10 icy extraction 2014-06-02 21:51:50 +02:00
ejurgensen
ada7ccca8f Change log level of .remote message to ease pairing troubleshooting 2014-06-02 21:08:24 +02:00
ejurgensen
116289f5b7 Libav 10 (and ffmpeg) now has native support for ICY metadata 2014-06-02 00:00:52 +02:00
ejurgensen
b566c41a36 Setting log level to info gave a lot of meaningless db.c messages 2014-06-01 23:58:44 +02:00
ejurgensen
c740e6e3b0 Make compatible with libevent 2.0 by crippling streaming and ICY metadata (see issue #30) 2014-05-30 23:39:03 +02:00
ejurgensen
5b4ef31758 Migrate all evhttp to non-deprecated libevent2
- well except a troublemaker in httpd_daap.c (req->flags &= ~EVHTTP_PROXY_REQUEST)
2014-05-29 23:22:00 +02:00
ejurgensen
22d37f240b ICY scanner modifications 2014-05-29 11:50:56 +02:00
chme
a4fbeed81e Added comments to queue_clear and queue_empty 2014-05-29 09:45:04 +02:00
ejurgensen
02c23b0065 Better thread sync, cleanup and libevent compability in ICY filescanner 2014-05-26 23:38:19 +02:00
chme
b7cb0da2c2 Modifications to the playqueue-clear command:
- do not stop playback when clearing the UpNext queue
- clear history, if mode=0x68697374 ("hist")
2014-05-24 07:34:59 +02:00
ejurgensen
aa8344d14d Some filesystems have mtime=0 (Seafile), so add check for stamp before
letting the scanner exit with just a db ping
2014-05-21 22:31:05 +02:00
ejurgensen
519a673503 Extra error check 2014-05-20 22:45:25 +02:00
ejurgensen
8468f55910 Honor the "ek" (encryption) flag for RAOP_DEV_OTHER + slight rewrite of raop_device_cb 2014-05-18 17:19:50 +02:00
chme
f60be3c8af Do not use queryfilter on "play next" and "add to up next" commands 2014-05-18 09:04:17 +02:00
chme
a1b09903c0 - Fix crash when calling add-next and cur_playing/cur_streaming are NULL
- Append songs after cur_streaming
2014-05-17 14:13:18 +02:00
ejurgensen
dafc748bfd Clear watches from db on init-rescan 2014-05-14 21:39:25 +02:00
ejurgensen
915719f0f8 Fix Spotify exemption from purge during init-rescan 2014-05-14 20:44:07 +02:00
ejurgensen
6b0c5997bf Fixup init-rescan 2014-05-13 22:14:19 +02:00
ejurgensen
c1be585469 Extra log message for debugging apparent db locking issue 2014-05-13 22:02:32 +02:00
ejurgensen
a7d0a603b3 Excempt Spotify items from rescan purge 2014-05-13 20:57:37 +02:00
ejurgensen
851b57017d Add option to trigger startup scan, rename force-rescan and better cleanup in full rescan 2014-05-11 23:55:18 +02:00
ejurgensen
0aa8416a21 Reset inotify when force-rescan is triggered 2014-05-11 23:44:15 +02:00
ejurgensen
5a5163e699 Move db_analyze/db_hook_post_scan (credit @chme) 2014-05-11 23:17:29 +02:00
ejurgensen
a5b2fbc0fe Wrap bulk scan in a db transaction (credit @chme) 2014-05-11 23:13:09 +02:00
ejurgensen
44c3dba3d9 queue_remove was removing wrong item 2014-05-06 22:55:59 +02:00
ejurgensen
305c1a141c Indentation 2014-05-04 22:36:37 +02:00
chme
7e43a42c88 Remove dead code: playback_next_bh and playback_prev_bh are only called
during playback_pause. In playback_pause "cur_playing" is always set to
NULL so that in playback_next_bh and playback_prev_bh only the
else-clause can become true.
2014-05-04 05:45:53 +02:00
chme
79646c78e4 fixup indentation 2014-05-03 20:16:51 +02:00
chme
8036a5a6d3 fixes for playqueue-contents 2014-05-03 20:16:51 +02:00
chme
5f307c7ce1 Added support for playqueue-contents with negativ span value (returns the previously played songs) 2014-05-03 20:16:51 +02:00
ejurgensen
20539c0c08 Remove unused variable in queue_next_add 2014-04-30 23:33:42 +02:00
ejurgensen
a2f90a997c Make sure albums/artists appear the same despite different capitalization 2014-04-30 23:30:08 +02:00
chme
eab4c1c3d2 Fix "play next" command - the queue was not circular anymore due the
missing setting of pl_prev of the next song and start the shuffle-queue
with ps_shuffle
2014-04-23 20:44:40 +02:00
ejurgensen
8eb6b46ed2 Adjustments to queue_move/queue_remove, mostly for consistency 2014-04-21 21:21:40 +02:00
ejurgensen
748ce1413f Revert msed to 0 for now 2014-04-20 23:34:04 +02:00
chme
4c5abdac5e add songs for album or artist ordered by album 2014-04-20 11:03:49 +02:00
chme
2391838ea1 announce support of playlist editing by setting "msed" to 1 2014-04-20 07:33:28 +02:00
chme
01cc83f819 respect coding convention and changed log level 2014-04-20 06:43:01 +02:00
chme
32c3b57fcd added support for the playqueueedit add next command 2014-04-19 09:12:58 +02:00
chme
475a2f4e8f added support for the playqueueedit remove command 2014-04-19 08:35:07 +02:00
chme
c3c2c421d2 added support for the playqueueedit move command 2014-04-19 08:09:32 +02:00
ejurgensen
365c5a3bc9 Only queue the rest of the album on quirky query 2014-04-18 22:39:17 +02:00
ejurgensen
2c16b070ed Make the update of playcount non-blocking for playback
- otherwise slow updates would disrupt streaming when switching track
2014-04-18 22:31:37 +02:00
ejurgensen
35e9b3dc30 Fix bug in m3u scanner 2014-04-18 13:08:31 +02:00
ejurgensen
c7aaf6eff3 Forgot a spotify enabled condition 2014-04-05 22:30:35 +02:00
ejurgensen
c47287a556 Support for Spotify artwork 2014-04-04 23:14:43 +02:00
ejurgensen
1be543b00a Only cache available Spotify tracks 2014-04-03 20:44:36 +02:00
ejurgensen
d722b18817 Add optional request-session-id to login request
- should make it easier to write curl scripts to control forked-daapd
since you avoid the need to parse the replies just to find a valid
session id
2014-04-01 22:47:04 +02:00
ejurgensen
7e2f47f9ca Minor adjustment so Valgrind is happy with string handling in user_agent_filter 2014-04-01 21:51:07 +02:00
ejurgensen
a3f0145561 Open nonblock so it won't hang if other end is absent 2014-04-01 21:43:30 +02:00
ejurgensen
16756a6632 Clean up old allocations in pipe.c before allocating 2014-03-31 13:13:24 +02:00
ejurgensen
6062ca014b Make the player able to stream from pipes 2014-03-31 13:10:18 +02:00
ejurgensen
9efc97d702 Add support for query-modifier=containers in DACP playqueue-edit 2014-03-31 01:53:46 +02:00
ejurgensen
8740249e05 Clear up some code in filescanner.c 2014-03-31 00:04:03 +02:00
ejurgensen
0c79a02e93 Fix error in filescanner when renaming files. Allow scanner to add
fifos (named pipes) for later Shairport integration.
2014-03-30 23:44:30 +02:00
ejurgensen
49498800ba Add config option for preferred Spotify bitrate. README update. 2014-03-29 22:26:46 +01:00
ejurgensen
aef908b093 Don't announce support for playlist editing 2014-03-28 20:44:19 +01:00
ejurgensen
7d410fb6e7 Disable aeMk in databases reply since we don't calculate it properly 2014-03-28 19:25:15 +01:00
ejurgensen
35f8dd4233 DAAP modifications to properly show media kind shares in iTunes 2014-03-26 23:59:28 +01:00
ejurgensen
3ff4fa77be Merge branch 'libevent2' into dev 2014-03-24 04:59:08 +01:00
ejurgensen
c01bb54b79 Poor man's natural sort
- sort a1, a2, a11, a21, a100 instead of a1, a11, a100, a2, a21
2014-03-24 04:56:36 +01:00
ejurgensen
87f8b204df Rewrite spotify to use libevent for better reliability 2014-03-23 21:45:06 +01:00
ejurgensen
7c3da47eb7 Small DAAP changes to align with iTunes 2014-03-23 00:23:34 +01:00
ejurgensen
708b76ce1e Play only a single item when playspec has item-spec (Podcasts/Audiobooks) 2014-03-21 23:38:14 +01:00
ejurgensen
c01698e462 Filescanner should not watch for IN_MODIFY
- it is bad for performance (triggers many db selects) and is
useless anyway.
2014-03-21 22:57:56 +01:00
ejurgensen
3f1edc0082 Oops 2014-03-18 11:35:47 +01:00
ejurgensen
9484c43601 Prevent notify_main_thread from mucking with SPOTIFY_EVENT before an
event has been processed
2014-03-18 11:31:48 +01:00
ejurgensen
59b6462ba6 Small logging change 2014-03-18 10:01:06 +01:00
ejurgensen
4ab7ea6e31 Reduce Spotify logging a bit 2014-03-18 09:57:49 +01:00
ejurgensen
c3f05671b2 Spotify: When track ends, empty buffer before stopping. Also some
safeguards against indefinite waits and null pointer dereferencing.
2014-03-17 22:25:47 +01:00
ejurgensen
8b97d7fdd8 Forgot to remove some debug messages in mdns_avahi.c 2014-03-16 23:14:30 +01:00
ejurgensen
ae70bf58fc Make mdns_avahi.c fully compliant with libevent 2, so it doesn't
complain in the logs about missing event base for event_del_
2014-03-16 23:11:21 +01:00
chme
d5c6f1f72f Use EVBUFFER_EOL_CRLF for evbuffer_readln to make sure that the end of
the rtsp-header (an empty line) is recognized
2014-03-13 23:34:34 +01:00
ejurgensen
687f349927 Let configure check libevent version and include according to version 2014-03-13 23:33:35 +01:00
ejurgensen
5c40b2344c Another filescanner bug fix after Spotify commit 2014-03-12 22:59:47 +01:00
ejurgensen
f6e9ddbc41 Repair legacy filescanners (broken by libav conditions) 2014-03-12 22:54:30 +01:00
ejurgensen
81b285a79e Fix horrible filescanner bug I introduced with the Spotify commit 2014-03-12 21:48:04 +01:00
ejurgensen
7ed6cc98c3 Add support for Spotify (squashed commit), and:
- Try to not return items which a client can't play
    - Remove inotify subscription to IN_MODIFY and IN_CREATE
    - Fix crash on unknown codec type in transcode.c
    - Probably added some new bugs...
2014-03-11 23:20:29 +01:00
ejurgensen
190f91114e Support songartistid (asri) in group requests and queuefilter=artist
- credit misenhower of wp8remote.com
2014-02-21 20:39:57 +01:00
ejurgensen
7997377deb Adjust for libav 10 API
With libav 10 the API is (again...) changed, adjust for that and
add the appropriate version conditions
2014-02-17 23:05:24 +01:00
ejurgensen
1ec1528f3b Mimic iTunes and reply 204 No Content to playqueue-edit&add 2014-02-13 15:46:24 +01:00
ejurgensen
23a7e82a1f Add support for max volume for AirPlay devices (raop) 2014-02-09 16:07:00 +01:00
ejurgensen
258163e6ce hi-res timer commit broke FreeBSD. This attempts to go back to the
old code for FreeBSD.
2014-02-08 22:59:07 +01:00
ejurgensen
01f290cc2a Replace AirTunes with AirPlay in doc and log messages 2014-02-07 22:10:40 +01:00
Justin Maggard
0ec6e2f072 Extend support for kernels without high-res timers to 64-bit platforms. 2014-02-05 18:15:17 -08:00
Anthony Doko
949cf3808d Add support for embedded platforms that don't have high-res timers. 2014-02-05 18:11:10 -08:00
Justin Maggard
0426aa2d08 Fix issue with many WMA audio files not being recognized 2014-02-05 17:44:01 -08:00
Justin Maggard
5c8b28cda4 Fix crash with an empty buffer 2014-02-05 17:38:14 -08:00
Justin Maggard
f9a76aeb1a Add User-Agent detection for iTunes video playback on OSX
iTunes on OSX has a different User-Agent when playing back video
files.  Detect this so we can deterimine his codec support.
2014-02-05 17:34:27 -08:00
Justin Maggard
2f04529165 Don't use chunked encoding on range requests
If the client is requesting a partial file, don't use chunked
encoding.  This makes video files work in iTunes.
2014-02-05 17:32:09 -08:00
ejurgensen
3c941ca0e1 iTunes will drop the connection if user seeks during playback, but
no reason to log that on default log level
2014-02-03 23:12:19 +01:00
ejurgensen
3064509f62 HTTP Range header may be in the form 'bytes=12345-' (no end offset) 2014-02-03 22:02:20 +01:00
ejurgensen
4842751527 Reduce log level verbosity when no real error (eg no md field) 2014-02-03 21:54:46 +01:00
ejurgensen
6ad43e2369 Merge branch 'useragent' 2014-01-30 21:45:58 +01:00
ejurgensen
7314d0de0d Add config option to disable initial file scan 2014-01-28 22:40:07 +01:00
ejurgensen
785383861b ffmpeg/libav conditions for CodecID and AVCODEC_MAX_AUDIO_FRAME_SIZE (thanks @freultwah) 2014-01-27 21:24:08 +01:00