Julien BLACHE
b3294c5079
Fix debug message typo
2010-08-03 19:11:41 +02:00
Julien BLACHE
7d480faecd
Properly stop playback if playback cannot start to reset player state
...
If the playback cannot start for a reason of another, the player state
needs to be reset by calling playback_stop().
2010-08-03 19:09:50 +02:00
Julien BLACHE
d9f5e2aa40
Set playlist ID when queueing a playlist via DACP playspec
2010-07-31 12:32:14 +02:00
Julien BLACHE
ec1fc46c01
Include playlist ID in nowplaying
2010-07-31 12:31:56 +02:00
Julien BLACHE
98aaa7c5fa
Maintain current playlist ID in the player state
...
cur_plid is 0 if not playing a playlist and takes the playlist ID otherwise.
2010-07-31 12:30:51 +02:00
Julien BLACHE
94b4cd2459
Add support for shuffle in DACP playspec request
2010-07-31 12:09:13 +02:00
Kai Elwert
fa0ee0553a
Implement DACP playspec request
2010-07-31 12:09:13 +02:00
Kai Elwert
4a160e8ad1
Add player_queue_make_pl() for playlist-based queues
2010-07-31 12:09:13 +02:00
Kai Elwert
4347731133
Add mpco to playlists, hardcode to 0 for now
2010-07-31 10:40:39 +02:00
Kai Elwert
931c0aac29
Map mper to playlist id for playlists
2010-07-31 10:39:41 +02:00
Kai Elwert
055fe8f442
Make player_queue_make() generic and introduce player_queue_make_daap()
2010-07-31 10:30:45 +02:00
Julien BLACHE
2e6ed82e14
Fix debug message
2010-07-31 10:30:45 +02:00
Julien BLACHE
9a01a0e0d7
Kill RAOP sessions at deinit
2010-07-30 22:18:06 +02:00
Julien BLACHE
58f4f2d345
Stop playstatus update event at deinit
2010-07-30 22:16:55 +02:00
Julien BLACHE
3148ec8209
Stop command event and timer event (if running) at deinit
2010-07-30 22:16:07 +02:00
Julien BLACHE
7df92ae6bd
Stop inotify event at deinit
2010-07-30 22:15:38 +02:00
Julien BLACHE
25ee24d2be
Properly deinit DAAP sessions
...
Call event_del() before freeing the session when clearing the AVL tree. Caused
an infinite loop in event_base_free() in httpd_deinit().
2010-07-30 21:52:04 +02:00
Julien BLACHE
f6a9e1f7f4
Kill update request connections during deinit
...
Avoid leaving active requests on the HTTP server before shutting it down.
2010-07-30 21:42:53 +02:00
Julien BLACHE
51f879cb32
Turn flags into bitfields to reduce struct sizes
2010-07-30 19:09:09 +02:00
Julien BLACHE
9cb4aaa921
Look out for AppleTV and flag the device for unencrypted streaming
...
The AppleTV has been reported as not using the encryption. Not actually
tested as I don't have an AppleTV to test with.
2010-07-30 19:09:09 +02:00
Julien BLACHE
f5bcc82afb
Rework password handling in RAOP mDNS browser callback
2010-07-30 19:09:09 +02:00
Julien BLACHE
7a09ee4092
Add support for streaming unencrypted audio
2010-07-30 19:09:09 +02:00
Julien BLACHE
e106beb631
Rename, rearrange and make more use of the AIRTUNES_V2_* #defines
2010-07-30 18:34:59 +02:00
Julien BLACHE
27b44dfe09
Fixup error handling for player & httpd startup
2010-07-30 17:47:23 +02:00
Julien BLACHE
09485b0ed8
Update evrtsp based on evhttp 1.4.14b
...
Up from 1.4.10.
2010-07-23 18:28:50 +02:00
Julien BLACHE
e376a5c5ad
Update evhttp to 1.4.14b
...
Up from 1.4.10.
2010-07-23 18:28:42 +02:00
Julien BLACHE
81d09ed234
Account for new evhttp behaviour on failed incoming connections
...
The evcon associated with a request is freed by evhttp when the connection
fails. Protect against a NULL evcon when handling the connection failure.
2010-07-23 18:28:29 +02:00
Julien BLACHE
e396906fee
Protect db_perthread_deinit() against NULL hdl
2010-07-17 14:41:11 +02:00
Julien BLACHE
a678f5c99b
Relax Audio-Latency header check
...
Older G-only AirPort Express devices do not have an Audio-Latency header in
their RECORD reply.
2010-07-17 08:27:36 +02:00
Julien BLACHE
47bd255ffc
Do not add AirTunes devices that don't support AirTunes v2
...
Filter based on the tp field of the mDNS TXT record.
2010-07-17 08:05:06 +02:00
Julien BLACHE
4512a7ce9e
Do not add service browser to the list if browser creation fails
2010-07-16 18:36:16 +02:00
Julien BLACHE
4544dc152b
Coding-style fix
2010-07-16 18:36:09 +02:00
Julien BLACHE
3cbca1dd07
seteuid(0) for reopening the log file
2010-07-14 13:06:32 +02:00
Julien BLACHE
c4e4db0728
Complete IPv6 handling in the timing sync service
...
This commit adds the missing bits that should have been part of
commit efbea91ed4
when IPv6 support was
introduced. Oops.
2010-07-11 20:30:00 +02:00
Julien BLACHE
98ba2fb63d
Handle link-local addresses
...
Discard IPv4 link-local addresses; IPv4LL doesn't work on most systems, so the
address are effectively useless to us.
Turn IPv6 link-local addresses into scoped addresses by appending the interface
name to the address.
2010-07-10 12:36:47 +02:00
Julien BLACHE
e2712cae0d
Handle IPv6 scoped addresses
2010-07-10 12:36:47 +02:00
Julien BLACHE
deae610965
evrtsp: Handle IPv6 scoped addresses
2010-07-10 12:36:40 +02:00
Julien BLACHE
01cde2c50c
Cleanup debug message
2010-07-10 12:26:31 +02:00
Julien BLACHE
65d365197a
Use $(ANTLR) variable instead of substitution to invoke ANTLR
...
This makes it possible to override the value when calling make.
2010-06-26 12:20:49 +02:00
Julien BLACHE
8e31fd6672
Kill extra semi-colon
2010-06-21 19:19:13 +02:00
Julien BLACHE
691e6a8c93
Fix | vs. |= typo
2010-06-21 19:18:52 +02:00
Julien BLACHE
3b7a71527a
Check & fix UTF-8 strings before adding/updating files
2010-06-21 17:50:09 +02:00
Julien BLACHE
35d6ac4cfa
Add unicode_fixup_mfi() to check & reencode UTF-8 fields in struct media_file_info
2010-06-21 17:50:09 +02:00
Julien BLACHE
da0c10a392
Add unicode_fixup_string() to check & reencode UTF-8 strings
2010-06-21 17:50:09 +02:00
Julien BLACHE
b7aac26444
Check for GNU libunistring and use it
2010-06-21 17:50:09 +02:00
Julien BLACHE
7d858d6c9f
Add support for IPv6 RAOP sessions
2010-05-14 17:38:16 +02:00
Julien BLACHE
b1d265b0ea
Add IPv6 support for AirTunes streaming
2010-05-14 17:38:10 +02:00
Julien BLACHE
efbea91ed4
Run control and timing services on v4 and v6
...
Add pointers to the RAOP services (control & timing) to raop_session;
depending on the family, raop_session_make() will set them to the proper
services.
2010-05-14 17:38:05 +02:00
Julien BLACHE
4a199cdcce
Introduce struct raop_service for timing & control services
2010-05-14 17:38:00 +02:00
Julien BLACHE
b8238e6a78
Add IPv6 support to player and RAOP for device discovery
2010-05-14 17:37:55 +02:00
Julien BLACHE
c9818e9269
Add IPv6 support to Remote pairing agent
2010-05-14 17:37:13 +02:00
Julien BLACHE
588b328b45
IPv4 binding failure is fatal in all cases
...
IPv4 and IPv6 are bound separately; IPv6 may fail if unsupported, IPv4
must always succeed.
2010-05-14 17:36:58 +02:00
Julien BLACHE
ed38ce7dd1
Add IPv6 support to evrtsp
2010-05-14 17:36:41 +02:00
Julien BLACHE
74c4dd1ea3
Add IPv6 support to evhttp
...
Just the bits we need.
2010-05-14 17:36:36 +02:00
Julien BLACHE
4bd09cba62
Browse and resolve mDNS services on both IPv4 and IPv6
2010-05-14 17:36:29 +02:00
Julien BLACHE
c2ae855a28
Always re-add timing event instead of returning on error
2010-05-13 17:16:44 +02:00
Julien BLACHE
143b612c97
Fix REPEAT_OFF behaviour on single-item playlists
2010-05-09 09:52:09 +02:00
Julien BLACHE
576e1cc9ef
Check for player status after playback_write()
...
playback_write() can actually stop the player, so check that this did
not happen.
2010-05-09 09:24:05 +02:00
Julien BLACHE
4ebbe3696f
Fix integer parameter check for 32bit platforms
...
Replace strtol() with strtoll() as we need to handle 64bit values for
daap.songalbumid at least.
2010-05-09 09:00:44 +02:00
Julien BLACHE
84279b817d
Kill two open-coded instances of safe_atou32()
2010-05-09 08:55:50 +02:00
Julien BLACHE
1a829d69a0
Do not free evrtsp_request after make_request() call
...
At that point, the request has been added to the connection and will be
freed when the connection is freed.
2010-05-08 12:16:54 +02:00
Julien BLACHE
6de5c64670
Do not free evhttp_request after make_request() call
...
At that point, the request has been added to the connection and will be
freed when the connection is freed.
2010-05-08 12:05:52 +02:00
Julien BLACHE
c2977fd61d
Protect playback_start() againt empty playlist
2010-05-05 19:19:16 +02:00
Julien BLACHE
682e495ed0
Protect shuffle against empty player playlist
2010-05-05 19:17:36 +02:00
Julien BLACHE
36f0d0a76e
Implement DACP setproperty for dacp.userrating
2010-05-05 19:13:22 +02:00
Julien BLACHE
eb66a56e1d
Pass query parameters to DACP property setters
2010-05-05 19:13:15 +02:00
Julien BLACHE
f38ff924d7
Add safe_hextou32()
2010-05-05 19:13:15 +02:00
Julien BLACHE
548cd2a150
Use httpd_send_reply() instead of evhttp_send_reply() where pertinent
...
gzip replies where useful; artwork should not be compressed, as PNGs are
already compressed and that would be a waste of time.
2010-05-03 19:11:55 +02:00
Julien BLACHE
13c9de3ed1
Introduce httpd_send_reply() with gzip capability
2010-05-03 19:11:55 +02:00
Julien BLACHE
33936bacfa
Check for zlib and use it
2010-05-03 18:19:41 +02:00
Julien BLACHE
0982b9fbbb
Make vlogger() static; unneeded outside of logger.c
2010-05-03 18:19:40 +02:00
Julien BLACHE
b615946989
Default sound card for FreeBSD
2010-05-02 11:45:16 +02:00
Julien BLACHE
882b42f83c
Port player to FreeBSD
...
The kqueue/kevent timers are no replacement for timerfd, so unfortunately this
doesn't work well at all. Need a higher resolution timer.
2010-05-02 11:45:16 +02:00
Julien BLACHE
e49421b04b
Integrate OSS4 local audio output
2010-05-02 11:45:16 +02:00
Julien BLACHE
8c0649e066
Add OSS4 local audio output implementation
2010-05-02 11:45:15 +02:00
Julien BLACHE
d38db5868c
Implement jumping in DACP cue play command
2010-05-02 11:45:15 +02:00
Julien BLACHE
c11752e9a6
Honor dacp.shufflestate parameter in cue play command
2010-05-02 11:45:15 +02:00
Julien BLACHE
9f84fd9794
Wire up DACP setproperty for dacp.shufflestate
2010-05-02 11:45:15 +02:00
Julien BLACHE
a74caeed82
Wire up DACP setproperty for dacp.repeatstate
2010-05-02 11:45:15 +02:00
Julien BLACHE
7751c23f18
Implement DACP setproperty for dacp.playingtime
2010-05-02 11:45:15 +02:00
Julien BLACHE
6eca3a98d8
Implement DACP setproperty
2010-05-02 11:45:15 +02:00
Julien BLACHE
297c86c453
Implement DACP getproperty and DACP properties core code
2010-05-02 11:45:15 +02:00
Julien BLACHE
b73631bb5c
Introduce helpers for DACP nowplaying & playingtime
2010-05-02 11:45:15 +02:00
Julien BLACHE
505b7a2ade
Wire up nextitem and previtem
2010-05-02 11:45:15 +02:00
Julien BLACHE
b4a5ba6f3c
Wire up pause and playpause
2010-05-02 11:45:15 +02:00
Julien BLACHE
f5e84d6950
Implement DACP nowplayingartwork
2010-05-02 11:45:15 +02:00
Julien BLACHE
9c569f10a9
Implement playstatus updates
2010-05-02 11:45:15 +02:00
Julien BLACHE
b72948e027
Rework playstatusupdate reply
...
Introduce make_playstatusupdate() and use player_get_status() to get the
player status. Implement the full playstatusupdate reply.
2010-05-02 11:45:15 +02:00
Julien BLACHE
ca2ee21d84
Implement DACP cue requests
2010-05-02 11:45:15 +02:00
Julien BLACHE
bb5703d878
Implement DACP setspeakers
2010-05-02 11:45:14 +02:00
Julien BLACHE
aa20a2e485
Implement DACP getspeakers
2010-05-02 11:45:14 +02:00
Julien BLACHE
d036fa306e
Wire up player
2010-05-02 11:45:14 +02:00
Julien BLACHE
87861b54ea
Build audio player
2010-05-02 11:45:14 +02:00
Julien BLACHE
f7886c87cb
Add Airport Express device section
2010-05-02 11:45:14 +02:00
Julien BLACHE
f93090a713
Add audio section to the config file
2010-05-02 11:45:14 +02:00
Julien BLACHE
ffcf100c00
Replace rng_rand_range() with GLib's g_rand_int_range() that works better
2010-05-02 11:45:14 +02:00
Julien BLACHE
5e9c245e39
Add random number generator and related functions
2010-05-02 11:45:14 +02:00
Julien BLACHE
47589ff34a
Add audio player
2010-05-02 11:45:14 +02:00
Julien BLACHE
53c20c2f1c
Add ALSA-based local audio output support
2010-05-02 11:44:43 +02:00
Julien BLACHE
d335b2d331
Add RAOP implementation, with AirTunes v2 streaming
2010-05-02 11:44:43 +02:00
Julien BLACHE
992eb9009a
Add evrtsp - RTSP implementation on top of libevent, derived from evhttp
2010-05-02 11:44:43 +02:00
Julien BLACHE
8427707afc
Create evbase_httpd before protocol handlers init
...
DACP needs the httpd event base at init time.
2010-05-02 11:44:43 +02:00
Julien BLACHE
dc95a04562
Add optional sorting clause to Q_ITEMS
2010-05-02 11:44:43 +02:00
Julien BLACHE
4dc8f11887
Handle database upgrade v9 -> v10
2010-05-02 11:44:43 +02:00
Julien BLACHE
74cc5a7a13
Add config variables save/fetch for integer variables
2010-05-02 11:44:43 +02:00
Julien BLACHE
49b7a96eec
Add safe_hextou64()
2010-05-02 11:44:43 +02:00
Julien BLACHE
7a02215d0d
Add Base64 encoding routines
2010-05-02 11:44:43 +02:00
Julien BLACHE
1849601d56
Add a log handler for libasound
2010-05-02 11:44:43 +02:00
Julien BLACHE
ff7e6aa533
Add logdomains for player, RAOP and local audio
2010-05-02 11:21:08 +02:00
Julien BLACHE
17daace67f
Add seek support to transcode
2010-05-02 11:21:08 +02:00
Julien BLACHE
9fb7ec8e5c
Make the WAV header optional
2010-05-02 11:21:08 +02:00
Julien BLACHE
e3fb8f00cf
Maintain libhash in the conffile module
2010-05-02 11:21:07 +02:00
Julien BLACHE
27acda871a
Constify dmap_add_string() parameter
2010-05-02 11:21:07 +02:00
Julien BLACHE
bccc6da87f
Set closecb to NULL on update requests' connections at deinit
...
Otherwise the closecb is called when the connection is closed/freed during
deinit, and this happens in the HTTP cleanup after the DAAP and DACP cleanups
have run, leading to spurious "struct update_request not found" messages.
2010-05-02 11:21:07 +02:00
Julien BLACHE
17b1e1a7bf
Fix size_t in snprintf()
2010-05-02 10:17:22 +02:00
Julien BLACHE
f696aa321e
Fix error message in db_file_add()
2010-05-02 08:23:21 +02:00
Julien BLACHE
465c10ded3
Rework database version check to error out on newer databases
2010-05-02 08:23:21 +02:00
Julien BLACHE
00d6381f15
Introduce and use db_blocking_{prepare_v2,step}
...
Make use of the SQLite3 unlock notify API to wait for the database to
become available. From the SQLite3 sample code for the unlock notify API.
This requires SQLite3 to be built with SQLITE_ENABLE_UNLOCK_NOTIFY.
2010-05-02 08:23:21 +02:00
Julien BLACHE
f9454aa4a3
Introduce db_exec(), replacing sqlite3_exec()
2010-05-02 08:23:21 +02:00
Julien BLACHE
dc18860dc5
Enable SQLite3 shared-cache mode
...
This requires SQLite 3.5.0+ for per-process (as opposed to per-thread)
shared-cache support.
It also enables the use of the unlock notify API.
2010-05-02 08:22:41 +02:00
Julien BLACHE
d2932896a3
Switch SQLite3 to SQLITE_CONFIG_MULTITHREAD mode
2010-05-02 08:22:41 +02:00
Julien BLACHE
0411720a58
Perform explicit sqlite3 init/deinit
2010-04-26 18:24:09 +02:00
Dustin King
4551d530f9
Lower logging level for files with no metadata
2010-04-10 11:23:11 +02:00
Dustin King
ce8fe19627
Add handlers for ID3v2 track and disc fields
2010-04-10 11:21:04 +02:00
Dustin King
61f5b6d833
Run two passes for gathering metadata
...
The extra md_map needs to be used before the generic md_map because
the extra md_map needs to be used before av_metadata_conv while the
generic md_map needs to be used after av_metadata_conv. This allows
handling of things like ID3v2 track fields which get mapped to the
generic track field by av_metadata_conv but actually contain both
track number and the total number of tracks on the disc.
Note: modified from Dustin's original patch.
2010-04-10 11:15:16 +02:00
Dustin King
b8b205e7f2
Add function pointer for metadata handler to struct metadata_map
2010-04-10 10:59:29 +02:00
Dustin King
b219b912f2
Split out VORBIS field names into a dedicated extra md_map
2010-04-10 10:55:52 +02:00
Julien BLACHE
f36261be65
Add album_artist to the generic md_map
...
The generic metadata field name is album_artist and not albumartist; that, or we
previously missed that field.
2010-04-10 10:55:52 +02:00
Dustin King
a5bdb9d59a
Identify TDRC as coming from ID3v2.4
2010-04-10 10:55:46 +02:00
Julien BLACHE
1df0258055
Demote "could not find requested meta field" message to E_WARN
2010-04-10 09:46:48 +02:00
Julien BLACHE
5475c18308
Remove FLAC-specific raw mode
...
Older versions of ffmpeg did not support raw FLAC streams properly and needed
to be fed the raw stream manually; looks like it's been fixed in ffmpeg 0.5.
2010-03-28 16:19:30 +02:00
Julien BLACHE
887d1bf5ca
Small clarification in transcode_cleanup()
2010-03-28 16:14:36 +02:00
Julien BLACHE
21e564e493
Add the DISCTOTAL tag for formats using VORBIS comments
2010-03-27 12:08:49 +01:00
Julien BLACHE
e87f46e95c
Add the TRACKTOTAL tag for format using VORBIS comments
2010-03-25 21:40:17 +01:00
Julien BLACHE
b7ec65963d
Constify data tables where possible
2010-03-25 21:40:17 +01:00
Julien BLACHE
c545e52374
Simplify streams handling
...
Keep pointers to the streams instead of the stream number.
2010-03-25 21:40:17 +01:00
Julien BLACHE
6677b3435d
Call av_metadata_conv() to convert metadata to ffmpeg's generic format
...
This is actually needed for everything to work properly, but it only really
started breaking with newer versions of ffmpeg where more demuxers have been
completely ported over to the metadata API.
2010-03-25 21:40:17 +01:00
Julien BLACHE
04e8f5cfd6
Split TV show tags out of the generic md_map
2010-03-25 21:39:41 +01:00
Julien BLACHE
27a095b606
Split ID3 tags out of the generic md_map
2010-03-25 21:38:19 +01:00
Julien BLACHE
52e38dd76a
Allow a secondary metadata map for metadata extraction
2010-03-25 21:38:19 +01:00
Julien BLACHE
4da80edc3f
Pick up metadata from the selected stream(s) in addition to the file itself
...
OGG has per-stream metadata; recent versions of ffmpeg report metadata
per-stream in this case.
2010-03-25 21:38:19 +01:00
Julien BLACHE
c2f64e4280
Split metadata extraction out of scan_metadata_ffmpeg()
2010-03-25 21:38:19 +01:00
Julien BLACHE
d71fa2b72e
Replace av_read_packet() (obsolete) by av_read_frame()
...
Fixes MP3 playback, probably others too.
2010-03-25 20:28:23 +01:00
Dustin King
e6d75534d7
Make database location a configuration item
2010-03-21 11:33:05 +01:00
Julien BLACHE
6c6a3a7935
Make a note to remove ID3v2 tag names ASAP
2010-03-21 11:27:55 +01:00
Dustin King
6424a1fe95
Add ID3v2.2 tag names
2010-03-21 11:21:43 +01:00
Dustin King
39dfa4dae1
Mark ID3v2.3 metadata tag names as such
2010-03-21 11:18:10 +01:00
Julien BLACHE
4996965b34
Handle database upgrade v8 -> v9
2010-03-19 19:14:34 +01:00
Julien BLACHE
19b6780a3c
Remove provisions for multi-library support
...
It is now clear that multi-library support will not happen, so remove whatever
provisions were in the code for that.
It comes with a small change to the configuration file, too.
With this, DB schema version went to 9.
2010-03-19 19:09:18 +01:00
Julien BLACHE
d6285eef40
Add audio resampling to the audio decoding code
...
Transcoded (decoded) files will now always come out in signed, little endian,
16bit, 44100 Hz, stereo format regardless of the format of the input file.
This in effect fixes transcoding (and playback on some devices) for files that
do not match this format.
There's probably a discussion to be had regarding handling of 48 kHz and 96 kHz
content, though, as downsampling to 44.1 kHz to have the client or final output
device upsample again is clearly not an optimal solution.
2010-03-15 18:38:33 +01:00
Julien BLACHE
8375ac75ca
Rework error handling in transcode_setup()
...
Add the setup_fail_codec label and jump to it if an error occurs once the
codec has been opened. In the raw input codepath, don't use this label until
the file is properly opened, as it also closes the fd and frees the raw
buffer.
This also fixes a file descriptor leak in the case where an error happened
after the file was opened in the raw input codepath.
2010-03-15 18:35:29 +01:00
Julien BLACHE
db0690afa1
Use int16_t for decoded audio data buffers
2010-03-15 18:34:14 +01:00
Julien BLACHE
9e8403061c
Add TPE2 -> albumartist ID3v2 mapping
...
Reported by Ace Jones.
2010-03-10 17:11:08 +01:00
Julien BLACHE
5da807f829
Add ID3v2 tags to the metadata table
...
ffmpeg doesn't convert ID3v2 tag names to generic metadata names, so
add the ID3v2 tag names to the table to pick them up.
This fixes scanning of MP3 files in various cases.
More in this post and its attachment:
<http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-September/076213.html >
Thanks to Raivo Hool for bringing up the issue and fix.
2010-03-07 19:18:06 +01:00
Julien BLACHE
ece7c0d071
Handle DAAP extra_data requests for groups/items artwork
2010-03-07 15:45:52 +01:00
Julien BLACHE
0eca9b4313
Add artwork handling routines
...
External artwork only, until ffmpeg supports embedded artwork.
2010-03-07 15:45:47 +01:00
Julien BLACHE
666ce98055
Add a logdomain for artwork handling
2010-03-07 15:23:40 +01:00
Julien BLACHE
ca1c72651f
Bump log prefix size to 8
2010-03-07 15:23:40 +01:00
Julien BLACHE
b0e10fb97d
Add groups queries
2010-03-07 15:23:40 +01:00
Julien BLACHE
641e5462cc
Rename pl_id member of struct query_params
2010-03-07 15:23:40 +01:00
Julien BLACHE
6a144cd670
Add db_file_path_byid()
2010-03-07 11:13:38 +01:00
Julien BLACHE
1f5efe038b
Register ffmpeg evbuffer URL handler
2010-03-07 11:13:38 +01:00
Julien BLACHE
a1ef2ab243
FFmpeg "evbuffer:0x..." URLProtocol implementation
...
Implement a URL handler to output data to an evbuffer from ffmpeg.
2010-03-07 11:13:38 +01:00
Julien BLACHE
119525e612
Add a logger callback for FFmpeg log messages
2010-03-07 11:13:38 +01:00
Julien BLACHE
4c48dbad28
Add a logdomain for ffmpeg
2010-03-07 11:13:38 +01:00
Julien BLACHE
107ec85578
Constify the format string of logging functions
2010-03-07 11:13:38 +01:00
Julien BLACHE
07146e3261
Handle database upgrade v7 -> v8
2010-03-06 19:10:49 +01:00
Julien BLACHE
224ef48137
Make album groups persistent
...
Store groups (only album groups supported at the moment) in the DB,
so their ids are persistent for the duration of the forked-daapd session.
Those ids are used to, among other things, retrieve artwork, so we must
provide ourselves some persistence here.
This brings us to schema version 8.
2010-03-06 19:02:49 +01:00
Julien BLACHE
88dde32fc7
Recompute all songalbumids at startup
...
Due to the two Murmur64 implementations for 64 and 32bit machines, the
hash is not compatible when moving the SQLite DB between 32/64 bit hosts.
So we'll recompute all the songalbumids at startup, just in case.
2010-03-06 18:59:58 +01:00
Julien BLACHE
0e9a8674d9
Handle database upgrade v6 -> v7
2010-03-06 17:29:48 +01:00
Julien BLACHE
facb9957d8
Move daap_songalbumid() to its now-unique callsite
2010-03-06 17:29:48 +01:00
Julien BLACHE
748cca63be
Maintain songalbumid inside the files table
...
songalbumid is used a lot in queries from Remote; computing the hash for
each row is a major waste of time on big libraries and slow machines, so
let's store the hash in the table.
This brings us to schema version 7.
2010-03-06 17:29:37 +01:00
Julien BLACHE
20c57d5289
Implement DAAP auto-logout
...
And advertise it.
2010-03-06 10:30:59 +01:00
Julien BLACHE
8c2def5ef5
Move daap_session_kill() higher up
...
No functional changes.
2010-03-06 10:29:53 +01:00
Julien BLACHE
affbae1c47
Make evbase_httpd non-static
...
Make the httpd event base available to httpd protocol handlers.
2010-03-06 10:27:39 +01:00
Julien BLACHE
c9e91532b3
Get rid of the intermediate buffer in itunes_pairing_hash()
...
No need to build the string to be hashed in advance, it can just
be written piece by piece to the md.
2010-02-22 17:49:24 +01:00
Julien BLACHE
2dde2f180d
Revert "Add a fail_cb to evhttp_request for connection failures"
...
The fail_cb extension was actually never needed; we've migrated away from
it, so let's clean that up now.
This reverts commit 1ffcbdae27
.
2010-02-14 09:36:55 +01:00
Julien BLACHE
18abda3a97
Use evhttp_connection's closecb instead of our fail_cb extension
...
The closecb callback of evhttp_connection does what we need, so no need
to use that extension anymore.
2010-02-14 09:34:29 +01:00
Ace Jones
a92dc076e8
Add a test facility for DMAP
...
Add a /dmap-test handler that sends back a list containing test values
for all standard DMAP types (string + all integer types).
2010-02-10 18:29:26 +01:00
Julien BLACHE
056f4b6997
Reindent dmap_add_field()
...
Fix indentation in dmap_add_field(), no functional changes.
2010-02-10 18:29:26 +01:00
Julien BLACHE
3280fd5cf9
Get rid of magic hash values for filtering query parameters
...
Some metadata were filtered out from the reply by directly checking
for their hash, including the hash value in the code. Remove the magic
values and compare dfm->field against the relevant dmap_* field as for
other special cases.
2010-02-10 18:29:26 +01:00
Julien BLACHE
2524eb0f8f
Rework special cases in daap_reply_songlist_generic()
...
Use a pointer comparison instead of strcmp(), now that the fields
have been separated out from the field map.
2010-02-10 18:29:26 +01:00
Julien BLACHE
3df34fe9a8
Remove mper special case in daap_reply_groups()
...
mper was so far the only LONG we really cared about, but dmap_add_field()
now has proper support all DMAP types. This special case can go.
2010-02-10 18:29:26 +01:00
Ace Jones
cfabc9a456
Update DMAP fields
...
Update field types, add new fields (commented out). This fixes a number
of mis-assigned types. Update generated from the result of a /content-codes
request.
2010-02-10 18:29:26 +01:00
Ace Jones
b4b89dd937
Break out the dmap_field_map struct into two structs
...
Introduce struct dmap_field holding the field tag, description and
DMAP type and use it in struct dmap_field_map to replace the tag,
desc and type fields.
This enables semi-automated updates of the DMAP fields information
from the output of a /content-codes request.
2010-02-10 18:29:20 +01:00
Julien BLACHE
d8bd8e5381
Rewrite dmap_add_field() to handle properly all DMAP types
2010-02-10 18:21:32 +01:00
Ace Jones
20d08d8a49
Add safe_atou32() and safe_atou64()
2010-02-10 18:21:32 +01:00
Ace Jones
0607e82a42
Add missing DMAP types and correct existing types
...
Most of the unsigned DMAP types were missing and assignments were incorrect
between signed and unsigned types. Fix all of this, and add (preliminary)
support for the new types.
2010-02-10 18:21:32 +01:00
Julien BLACHE
d4fb2091c8
Use an enum for DMAP types
2010-02-10 18:21:32 +01:00
Julien BLACHE
42dd7ddd00
Kill code redundant with dmap_add_field()
...
This code in daap_reply_songlist_generic() is redundant with code
in (new) dmap_add_field() and can be removed, with a tweak: we must
ensure the val integer is always 0 if not used to override a value in
the transcoding case.
2010-02-10 18:21:32 +01:00
Julien BLACHE
a5a46b8a53
Fix lseek() return value handling
...
lseek() returns an off_t and not an int, using an int to store and
test the return value means we'll error out when the position in the file
gets past INT_MAX.
2010-02-10 18:19:32 +01:00
Julien BLACHE
2b4f07195a
Kill leftover includes
2010-02-06 07:25:44 +01:00
Julien BLACHE
71a40c5149
Simplify the iTunes pairing hash using standard MD5
...
The pairing hash actually uses standard MD5, so let's simplify the
code by using a standard MD5 implementation. Now that function is
readable and understandable by mere mortals.
Thanks to Jeff Sharkey for posting that simplified version.
2010-02-05 18:39:03 +01:00
Julien BLACHE
2f385bff2c
Add libgcrypt, check for it and perform global initialization
2010-02-05 18:38:39 +01:00
Julien BLACHE
cb4320791b
Use eventfd instead of pipes if available
...
eventfd has less overhead than a pipe, works as a counter and uses a
single fd. Use it on Linux if available (that should be pretty much
always given the glibc and kernel requirements).
2010-02-04 18:52:13 +01:00
Julien BLACHE
274dccf66c
Reduce STREAM_CHUNK_SIZE to a more manageable 64k
...
512k might be a bit too much, as it can take time to read 512k from the
filesystem (and we're using a blocking read) or from the decoder. Going
down to 64k will make this more manageable and improve the response time
when streaming to multiple clients at the same time.
2010-02-02 21:09:56 +01:00
Julien BLACHE
848dd41993
serve_file() is broken due to evbuffer_read()
...
If we ever need to serve files for a web interface or otherwise, serve_file()
will need to be fixed to not use evbuffer_read().
2010-02-02 21:09:56 +01:00
Julien BLACHE
6e5f49bdf9
Use transcode variable to check for transcoding status
2010-02-02 21:09:56 +01:00
Julien BLACHE
825569dc88
Rework failure path in httpd_stream_file()
...
Kill code duplication, make it all clearer.
2010-02-02 21:09:56 +01:00
Julien BLACHE
f0239951e1
Replace evbuffer_read(); should not be applied to files
...
evbuffer_read() is really meant to read from sockets and not regular
files. It also looks like evbuffer_read() was causing issues with large
files, locking up a little below 2 GB for an unknown reason (couldn't
reproduce).
2010-02-02 21:09:56 +01:00