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
Kai Elwert
6bfc4a65e2
Implement sort=artist for DACP/player
2010-10-26 18:06:36 +02:00
Peter
204a756283
Fallback to the Master mixer element if PCM is not available
...
When using PulseAudio through ALSA, the mixer doesn't have a PCM element;
fallback to Master in this case.
2010-10-24 18:53:58 +02:00
Peter
4f164b939c
Add support for JPEG artwork and cover.{png,jpg} album artwork
2010-10-24 18:44:53 +02:00
Julien BLACHE
ee10bcf968
Rework target size determination
...
Move the code out of artwork_rescale() and into artwork_get(). Properly
implement "PNG prefers even row count" to avoid artifacts.
2010-10-24 17:38:12 +02:00
Julien BLACHE
2be812e04d
Fix 32bit MurmurHash64 routines
...
Properly handle the tail of the data buffer, accessing the tail as an
unsigned char array instead of a uint32_t array.
Issue spotted by Peter Carmichael.
2010-10-23 18:36:10 +02:00
Kai Elwert
65c8924898
Add daap.songalbumartist to the list of supported DAAP query fields
2010-10-09 16:32:27 +02:00
Kai Elwert
e5af78fe9f
Implement sort=artist for DAAP queries
2010-10-09 16:06:00 +02:00
Kai Elwert
ee7b976eeb
Advertise DAAP updates support in server-info
...
We don't send out DAAP updates, but Remote requires this to work.
2010-10-09 15:54:53 +02:00
Julien BLACHE
a8e7a7aeeb
Fix missing command_init() call in player_playback_next()
2010-10-07 21:06:40 +02:00
Julien BLACHE
aa33b520ed
Identify RAOP device type
...
Identify the device type in the mDNS callback and decide features & quirk
in RAOP based on the identified device type.
2010-10-07 21:06:40 +02:00
Julien BLACHE
3abf62179e
Implement RAOP retransmission
2010-10-06 19:30:04 +02:00
Julien BLACHE
10a0b16573
Implement RAOP retransmit buffer
2010-10-06 19:30:03 +02:00
Julien BLACHE
faea2d33a1
Split out RAOP packet sending
2010-10-06 19:30:03 +02:00
Julien BLACHE
385375cdc6
Add RAOP control request handler
2010-10-06 19:30:03 +02:00
Julien BLACHE
a2329dfd3a
Use djb_hash(libname) as the RTP SSRC ID
2010-10-03 17:01:08 +02:00
Julien BLACHE
f13a83147d
Move code around, no functional changes
2010-10-02 13:18:12 +02:00
Julien BLACHE
65a75dd85f
Do not use a scoped address in SDP payload
2010-10-02 12:41:45 +02:00
Julien BLACHE
309ad6060e
RAOP device discovery rework, rework add/update
2010-09-30 19:24:34 +02:00
Julien BLACHE
48de711301
RAOP device discovery rework, remove add/remove branch & reindent
2010-09-30 19:18:49 +02:00
Julien BLACHE
999066d703
RAOP device discovery rework, split remove code
2010-09-30 19:15:17 +02:00
Julien BLACHE
01df67ceb6
Move last_active check into the device add case
2010-09-30 19:08:43 +02:00
Kai Elwert
cd8686be82
Add DB profiling support
2010-09-29 18:56:38 +02:00
Julien BLACHE
5c81144beb
Revert to standard SQLite functions for DB startup, creation and upgrade
...
No need to use the blocking variants here as there is no concurrency during
DB startup.
2010-09-29 18:26:31 +02:00
Julien BLACHE
b79cf13c95
Remove custom collation and custom daap_songalbumid() function code
2010-09-28 18:39:43 +02:00
Julien BLACHE
da0011de3b
Load our SQLite extension
2010-09-28 18:38:10 +02:00