Richard Kettlewell [Sun, 12 Apr 2009 16:52:03 +0000 (17:52 +0100)]
Do some basic compatibility checking when installing a new server
configuration. There is plenty more that could be done.
Richard Kettlewell [Sun, 12 Apr 2009 15:29:04 +0000 (16:29 +0100)]
Note that prefsync doesn't do anything any more.
Richard Kettlewell [Sun, 12 Apr 2009 15:28:42 +0000 (16:28 +0100)]
Add README.reload as an aide-memoire regarding configuration handling.
Richard Kettlewell [Sun, 12 Apr 2009 15:00:06 +0000 (16:00 +0100)]
More comments.
Richard Kettlewell [Sun, 12 Apr 2009 14:36:11 +0000 (15:36 +0100)]
Add many comments to server/play.c, in advance of possible
reorganization.
Richard Kettlewell [Sun, 12 Apr 2009 14:35:46 +0000 (15:35 +0100)]
--wait-for-device is now deprecated.
Richard Kettlewell [Sun, 12 Apr 2009 12:50:22 +0000 (13:50 +0100)]
55-pixel logo (for Google Code page)
Richard Kettlewell [Sat, 11 Apr 2009 20:02:27 +0000 (21:02 +0100)]
update CHANGES
Richard Kettlewell [Sat, 11 Apr 2009 19:59:14 +0000 (20:59 +0100)]
Merge audio timing fix branch.
Richard Kettlewell [Sat, 11 Apr 2009 19:53:12 +0000 (20:53 +0100)]
Bump up default RTP player buffer sizes. Now big enough to keep ALSA
(first doubling) and ALSA's OSS emulation (second doubling) fed. The
initial buffer size is still under half a second, and feels close to
instant to this listener.
Also, the player thread now consumes packets immediately rather than
waiting for the next iteration, preventing a race where the (inner)
playing loop at the bottom of main() can terminate unnecessarily
early.
There's bits of debugging code left lying around commented out. It's
harmless for now!
Richard Kettlewell [Sat, 11 Apr 2009 19:47:50 +0000 (20:47 +0100)]
Larger silent interval for pauses; spinning in sub-millisecond
nanosleeps is a bit excessive.
Richard Kettlewell [Sat, 11 Apr 2009 19:13:04 +0000 (20:13 +0100)]
Abolish playrtp's "readahead" variable (and associated -b option).
There's just minbuffer and maxbuffer now. minbuffer has the same
meaning as before but is additionally used for what readahead used to
be. maxbuffer defaults to 2*minbuffer.
The man page mentions them, but refers you to the source code, which
now goes into more detail in comment than it did before.
playrtp also no longer adjusts the socket buffer size, accepting the
operating system's default. Even the relatively small (~40K) Mac one
gives us a couple of dozen typical-sized packets; experimentally it's
quite enough to cope even with a 'make -j' of DisOrder running on the
same host.
Richard Kettlewell [Sat, 11 Apr 2009 18:54:19 +0000 (19:54 +0100)]
MacOS build fix
Richard Kettlewell [Sat, 11 Apr 2009 16:56:25 +0000 (17:56 +0100)]
Rewrite uaudio-schedule.c. It's now much simpler and should actually
get the timing right. An hour of rtpmon is encouraging.
This change pushes responsibility for pausing out towards the APIs.
For ALSA we sleep a bit. For OSS we close the sound device and sleep a
bit.
For RTP we just pretend to send packets; the scheduler takes care of the
timing.
For command again the scheduler takes care of the timing, though as
before we have the option of either suspending writes or sending 0s.
Scantily tested!
Richard Kettlewell [Sat, 11 Apr 2009 15:46:27 +0000 (16:46 +0100)]
Compute rate over a longer interval.
Richard Kettlewell [Sat, 11 Apr 2009 09:33:13 +0000 (10:33 +0100)]
rtpmon now reports once a second, rather than based on numbers of
packets received.
Richard Kettlewell [Sat, 11 Apr 2009 09:22:37 +0000 (10:22 +0100)]
New debugging program: rtpmon. This listens for packets the same way
disorder-playrtp does (and ought to be de-duped against it), and
periodically displays the sample rate over various intervals.
As the code stands the longest-term column is consistently showing
44105Hz, which since it's faster than the rate the sound is played at
will eventually fill up playrtp's (and the kernel's) buffers and force
packets to be dropped, affecting playback quality.
Richard Kettlewell [Sun, 5 Apr 2009 15:08:28 +0000 (16:08 +0100)]
disorder-playrtp now includes timestamps in its log output (which
includes error messages); the reasoning being that timing information
may be especially useful when debugging it.
The server logs to syslog, which already has timestamps.
Other programs could easily have this feature enabled if necessary.
Richard Kettlewell [Sun, 5 Apr 2009 14:11:01 +0000 (15:11 +0100)]
README mentions Python 2.5 now
Richard Kettlewell [Sun, 5 Apr 2009 14:04:10 +0000 (15:04 +0100)]
README.developers now reflects uaudio
Richard Kettlewell [Sun, 5 Apr 2009 11:31:13 +0000 (12:31 +0100)]
update copyright date
Richard Kettlewell [Sun, 5 Apr 2009 11:28:33 +0000 (12:28 +0100)]
Python module now supports the same authorization hash functions as C.
This means we need at least Python 2.5 (which shouldn't be a very
onerous requirement any more!)
Richard Kettlewell [Sun, 5 Apr 2009 11:07:10 +0000 (12:07 +0100)]
use explicit port number
Richard Kettlewell [Sun, 5 Apr 2009 10:07:31 +0000 (11:07 +0100)]
Merge Unicode 5.1.0 support.
Richard Kettlewell [Sun, 5 Apr 2009 10:07:04 +0000 (11:07 +0100)]
Mention Unicode 5.1.0 in CHANGES.html.
Richard Kettlewell [Sun, 5 Apr 2009 10:05:51 +0000 (11:05 +0100)]
Don't look up before/after code points more than once in word boundary
detection.
Richard Kettlewell [Sun, 5 Apr 2009 09:59:17 +0000 (10:59 +0100)]
Rename word break property values
Richard Kettlewell [Sun, 5 Apr 2009 09:56:55 +0000 (10:56 +0100)]
Update word break algorithm for Unicode 5.1.0 (based on UAX #29).
We look up the word break property more than once, which is ugly, so
some further work wouldn't be out of place.
Richard Kettlewell [Sun, 5 Apr 2009 09:45:15 +0000 (10:45 +0100)]
Update grapheme break algorithm to Unicode 5.1.0 (based on UAX #29)
Richard Kettlewell [Sun, 5 Apr 2009 09:44:49 +0000 (10:44 +0100)]
Use Unicode 5.1.0 for tables and tests. Approx 200 failures currently.
Richard Kettlewell [Sun, 5 Apr 2009 09:28:13 +0000 (10:28 +0100)]
Missing address family member in sockaddrs.
Richard Kettlewell [Sat, 4 Apr 2009 16:48:30 +0000 (17:48 +0100)]
Discard update-rc.d output
Richard Kettlewell [Sat, 4 Apr 2009 16:47:05 +0000 (17:47 +0100)]
Override lintian warning about start-stop-daemon
Richard Kettlewell [Sat, 4 Apr 2009 16:39:18 +0000 (17:39 +0100)]
Use command instead of type, for greater portability
Richard Kettlewell [Sat, 4 Apr 2009 16:35:43 +0000 (17:35 +0100)]
Correct debian changelog name
Richard Kettlewell [Sat, 4 Apr 2009 16:33:40 +0000 (17:33 +0100)]
Strip installed objects in .debs
Richard Kettlewell [Sat, 4 Apr 2009 16:27:44 +0000 (17:27 +0100)]
.debs now have md5sums
Richard Kettlewell [Sat, 4 Apr 2009 13:24:49 +0000 (14:24 +0100)]
Another man page hyphen fix
Richard Kettlewell [Sat, 4 Apr 2009 13:22:04 +0000 (14:22 +0100)]
Man page hyphen fixes
Richard Kettlewell [Sun, 22 Mar 2009 20:38:31 +0000 (20:38 +0000)]
Merge from OS X GTK+ branch
Richard Kettlewell [Sun, 22 Mar 2009 20:36:50 +0000 (20:36 +0000)]
--with-gtk-osx option to use native GTK+ on macs
Richard Kettlewell [Sat, 14 Mar 2009 21:21:56 +0000 (21:21 +0000)]
Remove obsolete alsabg.[ch]
Richard Kettlewell [Sat, 14 Mar 2009 21:21:02 +0000 (21:21 +0000)]
Missing doxygen @file sections
Richard Kettlewell [Sat, 14 Mar 2009 21:16:49 +0000 (21:16 +0000)]
More doxygen tidy-up
Richard Kettlewell [Sat, 14 Mar 2009 20:59:50 +0000 (20:59 +0000)]
A little doxygen tidy-up
Richard Kettlewell [Sat, 14 Mar 2009 20:31:29 +0000 (20:31 +0000)]
update CHANGES.html
Richard Kettlewell [Sat, 14 Mar 2009 19:03:08 +0000 (19:03 +0000)]
Merge config aliasing bug fix.
Richard Kettlewell [Sat, 14 Mar 2009 19:00:52 +0000 (19:00 +0000)]
Zero out configuration strings when they are freed.
This means that aliased configuration items aren't double-freed.
Richard Kettlewell [Sat, 14 Mar 2009 17:09:50 +0000 (17:09 +0000)]
Document -4/-6 for listen, connect etc.
Richard Kettlewell [Sat, 14 Mar 2009 16:15:12 +0000 (16:15 +0000)]
connect uses new network address support
This include Disobedience. IPv6 works at least to loopback...
Richard Kettlewell [Sat, 14 Mar 2009 15:48:24 +0000 (15:48 +0000)]
'listen' option now uses struct netaddress too.
If '*' is used then it will bind to the IPv6 default listen address and
then report an error trying to bind to the IPv4 address. In fact this
is harmless as the socket will accept connections of both kinds.
Richard Kettlewell [Sat, 14 Mar 2009 14:56:56 +0000 (14:56 +0000)]
Start rationalizing network address configuration.
New 'struct netaddress' has address family, address and port. Family
can be unspecified (effectively, let the OS choose), IPv4, IPv6 or UNIX
domain sockets (though in practice the latter won't work well in most
contexts).
The RTP server configuration uses this logic.
Richard Kettlewell [Sat, 14 Mar 2009 11:41:40 +0000 (11:41 +0000)]
Correct setting of rtp-source-port.
Richard Kettlewell [Sat, 14 Mar 2009 11:41:15 +0000 (11:41 +0000)]
Tests use 'api rtp' to avoid (harmless) error message
Richard Kettlewell [Sat, 14 Mar 2009 11:33:35 +0000 (11:33 +0000)]
Horrid hack to recover run-time endianness for testing.
Richard Kettlewell [Sat, 14 Mar 2009 10:56:02 +0000 (10:56 +0000)]
tracklength plugin needs -lm
Fixes http://code.google.com/p/disorder/issues/detail?id=33
Richard Kettlewell [Sat, 14 Mar 2009 10:49:33 +0000 (10:49 +0000)]
Merge uaudio stragglers.
The command backend's pause mode is now configurable, both for server
and disorder-playrtp.
Richard Kettlewell [Sat, 14 Mar 2009 10:42:26 +0000 (10:42 +0000)]
Merge from uaudio branch.
In summary:
- disorder-speaker now uses uaudio and should have more reliable
gapless play
- volume setting now uses uaudio
- the command backend now uses the same scheduling mechanism
as rtp, and sends silence for pauses
- multicast API fixes
- gcrypt API usage fixes
Richard Kettlewell [Sat, 14 Mar 2009 10:22:11 +0000 (10:22 +0000)]
disorder-speaker now correctly listens for its own 'sigpipe'
notifications. This bug stopped gapless play working properly with
low-latency audio backends.
It also has much more conservative locking.
The callback now logs again when it has to play silence.
Richard Kettlewell [Sat, 14 Mar 2009 09:37:36 +0000 (09:37 +0000)]
Expose command backend pause mode to server configuration as well.
Richard Kettlewell [Sat, 14 Mar 2009 09:35:10 +0000 (09:35 +0000)]
typo fix
Richard Kettlewell [Sat, 14 Mar 2009 09:28:20 +0000 (09:28 +0000)]
The command backend now supports the old (suspending) and new
(silence) pause behaviors via an option. disorder-playrtp gains
--pause-mode t o set this option.
Richard Kettlewell [Fri, 13 Mar 2009 21:42:33 +0000 (21:42 +0000)]
The command backend now sends 0s rather than suspending output when a
pause occurs. This saves the receiver from having to infer pauses
from flow control. It could usefuly be made into an option.
Richard Kettlewell [Fri, 13 Mar 2009 21:41:16 +0000 (21:41 +0000)]
Split up the multicast and unicast cases in disorder-playrtp; the
apparent commonalities are not enough to be worth interleaving the two
cases.
In the multicast case, bind to the multicast address explicitly,
thereby allowing multiple processes on the same host to receive the
multicast packets.
Richard Kettlewell [Fri, 13 Mar 2009 21:05:44 +0000 (21:05 +0000)]
disorder-playrtp now releases its lock around activate/deactivate
calls. This necessary since deactivate may block if a sample
collection callback is still running (in this case it will be blocked
indefinitely). It actually happens with the Core Audio backend but it
could apply to other APIs too.
Richard Kettlewell [Fri, 13 Mar 2009 20:33:19 +0000 (20:33 +0000)]
Merge playrtp readahead reduction
Richard Kettlewell [Wed, 11 Mar 2009 09:16:41 +0000 (09:16 +0000)]
Don't activate pending track until the previous track is actually finished!
Richard Kettlewell [Tue, 10 Mar 2009 22:09:20 +0000 (22:09 +0000)]
Clean up online registration confirmation strings. Now they are
username/base62(random).
Richard Kettlewell [Sun, 8 Mar 2009 17:38:33 +0000 (17:38 +0000)]
Reduce playrtp readahead to 0.5s
Richard Kettlewell [Sun, 8 Mar 2009 16:58:32 +0000 (16:58 +0000)]
More reliable gapless play.
The problem is the deactivate/activate calls, which introduce a period
of silence related to the length of time it takes the server to send
an SM_PLAY in response to SM_FINISHED.
The solution is for the speaker to lie to the server, and pretend that
tracks have finished 0.5-1s before they really have. This requires
mild ugliness scattered through the speaker process to maintain the
illusion, but keeps ugliness out of your ears l-)
Richard Kettlewell [Sun, 8 Mar 2009 14:02:07 +0000 (14:02 +0000)]
Merge volume and build fixes
Richard Kettlewell [Sun, 8 Mar 2009 14:01:44 +0000 (14:01 +0000)]
Merge configuration fixes
Richard Kettlewell [Sun, 8 Mar 2009 13:53:24 +0000 (13:53 +0000)]
uaudio gains a new 'configure' method, which imposes the audio API's
configuration from the global (configuration.h) config. This gets
network play working again.
There's a new configuration option, rtp_delay_threshold, which allows
the courageous to influence the internal timings of the RTP
transmitter. The defaults seem to work however.
The reason it doesn't go directly to global config is that uaudio
needs to be usable from playrtp, which might want to be set to totally
different settings to whatever the local DisOrder server instance
happens to be.
Richard Kettlewell [Sun, 8 Mar 2009 13:34:33 +0000 (13:34 +0000)]
gcrypt initialization to suppress warning message. Not really
anything to do with the uaudio branch as such but found here and
fixing it here will likely save a conflict when we merge.
Richard Kettlewell [Sun, 8 Mar 2009 13:08:37 +0000 (13:08 +0000)]
get-volume shouldn't corrupt the volume!
Richard Kettlewell [Sun, 8 Mar 2009 13:01:09 +0000 (13:01 +0000)]
Build fixes for FreeBSD
Richard Kettlewell [Sun, 8 Mar 2009 12:03:58 +0000 (12:03 +0000)]
basen() now takes uint32_t rather than unsigned long, since that's
what it actually assumes.
New function nesab() is the reverse of basen().
Richard Kettlewell [Sun, 8 Mar 2009 11:32:33 +0000 (11:32 +0000)]
Build fixes for uaudio ALSA/OSS backends.
Richard Kettlewell [Sun, 8 Mar 2009 11:28:22 +0000 (11:28 +0000)]
'api' configuration command now uses uaudio. The list of APIs is only
available in server processes (since it currently drags in the API
implementations which in turn drags in external audio support
libraries, which extends the dependencies of the command-line client
unacceptable).
disorder-speaker now uses uaudio, abolishing the various speaker-*.c
API-specific files.
uaudio now handles volume control as well as playback, abolishing
mixer.h et al.
"rtp" is the preferred name for the RTP API. "network" is retained
for backward compatibility.
Lightly tested - works for local play on a Mac.
Richard Kettlewell [Tue, 3 Mar 2009 20:40:01 +0000 (20:40 +0000)]
uaudio_apis[] is a constant
Richard Kettlewell [Tue, 3 Mar 2009 19:40:33 +0000 (19:40 +0000)]
Abolish UAUDIO_DEFAULT
Richard Kettlewell [Tue, 3 Mar 2009 19:37:37 +0000 (19:37 +0000)]
Restore uaudio_apis[], but in a separate executable to avoid everything
having to be linked against audio libraries.
Richard Kettlewell [Sun, 1 Mar 2009 19:13:49 +0000 (19:13 +0000)]
Add xcalloc_noptr(), which allows uaudio-thread.c to ask for
pointerless buffers. Also convenient for unicode.c.
Richard Kettlewell [Sun, 1 Mar 2009 19:01:36 +0000 (19:01 +0000)]
Uniform audio command back end now rate limited.
The algorithm is the same as for the RTP backend, and is therefore
split out into a separate file, uaudio-schedule.c.
Richard Kettlewell [Sun, 1 Mar 2009 18:07:39 +0000 (18:07 +0000)]
Abolish uaudio_apis[]. Instead, define UAUDIO_DEFAULT to indicate
default sound API. This saves e.g. uaudio_rtp being linked into
disorder-playrtp. It does mean that users need more knowledge of
available APIs, but since they need to know what options to set that's
not much of an extra burden.
Richard Kettlewell [Sun, 1 Mar 2009 17:57:52 +0000 (17:57 +0000)]
Document disorder-playrtp --command in CHANGES.html
Richard Kettlewell [Sun, 1 Mar 2009 17:53:34 +0000 (17:53 +0000)]
Merge build fix
Richard Kettlewell [Sun, 1 Mar 2009 17:53:14 +0000 (17:53 +0000)]
uaudio-rtp.c builds on Mac
Richard Kettlewell [Sun, 1 Mar 2009 17:47:14 +0000 (17:47 +0000)]
Merge latest work from uniform audio branch. The only functional change
here is that disorder-playrtp supports playing into a command via a pipe
now.
Richard Kettlewell [Sun, 1 Mar 2009 17:45:15 +0000 (17:45 +0000)]
Support uniform audio command backend from disorder-playrtp. A useful
way to test it but potentially a useful feature too.
Richard Kettlewell [Sun, 1 Mar 2009 17:32:12 +0000 (17:32 +0000)]
Correct command FD!
Richard Kettlewell [Sun, 1 Mar 2009 17:10:35 +0000 (17:10 +0000)]
Uniform audio version of the command backend. No attempt to rate-limit
here, we just send audio data at the subprocess as fast as it can accept
it.
As tested as the RTP backend i.e. not.
Richard Kettlewell [Sun, 1 Mar 2009 16:53:06 +0000 (16:53 +0000)]
Uniform audio RTP implementation. Not tested yet!
Richard Kettlewell [Sun, 1 Mar 2009 13:09:43 +0000 (13:09 +0000)]
Merge from uniform audio branch. disorder-playrtp now uses the uaudio
code for OSS, ALSA and Core Audio and works on Linux, FreeBSD and MacOS.
A few build and documentation fixes come along with these changes.
Richard Kettlewell [Sun, 1 Mar 2009 12:59:42 +0000 (12:59 +0000)]
Merge disorder-playrtp docs fix
Richard Kettlewell [Sun, 1 Mar 2009 12:59:02 +0000 (12:59 +0000)]
Quieten autotools warning
Richard Kettlewell [Sun, 1 Mar 2009 12:42:21 +0000 (12:42 +0000)]
Improve disorder-playrtp docs/--help
Richard Kettlewell [Sun, 1 Mar 2009 12:09:40 +0000 (12:09 +0000)]
Fix uaudio-coreaudio.c after last change
Richard Kettlewell [Sun, 1 Mar 2009 12:01:34 +0000 (12:01 +0000)]
ALSA support for uniform audio. ALSA and OSS support now shares the
threading work, which is split into a collecter and a player thread
communicating via a ring of buffers.
New uaudio_set_format() allows caller to declare what the sample format
will be, giving us flexibility to do things other than 16/44100/2
(although not tested with other formats).
Core audio uniform audio support now supports more sample formats, and
checks that the channel count and rate are right. It doesn't
(currently) attempt to ask for different channel counts or rates.
Richard Kettlewell [Sat, 28 Feb 2009 18:18:44 +0000 (18:18 +0000)]
uaudio OSS support now compiles