Julien BLACHE
1bea809078
Make disc parsing code generic, too
2011-06-04 12:08:50 +02:00
Julien BLACHE
a453e0e4ac
libav 0.7: Use AVIO with libavformat >= 53
2011-06-02 22:16:53 +02:00
Julien BLACHE
6aa45c0b0c
libav 0.7: Add AVIO interface to evbuffer, replacing ffmpeg_url_evbuffer
2011-06-02 22:16:53 +02:00
Julien BLACHE
6797e65861
libav 0.7: Silence const vs. non-const warning
2011-06-02 22:16:53 +02:00
Julien BLACHE
74b7c69828
libav 0.7: Metadata string for track can be "track/totaltrack"
2011-06-02 22:16:53 +02:00
Julien BLACHE
57e569aeb5
Make track parsing code generic
2011-06-02 22:16:53 +02:00
Julien BLACHE
3caf3df662
libav 0.7: Add new generic metadata names
2011-06-02 22:16:53 +02:00
Julien BLACHE
b46afdc150
libav 0.7: Calling av_metadata_conv() is no longer needed
2011-06-02 22:16:52 +02:00
Julien BLACHE
b1d31feb53
libav 0.7: Switch from av_get_bits_per_sample_format() to ..._fmt()
2011-06-02 22:16:52 +02:00
Julien BLACHE
ecf064082f
libav 0.7: Use skip_frame instead of hurry_up
2011-06-02 22:16:52 +02:00
Julien BLACHE
b203f1ea1f
libav 0.7: Replace CODEC_TYPE_* with AVMEDIA_TYPE_*
2011-06-02 22:09:42 +02:00
Julien BLACHE
d8685846d0
Update documentation and build system for libav
...
We are using libav after the ffmpeg/libav fork during the 0.6 series.
2011-06-02 22:06:44 +02:00
Julien BLACHE
ec5ace7dc9
Reset hurry_up to 0 after we acquired a frame with known PTS
2011-06-02 22:06:44 +02:00
Julien BLACHE
4f3635e354
Handle SQLITE_SCHEMA error in db_exec()
...
This happens under database load with many concurrent threads doing updates;
queries failing with SQLITE_SCHEMA at step time need to retried from scratch
until they succeeded or hit a best-effort limit of 5 retries.
2011-05-28 10:48:31 +02:00
Julien BLACHE
4594cc3d63
Enhance db_exec() error messages
2011-05-28 10:46:41 +02:00
Julien BLACHE
75dc4106a8
Remove byte-order mark from UTF-8 strings
...
The byte-order marks are useless for UTF-8, but that doesn't mean we don't
find them in the wild. Get rid of them, they confuse the hell out of the
collation functions.
Reported by Kai Elwert.
2011-04-30 18:59:29 +02:00
Julien BLACHE
2cd56dfc6d
Bail out early on if artwork format is not supported
2011-04-30 11:41:12 +02:00
Julien BLACHE
52dcd4cb10
Add default case to address family switch for maximum compiler happiness
2011-04-30 11:41:12 +02:00
Julien BLACHE
0dac53f25c
Kill unused variable len
2011-04-30 11:41:12 +02:00
Julien BLACHE
a70a45d925
Fix DAAP songlist generation after code move to dmap_common
...
Handling of the sort tags was left into httpd_daap.c where the code runs
after the song is added to the songlist - effectively adding the sort tags
to the *next* song, leading to incorrect sort tags on the current song.
2011-04-28 18:25:14 +02:00
Julien BLACHE
49a9ff64dc
Use st->size instead of sb.st_size which is only valid for raw files
2011-04-24 19:03:47 +02:00
Julien BLACHE
2cead60432
Remove unused prev variable
2011-04-24 18:43:58 +02:00
Julien BLACHE
f86915f15e
Fix typo, goto before ret assignment
2011-04-24 18:40:32 +02:00
Julien BLACHE
88280217a4
Remove useless assignments in while() conditions
2011-04-24 18:29:04 +02:00
Julien BLACHE
d8f4efe126
Remove unused lib variable
2011-04-24 18:25:30 +02:00
Julien BLACHE
97433dc5ef
Whitespace fixup
2011-04-16 10:17:03 +02:00
Julien BLACHE
a981fa0a45
Ensure mfi->title is proper UTF-8 when set to mfi->fname
2011-04-16 10:16:28 +02:00
Julien BLACHE
a116e2ad1f
Perform Unicode fixup before tags fixup
...
fixup_tags() must not be exposed to non-UTF-8 strings as it runs some of
the strings through Unicode normalization for sort tags.
2011-04-16 10:12:29 +02:00
Julien BLACHE
53588f36af
Wire up metadata handling in player and RAOP
...
This enables sending out metadata to AppleTV.
2011-04-09 10:11:35 +02:00
Julien BLACHE
d208ca79d4
Add support for metadata handling in player
2011-04-09 10:11:35 +02:00
Julien BLACHE
e3b756c730
Document progress values for AppleTV metadata
2011-04-09 10:11:35 +02:00
Julien BLACHE
1c861a6662
Add support for AppleTV AirTunes metadata in RAOP
...
The AppleTV gets sent the song metadata (DMAP data), artwork and progress
data during AirTunes streaming. Add support for this in RAOP.
2011-04-09 10:11:35 +02:00
Julien BLACHE
627062cab8
Add wants_metadata flag to struct raop_session
2011-04-09 10:11:35 +02:00
Julien BLACHE
718d1e9487
Migrate file metadata encoding to DMAP common code
2011-04-09 10:11:35 +02:00
Julien BLACHE
07df6bb4aa
Move dmap_add_field() to DMAP common code
2011-04-09 10:11:35 +02:00
Julien BLACHE
39542aee27
Move DMAP fields list and hash table to DMAP common code
2011-04-09 10:11:34 +02:00
Julien BLACHE
c792b942a0
Add logdomain for common DMAP code
2011-04-09 10:11:34 +02:00
Julien BLACHE
52691d6c4d
Rename dmap_helpers.[ch] to dmap_common.[ch]
2011-04-09 10:11:34 +02:00
Julien BLACHE
075bb99742
Introduce artwork_get_item_filename()
2011-04-09 10:11:34 +02:00
Julien BLACHE
6949859ff1
Add caiv tag to video-capable devices in speaker list
2011-04-09 10:11:34 +02:00
Julien BLACHE
db67f4ed6f
Set has_video flag for AppleTV devices
2011-04-09 10:11:34 +02:00
Julien BLACHE
f3e7836453
Introduce struct spk_flags to reduce argument count for enumeration callback
2011-04-09 10:11:34 +02:00
Julien BLACHE
c1fae0012d
Add support for DOS-encoded pairing files
2011-04-07 21:01:16 +02:00
Julien BLACHE
a576033497
Rework album_artist/album_artist_sort handling
...
artist_sort tends to be more and more widespread, so try to reuse artist_sort
if possible instead of deriving album_artist_sort from album_artist
unconditionally.
2011-04-07 19:53:55 +02:00
Julien BLACHE
54c5314712
Handle empty files table when upgrading from schema v11 -> v12
2011-04-06 18:38:53 +02:00
Julien BLACHE
7984b4baea
Document RAOP request queueing
2011-04-03 10:45:10 +02:00
Julien BLACHE
961b2484b8
Re-establish closecb only when no requests are in flight
2011-04-03 10:45:03 +02:00
Julien BLACHE
ef52e922b2
Turn req_in_flight into a counter
2011-04-03 10:44:18 +02:00
Julien BLACHE
a4f02ed08d
Manage CSeq in raop_add_headers()
2011-04-03 10:43:37 +02:00
Julien BLACHE
7fcb8e4447
Check reply CSeq against request CSeq
2011-04-03 10:42:49 +02:00
Julien BLACHE
f097d80d6a
Add optional RTP-Info parameter to raop_send_req_set_parameter()
2011-04-03 10:42:42 +02:00
Julien BLACHE
9c43a9a900
Make SET_PARAMETER content-type an argument to raop_send_req_set_parameter()
2011-04-03 09:54:12 +02:00
Julien BLACHE
7927707bdb
Rework ANTLR3 integration into the build system
2011-04-02 09:52:19 +02:00
Julien BLACHE
e23f02c7c0
Replace AVL tree in DAAP by a static hash using gperf
2011-04-02 09:52:19 +02:00
Julien BLACHE
cbb1669ee1
Replace AVL tree in DACP by a static hash using gperf
2011-04-02 09:52:19 +02:00
Julien BLACHE
7e35068d46
Move RSP query hash table inside RSP2SQL
2011-04-02 09:52:19 +02:00
Julien BLACHE
cc0555d986
Replace AVL tree in RSP query by a static hash using gperf
2011-04-02 09:52:19 +02:00
Julien BLACHE
b8758a2aa2
Move DAAP query hash table inside DAAP2SQL
2011-04-02 09:52:19 +02:00
Julien BLACHE
303a3329eb
Replace AVL tree in DAAP query by a static hash using gperf
2011-04-02 09:52:19 +02:00
Julien BLACHE
ac95530585
Check for gperf, add support to the build system
2011-04-02 09:52:18 +02:00
Julien BLACHE
ac73ee0ce5
Enable and handle JPEG artwork in DACP
2011-04-01 22:04:09 +02:00
Julien BLACHE
204c9681ca
Enable and handle JPEG artwork in DAAP
2011-04-01 22:02:51 +02:00
Julien BLACHE
c7209ab699
Add support for JPEG as a valid artwork output format
...
Reduce CPU usage by avoiding unneeded JPEG -> PNG conversions; it appears
all the clients we care about support JPEG as well as PNG.
2011-03-30 21:50:29 +02:00
Julien BLACHE
5cf5cac9c2
Fix misuse of RAOP_CONNECTED in session state test
2011-03-27 17:04:24 +02:00
Julien BLACHE
5bad343278
Rename RAOP callbacks for consistency
2011-03-26 11:45:17 +01:00
Julien BLACHE
c2579dc0a6
Bring raop_send_req_flush() prototype in line with others
2011-03-26 11:45:17 +01:00
Julien BLACHE
0d58903913
Add missing header
2011-03-26 11:45:17 +01:00
Julien BLACHE
e5b4c1146e
Handle database upgrade v11 -> v12
2011-03-24 19:23:08 +01:00
Julien BLACHE
9759eeba71
Remove database upgrade for schema version before 10 (v0.12)
2011-03-21 18:48:00 +01:00
Kai Elwert
cb9dc5ad7c
Add COLLATE DAAP to all char-type fields
...
As a consequence, we can remove the explicit COLLATE DAAP from sort
clauses, index definitions and queries.
2011-03-21 18:48:00 +01:00
Julien BLACHE
f5b167080b
Use title_sort for DAAP sort headers
2011-03-21 18:48:00 +01:00
Kai Elwert
4dce6390ea
Switch to using db_query_fetch_string_sort() in daap_reply_browse()
2011-03-21 18:48:00 +01:00
Kai Elwert
e226c38d4f
Add db_query_fetch_string_sort() to fetch string+sortstring results
2011-03-21 18:48:00 +01:00
Kai Elwert
d8bf5eedce
db_build_query_browse() query changes ("DISTINCT %s, %s", field, field)
2011-03-21 18:48:00 +01:00
Kai Elwert
bf86cf45bd
Always include sort tags in songlist
2011-03-21 18:47:59 +01:00
Kai Elwert
9e5015ffc8
Switch sort clauses to *_sort fields
2011-03-21 18:47:59 +01:00
Julien BLACHE
91a5250143
Reindent md_map_id3, no code changes
2011-03-21 18:47:59 +01:00
Kai Elwert
aa3829854b
Pick up ID3 sort tags
2011-03-21 18:47:59 +01:00
Kai Elwert
3162028c41
Handle sort tags in fixup_tags()
...
Ensure the sort tags are filled and normalized.
2011-03-21 18:47:59 +01:00
Kai Elwert
373c5584af
Add sort tags to the database
2011-03-21 18:47:59 +01:00
Raivo Hool
3a71d7b15d
Add netinet/in.h, needed on FreeBSD
2011-03-21 18:46:28 +01:00
Julien BLACHE
c66496176e
Fix debug message loglevel
2011-03-21 18:41:38 +01:00
J. Aaron Pendergrass
a13ea85267
Default to MPEG4 video/audio for unknown file types
...
ffmpeg has issues with DRM-afflicted files, leading to the files being
tagged with the unknown file type. This allows streaming those DRM-afflicted
files to iTunes.
2011-03-20 12:48:48 +01:00
J. Aaron Pendergrass
1e1952a5ef
Better fixup_tags() handling for TV shows
2011-03-20 12:48:14 +01:00
Julien BLACHE
0d0877de9c
Honour IPv6 config option in player/RAOP
2011-03-20 12:20:07 +01:00
Julien BLACHE
69fe64c277
Honour IPv6 config option for HTTP services
2011-03-20 12:19:39 +01:00
Julien BLACHE
f4d6287f17
Add IPv6 configuration option
...
Disabled in the default config file, but enabled by default if not specified,
for backward compatibility.
2011-03-20 12:10:51 +01:00
Julien BLACHE
1f2a1e65c0
Fixup URL files scanning
...
Do not proceed and scan the file with ffmpeg on error, bail out. Doing so,
don't free strings allocated inside the mfi as we'll call free_mfi() anyway.
Reported by Kai Elwert.
2011-03-18 21:19:51 +01:00
Julien BLACHE
bcbda9bc4e
Browse records for IPv6 addresses regardless of the underlying protocol
2011-03-15 19:20:38 +01:00
Julien BLACHE
d8b7980fe4
Do not ask mDNS for IPv6 addresses if RAOP can't use IPv6
2011-03-15 19:20:38 +01:00
Julien BLACHE
ec7c3d108c
Let player know about IPv6 status in RAOP
2011-03-15 19:20:38 +01:00
Julien BLACHE
2c1755f025
Don't start record browser if address family not requested
2011-03-15 19:20:38 +01:00
Julien BLACHE
d0fa636643
Properly take ownership of new device address
...
Added addresses are transferred from dev to the existing rd. Set the
address to NULL in dev to avoid free()ing it in device_free() a few lines
down the road.
2011-03-15 19:20:38 +01:00
Julien BLACHE
4868a3946f
Remote pairing wants IPv4 only from mDNS
...
The pairing process only listens on IPv4 at the moment.
2011-03-10 21:08:45 +01:00
Julien BLACHE
e08c42b3c0
Player wants IPv4/IPv6/IPv6LL from mDNS for _raop._tcp
2011-03-10 21:08:25 +01:00
Julien BLACHE
6cd59a1240
Introduce mDNS browser flags for address type selection
...
Allow each user to specify the address types that should be returned
through the mDNS browse callback.
2011-03-10 21:08:25 +01:00
Julien BLACHE
4f59533ccb
Perform manual hostname resolution by browsing mDNS RRs
...
The service resolver delivers a single IP address that doesn't always suit
our needs. To get all the addresses advertised, we have to look at the RRs
through the record browser; we can then apply our filters and extract the
addresses that fit.
2011-03-10 21:08:25 +01:00
Julien BLACHE
2f2582800e
evhttp: Handle IPv6 scoped addresses
2011-03-10 21:08:24 +01:00
Julien BLACHE
09a981807b
Avoid leaking addr on error
2011-03-10 21:08:24 +01:00
Julien BLACHE
eeb5a7974d
Trim metadata strings on files INSERT/UPDATE
2011-03-08 18:55:51 +01:00
Julien BLACHE
69396f3da0
Kill bogus comments
2011-03-07 19:51:43 +01:00
Julien BLACHE
652fa9371f
Add terminal \r\n sequence for RAOP volume control on 802.11g ApEx
...
The 802.11g ApEx seems to require a terminal \r\n sequence, otherwise it
just ignores the setting.
2011-03-04 21:20:07 +01:00
Julien BLACHE
83d966df09
Fix typo in RAOP debug message
2011-03-04 20:47:36 +01:00
Julien BLACHE
13e2b12f9e
Make proper use of IN6_ARE_ADDR_EQUAL()
...
Pass pointers to sin6_addr instead of passing sin6_addr.s6_addr32 which
isn't portable and isn't the proper way to use the macro anyway.
2011-02-24 19:51:37 +01:00
Raivo Hool
1a11efec58
Use sys/endian.h on FreeBSD
2011-02-23 20:44:49 +01:00
Raivo Hool
86a90fe81f
Fix conversion to per-command lock & condition for FreeBSD
...
Leftover from commit 7f79ca5709
2011-02-23 19:09:26 +01:00
Julien BLACHE
f1ab254b47
Silence non-const vs. const warning with FFmpeg 0.6
2011-02-23 19:01:59 +01:00
Julien BLACHE
cbc3605425
Use avcodec_decode_video2() when available (FFmpeg 0.6)
2011-02-23 19:01:46 +01:00
Julien BLACHE
396edc9ad8
Use av_guess_format() when available (FFmpeg 0.6)
2011-02-23 19:00:59 +01:00
Julien BLACHE
67daf3259a
Use avcodec_decode_audio3() when available (FFmpeg 0.6)
2011-02-23 18:26:42 +01:00
Julien BLACHE
868be734b8
Don't scan artwork files
...
Based on a patch from Dominic Evans <oldmanuk@gmail.com>.
2011-02-06 17:54:32 +01:00
Julien BLACHE
4806b2c20c
Link against librt for clock_gettime()
...
Reported by Dominic Evans <oldmanuk@gmail.com>.
2011-02-06 17:54:32 +01:00
Julien BLACHE
1110324000
Explicitely check for and link against libgpg-error
...
We use gpg-error directly, so we need to check for it and link against
it explicitely; so far it's been brought in by libgcrypt.
Reported by Dominic Evans <oldmanuk@gmail.com>.
2011-02-06 17:54:29 +01:00
Julien BLACHE
dfe65c07b7
Split out CFLAGS and CPPFLAGS
2011-02-06 17:53:47 +01:00
Julien BLACHE
43674f1d47
Break long lines
2011-02-06 17:29:39 +01:00
Julien BLACHE
da0d118de4
Reset album_artist after iTunes scan if set to Unknown artist.
2010-12-18 19:29:26 +01:00
Julien BLACHE
c92c8aae25
Grab a few more metadata from iTunes playlists
2010-12-18 14:33:25 +01:00
Julien BLACHE
fa299a9be9
Add debug message for RTSP requests
2010-12-12 15:06:57 +01:00
Julien BLACHE
2011c33526
Cosmetic fix to RAOP device type strings
2010-12-12 10:27:04 +01:00
Julien BLACHE
00c6de15ae
Make player_playback_stop() a synchronous call for real
...
Also, don't stop RAOP devices, just FLUSH them; this saves time when we
restart playback soon after stopping.
2010-12-12 10:25:21 +01:00
Julien BLACHE
507cdb00e8
Rename playback_stop() to playback_abort() and make it an internal helper
2010-12-12 10:12:39 +01:00
Julien BLACHE
dc31d75801
Fix endless loop on source errors under some REPEAT settings
...
Let source_read() propagate errors so playback_write() can abort if a
source error occurs.
2010-12-12 10:00:43 +01:00
Julien BLACHE
1e9078182d
Fix RAOP volume printing
...
Partial revert of 4ac75a316a
, going back to
the previous way of computing the RAOP volume. Fixes printing when volume
is 0.0 (would print -0.000000).
2010-12-07 12:49:48 +01:00
Julien BLACHE
02ea6f4823
Downgrade volume computations to float (from double)
...
Although we lose precision, this is still enough for computing relative,
absolute and RAOP volume and will make a difference on embedded CPUs.
2010-12-04 16:15:49 +01:00
Julien BLACHE
4ac75a316a
Modify RAOP volume computation and printing
...
Compute the absolute value and do not use floor() to print out the
volume.
2010-12-04 16:13:54 +01:00
Julien BLACHE
d6d7450557
Bump DACP protocol version
2010-12-04 15:08:07 +01:00
Julien BLACHE
76621797e2
Implement DACP volume interface for Remote 2.0
2010-12-04 15:08:07 +01:00
Julien BLACHE
1372f90ce7
Send out per-speaker (relative) volume atom
2010-12-04 15:08:07 +01:00
Julien BLACHE
5674314161
Support clear-first in cue play command
2010-12-04 15:08:07 +01:00
Julien BLACHE
0df4ab4555
Implement master volume & per-speaker relative volume
...
Volume is set independently for each speaker relative to the master
volume. Methods allow to set speaker volume independently and in relation
to the master volume.
2010-12-04 15:08:07 +01:00
Julien BLACHE
9e9c3e42cc
Rework RAOP volume setting to be per-speaker
...
Player now pilots RAOP volume setting directly on a per-speaker basis.
2010-12-04 15:08:06 +01:00
Julien BLACHE
9bd6d459a2
Maintain per-speaker volume information
2010-12-04 15:08:06 +01:00
Julien BLACHE
6f7b12b1f2
Handle database upgrade v10 -> v11
2010-12-04 15:08:06 +01:00
Julien BLACHE
27c89cf312
Remove old db_config_* interface
2010-12-04 15:08:06 +01:00
Julien BLACHE
9507f8d059
Switch speaker state-saving to new db_speaker_* interface
2010-12-04 15:08:06 +01:00
Julien BLACHE
012e90b4a3
Add a dedicated table for speakers
2010-12-04 15:08:06 +01:00
Julien BLACHE
7de9408a10
Make sure device is deselected before removing it
2010-12-02 19:56:26 +01:00
Julien BLACHE
78df98ba35
Introduce speaker selection/deselection helpers
2010-12-02 19:56:26 +01:00
Julien BLACHE
55f0c7cfcd
Rename volume to master_volume
2010-12-02 19:53:36 +01:00
Julien BLACHE
edfcf955a7
Replace device autoselect deadline with a boolean flag
...
Devices can be autoselected until we first get into the PLAY_PLAYING state.
This avoids having to check the player state when adding devices.
2010-12-02 19:53:36 +01:00
Julien BLACHE
25cdedc343
Remove device list lock (dev_lck)
...
No longer necessary now that all device list operations happen in the
player thread.
2010-12-02 19:53:36 +01:00
Julien BLACHE
320d3b9dde
Manage devices entirely in the player thread
...
Provide non-blocking player commands to the mDNS callback to manage
the device list. All operations on the device list now happen in the
player thread.
2010-12-02 19:52:45 +01:00
Julien BLACHE
389e3f1123
Introduce non-blocking commands
2010-12-02 19:51:50 +01:00
Julien BLACHE
ec4299e6c7
Turn speaker enumeration into a sync command
2010-12-02 19:51:08 +01:00
Julien BLACHE
418e818bee
Move code around, no functional changes
2010-11-28 17:37:48 +01:00
Julien BLACHE
c3e24a0d9a
Hide get_pos() debug messages behind DEBUG_SYNC
2010-11-28 17:33:19 +01:00
Julien BLACHE
12daf7237e
Downgrade debug message priority
2010-11-28 17:33:07 +01:00
Julien BLACHE
45e3d55ee0
Enumerate all active or advertised speakers
...
We need to include speakers that are currently active in our enumeration,
even if they're not advertising anymore; until the session is declared failed
by RAOP, we are streaming to this device, even if it's not advertising
anymore - which may be a temporary condition.
2010-11-28 17:33:00 +01:00
Julien BLACHE
c70caad87e
Disable session expiration
...
Auto-logout currently doesn't work as expected and breaks streaming etc once
the timeout occurs. Disable it until we can make it work as expected.
Maybe we'll need to upgrade the DAAP version.
2010-11-11 10:44:57 +01:00
Julien BLACHE
8cc3d4841f
Move last_active check into raop_device_find_or_new()
...
Removes some of the clutter in the mDNS callback and ensures the check is only
done for new devices.
2010-11-02 19:13:46 +01:00