Commit Graph

2530 Commits

Author SHA1 Message Date
ejurgensen
48b7cd9a05 Adds looking for artwork named [directory name].{png,jpg} 2013-07-14 20:54:23 +02:00
ejurgensen
0b571765d3 Artwork file names made configurable 2013-07-13 12:31:01 +02:00
ejurgensen
0f3cf27f57 Also look for artwork in folder.jpg 2013-07-05 12:21:14 +02:00
Kai Elwert
49ab2a3ce4 Allow playback on non apple airplay devices 2013-07-04 14:57:00 +02:00
ejurgensen
9172a1618d Removed avcodec_init, obsolete in ffmpeg 0.11 2013-05-24 20:57:42 +02:00
ejurgensen
fa965dee75 Changed SAMPLE_FMT_S16 for ffmpeg 0.11 2013-05-24 20:33:26 +02:00
Thijs Reus
6c7fa8f299 Now artists/albums are properly sorted and grouped 2013-05-24 18:51:57 +02:00
Thijs Reus
6b0fde9dba Fixed RemoteApp communication which broke for Remote 3.0 due to some new properties in the query 2013-05-24 18:44:57 +02:00
ejurgensen
67c092828d Only eventfd_write is used, so check for that 2013-05-24 18:33:20 +02:00
Craig Markwardt
c2e6eeda32 Fixes for Amarok and Banshee clients which don't send
revision-number in their update request.

Details: Banshee (v1.6.1) and Amarok client players send an
update request but do not send the revision-number parameter.
iTunes version 10 (and perhaps earlier) does send this parameter.
See: https://github.com/jasonmc/forked-daapd/issues/78

Fix: function daap_reply_update() now warns when revision-number
is not submitted by the client, but does not reply with an error.
In that case the server assumes a revision-number which insures
an update is sent back to the client.

Testing:
I verified that the following clients were able to connect succesfully
and retrieve a library listing:
  * iTunes 10.5.2
  * iTunes 10.4.2
  * iTunes 9.7.1
  * Rhythmbox 0.12.8
  * Banshee 1.6.1
I can't test with Amarok since I don't have this client.
2012-01-02 04:22:39 -05:00
Craig Markwardt
bd10978d52 Fixes for iTunes v10.5 time-outs.
Details:

iTunes v10.5 clients changed how they responded to DAAP
protocol, and started disconnecting when the forked-daapd server
sent an empty "refresh" reply ("mupd" protocol).  This problem is
also coupled with session-timeout ("mstm" and "msal"); when these
server capabilities were enabled, iTunes 10.x clients did not poll
for updates and eventually disconnected.

I investigated DAAP network packets using Wireshark.  I found that
a true iTunes server sends a set of server capabilities in a specific
order, and order matters to the client.  When the correct order is used,
the client correctly polls for updates and does not disconnect.

This change:
  1. Send server capabilities in different order (daap_reply_server_info).
  2. Disables 5-minute update refresh.
  3. Disables 30-minute inactivity time-out.

Testing:
This server version successfully stayed connected to the
following clients:
  * iTunes 10.5.2
  * iTunes 10.4.2
  * iTunes 9.7.1
  * Rhythmbox 0.12.8
The clients stayed connected for at least several hours,
sometimes days, with activity or no activity.
2012-01-02 02:15:18 -05:00
Craig Markwardt
54d3951c20 Merge remote branch 'upstream/libevent' 2012-01-01 23:54:23 -05:00
Craig Markwardt
e9cdf88102 Revert "Fix 30 minute iTunes/DAAP time-out problem"
This reverts commit 7a021b2332.
2012-01-01 23:51:51 -05:00
Craig Markwardt
4eb416a3b3 Revert "Enable dynamic library updating"
This reverts commit 732ec9239a.
2012-01-01 23:51:34 -05:00
Julien BLACHE
f7d7dfc919 Bump version to 0.19 2011-09-11 15:46:25 +02:00
Julien BLACHE
078570954e ChangeLog for forked-daapd 0.19 2011-09-11 15:45:42 +02:00
Julien BLACHE
4be0d86aa0 Revert "Disable session expiration"
This reverts commit c70caad87e.
2011-09-10 18:44:37 +02:00
Julien BLACHE
9f06848d43 Reply to update requests periodically to avoid 30-minute iTunes timeout
Craig Markwardt <craig.markwardt@gmail.com> found out that the 30-minute
timeout in iTunes was caused by the lack of reply to update requests.

We now send out replies every 5 minutes, avoiding the timeout and
disconnection.

Thanks to Craig for digging into this, producing code to demonstrate the fix
and trying out a few more ideas for update support beyond this fix.
2011-09-10 18:37:16 +02:00
Julien BLACHE
ad4e15c362 Handle database upgrade v12 -> v13 2011-09-10 12:56:30 +02:00
Julien BLACHE
efcd463946 Add indexes for playlists 2011-09-10 12:56:30 +02:00
Julien BLACHE
664067fd88 Rewrite group queries, remove JOIN, add index
SQLite has trouble optimizing the query when written with JOIN, but does
pretty well using the indexes when written without JOIN. Add an index for
the query, too.
2011-09-10 12:56:30 +02:00
Julien BLACHE
cbc7108fcf Use table aliases in all queries, update RSP & DAAP filters to match 2011-09-10 12:56:30 +02:00
Julien BLACHE
617c026060 Add covering indexes for *{,_sort} fields
These indexes help queries searching on these fields and will act as covering
indexes for sort strings, too.
2011-09-10 12:56:30 +02:00
Julien BLACHE
becdfdb062 Add new indexes for general speedup
An index on songalbumid helps for joins on songalbumid on the files table; a
covering index on disabled+media_kind+songalbumid helps in numerous queries
all over the place.
2011-09-10 12:56:30 +02:00
Julien BLACHE
1dfd27090e Speedup startup rescan 2011-09-10 12:56:30 +02:00
Julien BLACHE
96c367f556 Kill useless database indexes 2011-09-10 12:56:30 +02:00
Julien BLACHE
333b7710bc Queries must hit SQLITE_DONE to execute profiling callback 2011-09-10 12:56:30 +02:00
Julien BLACHE
d05634fddd Print query execution time in milliseconds 2011-09-10 12:56:29 +02:00
Julien BLACHE
a2b7b811b8 Add query plan to DB profiling callback 2011-09-10 12:56:29 +02:00
Julien BLACHE
181b1e772f Add a logdomain for DB performance data 2011-09-10 12:56:29 +02:00
Peter Carmichael
6e10252021 Perform post-bulk-scan DB maintenance 2011-09-10 12:56:29 +02:00
Julien BLACHE
1909623d43 Run ANALYZE after DB startup 2011-09-10 12:56:29 +02:00
Peter Carmichael
3caae459be Add DB maintenance routines 2011-09-10 12:56:29 +02:00
Julien BLACHE
0b2df54524 libav 0.7: switch to generic AVDictionary for metadata handling 2011-09-10 12:48:14 +02:00
Julien BLACHE
a2f409dd0a libav 0.7: use av_dump_format() instead of dump_format() 2011-09-10 12:48:14 +02:00
Julien BLACHE
ed20d3f7de libav 0.7: use av_get_bytes_per_sample() instead of av_get_bits_per_sample_fmt() 2011-09-10 12:48:14 +02:00
Julien BLACHE
bb8f9de8ec libav 0.7: use avformat_write_header() instead of av_write_header() 2011-09-10 12:48:14 +02:00
Julien BLACHE
dbe22c2c02 libav 0.7: use avformat_open_input() instead of av_open_input_file() 2011-09-10 12:48:14 +02:00
Anthony Doko
29fe36522d Add TV metadata patch for libav 0.7 2011-08-27 18:22:23 +02:00
Craig Markwardt
732ec9239a Enable dynamic library updating
Modifications to db.c to enable the DAAP server to determine when
the media library has changed, and notify clients via an update.
Updates should show up to clients within 10 seconds.

Tested on iTunes 9.2.1
2011-08-24 00:47:27 -04:00
Craig Markwardt
7a021b2332 Fix 30 minute iTunes/DAAP time-out problem
httpd_daap now responds to client "update" requests.  Previously,
these requests were queued without response, and the client
closed the control session after 30 minutes of inactivity.  This
modification pushes out an update response when a new database
revision becomes available, or 25 minutes, whichever comes sooner.
This change set does not monitor the database state, so dynamic
updates to a library listing do not occur.  What you see at login
to the server is what you get.

Tested against iTunes 9.2.1; a connection stays up for hours,
regardless whether a song is being played or not.
2011-08-24 00:27:49 -04:00
Julien BLACHE
4472f9e955 Fix infinite loop on unknown DACP property
Missing strtok_r() call in the !dpm case.
2011-08-15 12:50:43 +02:00
Julien BLACHE
177d444f9f Bump version to 0.18 2011-08-07 11:20:38 +02:00
Julien BLACHE
e9c87d1a2f ChangeLog for forked-daapd 0.18 2011-08-07 11:20:14 +02:00
Julien BLACHE
bea6bc762a Update copyright message 2011-07-09 12:12:59 +02:00
Julien BLACHE
f08c18a5ed Add config knob for mixer channel name (ALSA/Linux only)
In some complex ALSA setups, using PCM or Master is not the right thing
to do, so allow a custom mixer element name to be specified in the config
file for this use case.

Request and initial patch by Kurt Vanderlinden <kurt.vanderlinden@skynet.be>.
2011-07-09 12:12:58 +02:00
Julien BLACHE
77cb2d403b Remove getpwnam() call, use runas_{uid,gid} from conffile.h 2011-07-09 12:12:58 +02:00
Julien BLACHE
4b950aa151 Remove getpwnam() call from logger, use runas_{uid,gid} from conffile.h 2011-07-09 12:02:09 +02:00
Julien BLACHE
a40f3f0629 Resolve runas username when loading configuration and export uid/gid 2011-07-09 12:02:09 +02:00
Julien BLACHE
6feac7dd45 Do not elevate privileges to reopen the log file
Instead, set ownership and permissions at startup and rely on logrotate
recreating a new log file with appropriate permissions after that.
2011-07-09 12:02:09 +02:00