Commit Graph

39 Commits

Author SHA1 Message Date
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
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
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
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
Julien BLACHE
a3d549bd37 Reduce stack usage for boolean flags 2010-09-25 20:57:10 +02:00
Julien BLACHE
50a9a3690f RAOP auth quirk for old (802.11g) AirPort Express 2010-09-25 20:57:10 +02:00
Julien BLACHE
8411aa48b7 Keep Avahi code inside mdns_avahi.c 2010-09-18 17:25:50 +02:00
Julien BLACHE
7ba3b23f63 Rename mdns_avahi.h to mdns.h 2010-09-18 17:24:34 +02:00
Julien BLACHE
aa57931879 Fix typo in goto label name 2010-09-17 12:21:05 +02:00
Julien BLACHE
bff494ac5d Use a union for command argument in struct player_command 2010-09-13 19:08:29 +02:00
Julien BLACHE
7f79ca5709 Modify player commands to use per-command lock & condition
This makes the player commands usable in a concurrent multithread setup, which
was not the case with the global command+lock+condition due to the time it
could take the player thread to act upon the command event. This left a wide
open window for race conditions with other threads locking cmd_lck before the
player thread had a go at it.
2010-09-13 19:07:00 +02:00
Julien BLACHE
942f3e4aad Modify player-to-DACP status update communication
Have DACP set a callback (through a sync_command() setter) into the player
instead of setting an fd without any locking. All the code now lies in DACP
instead of being split between DACP and the player.
2010-09-13 18:40:41 +02:00
Julien BLACHE
ac427025b5 Remember selected output devices accross restarts
Save the selected devices to the DB at exit and automatically re-select them
the next time, provided:
 - the player is not running already when the device appears
 - the device appears no later than 5 minutes after startup
2010-08-04 19:17:21 +02:00
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
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
4a160e8ad1 Add player_queue_make_pl() for playlist-based queues 2010-07-31 12:09:13 +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
3148ec8209 Stop command event and timer event (if running) at deinit 2010-07-30 22:16:07 +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
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
01cde2c50c Cleanup debug message 2010-07-10 12:26:31 +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
4bd09cba62 Browse and resolve mDNS services on both IPv4 and IPv6 2010-05-14 17:36:29 +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
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
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
47589ff34a Add audio player 2010-05-02 11:45:14 +02:00