paraslash.git
14 years agosched: Reset the descriptor sets on timeouts.
Andre Noll [Fri, 15 Jan 2010 19:21:13 +0000 (20:21 +0100)]
sched: Reset the descriptor sets on timeouts.

This is certainly not neccessary on linux, but it does not hurt
and is clearly more portable.

14 years agoalsa: Replace check for pending frames on eof by a barrier.
Andre Noll [Fri, 15 Jan 2010 19:19:30 +0000 (20:19 +0100)]
alsa: Replace check for pending frames on eof by a barrier.

The old code could lead to a an endless loop where the alsa writer
would never be unscheduled.

14 years ago[btr] Add more documentation.
Andre Noll [Fri, 15 Jan 2010 06:59:54 +0000 (07:59 +0100)]
[btr] Add more documentation.

14 years ago[btr] Add more documentation.
Andre Noll [Fri, 15 Jan 2010 06:41:19 +0000 (07:41 +0100)]
[btr] Add more documentation.

14 years agostdin/stdout cleanup.
Andre Noll [Fri, 15 Jan 2010 06:06:56 +0000 (07:06 +0100)]
stdin/stdout cleanup.

para_client was the last user of the non-btr code in stdin.[ch]
and stdout.[ch]. Remove this unused code and update the documentation.

14 years agobtr support for para_client.
Andre Noll [Fri, 15 Jan 2010 05:46:03 +0000 (06:46 +0100)]
btr support for para_client.

The use of the client code in audiod requires a node to be inserted
as the _parent_ of some existing node, which was not neccessary
before. Therefore a new btrn pointer for the child node is added to
struct btr_node_description and btr_new_node() is adjusted accordingly.

The patch also adds a small helper sched_request_barrier() to
the scheduler.

14 years ago[btr] log message cleanups.
Andre Noll [Thu, 14 Jan 2010 22:59:05 +0000 (23:59 +0100)]
[btr] log message cleanups.

14 years ago[btr] Add a comment to btr_pool_available().
Andre Noll [Thu, 14 Jan 2010 22:58:00 +0000 (23:58 +0100)]
[btr] Add a comment to btr_pool_available().

14 years ago[btr] btr_node_status(): Node pointer should never be NULL.
Andre Noll [Thu, 14 Jan 2010 22:57:22 +0000 (23:57 +0100)]
[btr] btr_node_status(): Node pointer should never be NULL.

14 years agofilter.h: Document that the ->close method need not be provided.
Andre Noll [Thu, 14 Jan 2010 22:49:57 +0000 (23:49 +0100)]
filter.h: Document that the ->close method need not be provided.

14 years agoaudiod: Add a paranoia check to close_writers().
Andre Noll [Thu, 14 Jan 2010 22:48:24 +0000 (23:48 +0100)]
audiod: Add a paranoia check to close_writers().

14 years agoAdd documentation of struct btr_node and btr_pool.
Andre Noll [Thu, 14 Jan 2010 22:24:24 +0000 (23:24 +0100)]
Add documentation of struct btr_node and btr_pool.

14 years ago[btr] Fix btr_get_input_queue_size().
Andre Noll [Thu, 14 Jan 2010 21:58:54 +0000 (22:58 +0100)]
[btr] Fix btr_get_input_queue_size().

We must take care of wrap buffers when computing the input queue size.

14 years agoIntroduce btr_node_description.
Andre Noll [Thu, 14 Jan 2010 03:19:59 +0000 (04:19 +0100)]
Introduce btr_node_description.

As the number of arguments to btr_new_node() grows, the code becomes
hard to read, especially since some callers must set many of the
arguments to NULL.

Using a pointer to a struct has the additional advantage that adding
new parameters does no longer require to touch all callers.

14 years agofile_write: Use para_open() and set the fd to non-blocking mode.
Andre Noll [Thu, 14 Jan 2010 00:19:12 +0000 (01:19 +0100)]
file_write: Use para_open() and set the fd to non-blocking mode.

14 years ago[btr] Fix merge_input_pool().
Andre Noll [Wed, 13 Jan 2010 23:11:46 +0000 (00:11 +0100)]
[btr] Fix merge_input_pool().

This function contained the following bug: wbr, buf1 and sz1 could
be used without being initialized. This was sometimes hitting the
assertion (buf1 && buf2).

Fix this by initializing these variables at the top.

14 years agoSkip btr suffix from {pre,post}_select_btr().
Andre Noll [Wed, 13 Jan 2010 22:39:32 +0000 (23:39 +0100)]
Skip btr suffix from {pre,post}_select_btr().

Everything uses btr now, so there's no need for a suffix any more.
Update the documentation a bit.

14 years agoKill unused writer_node_group code.
Andre Noll [Wed, 13 Jan 2010 22:31:17 +0000 (23:31 +0100)]
Kill unused writer_node_group code.

14 years agofile_write: Use sched_min_delay().
Andre Noll [Wed, 13 Jan 2010 22:17:58 +0000 (23:17 +0100)]
file_write: Use sched_min_delay().

14 years agofile_write: Kill ->fd of struct private_file_write_data.
Andre Noll [Wed, 13 Jan 2010 22:16:01 +0000 (23:16 +0100)]
file_write: Kill ->fd of struct private_file_write_data.

Also, simplify the logic in file_write_post_select_btr() a bit.

14 years agofile_write: Kill non-btr code.
Andre Noll [Wed, 13 Jan 2010 22:08:30 +0000 (23:08 +0100)]
file_write: Kill non-btr code.

Also, don't free the config on close.

14 years agooss fixes and cleanups.
Andre Noll [Wed, 13 Jan 2010 21:40:23 +0000 (22:40 +0100)]
oss fixes and cleanups.

- Kill ->samplerate and ->channels of struct private_oss_write_data.
- Don't invalidate the config on close().
- Simplify oss_pre_select_btr().

14 years agooss: Kill non-btr code.
Andre Noll [Wed, 13 Jan 2010 21:01:55 +0000 (22:01 +0100)]
oss: Kill non-btr code.

14 years agoalsa: Kill non-btr code.
Andre Noll [Wed, 13 Jan 2010 20:57:50 +0000 (21:57 +0100)]
alsa: Kill non-btr code.

14 years agowrite: Kill non-btr mode.
Andre Noll [Wed, 13 Jan 2010 20:46:28 +0000 (21:46 +0100)]
write: Kill non-btr mode.

Yes, this breaks the build on Macs. Sue me.

14 years agoMake writers remove btr node on errors.
Andre Noll [Wed, 13 Jan 2010 20:44:35 +0000 (21:44 +0100)]
Make writers remove btr node on errors.

This is what receivers/filters do as well.

14 years agofilter_common: Use sched_min_delay() helper.
Andre Noll [Wed, 13 Jan 2010 06:40:45 +0000 (07:40 +0100)]
filter_common: Use sched_min_delay() helper.

14 years agoclient.c: Add comment on the supervisor task.
Andre Noll [Wed, 13 Jan 2010 06:39:57 +0000 (07:39 +0100)]
client.c: Add comment on the supervisor task.

14 years agomp3dec: Don't check for bad data delay on errors.
Andre Noll [Wed, 13 Jan 2010 06:37:00 +0000 (07:37 +0100)]
mp3dec: Don't check for bad data delay on errors.

14 years agomp3dec does not need --buffer_tree.
Andre Noll [Wed, 13 Jan 2010 06:35:38 +0000 (07:35 +0100)]
mp3dec does not need --buffer_tree.

14 years agostdin: Avoid overrun errors.
Andre Noll [Wed, 13 Jan 2010 06:33:50 +0000 (07:33 +0100)]
stdin: Avoid overrun errors.

Request a timeout of 100ms if the buffer pool is full rather
than returning an error.

14 years agoalsa: Ignore errors from the btr query.
Andre Noll [Wed, 13 Jan 2010 06:16:32 +0000 (07:16 +0100)]
alsa: Ignore errors from the btr query.

Just use default values in case samplerate and channels can not
be obtained from parent nodes of the buffer tree.

14 years agoconfigure.ac: para_client needs time.o.
Andre Noll [Wed, 13 Jan 2010 06:14:50 +0000 (07:14 +0100)]
configure.ac: para_client needs time.o.

14 years agoalsa: Always write as much as possible.
Andre Noll [Wed, 13 Jan 2010 03:58:54 +0000 (04:58 +0100)]
alsa: Always write as much as possible.

No need to play games with snd_pcm_avail_update().

14 years agoalsa: Increase timeout on eof to 20ms.
Andre Noll [Wed, 13 Jan 2010 03:58:19 +0000 (04:58 +0100)]
alsa: Increase timeout on eof to 20ms.

14 years agoKill fields buf, loaded and output_error of struct receiver node.
Andre Noll [Wed, 13 Jan 2010 01:54:02 +0000 (02:54 +0100)]
Kill fields buf, loaded and output_error of struct receiver node.

14 years agoudp_recv: Kill non-btr code.
Andre Noll [Wed, 13 Jan 2010 01:39:46 +0000 (02:39 +0100)]
udp_recv: Kill non-btr code.

14 years agodccp_recv: Kill non-btr code.
Andre Noll [Wed, 13 Jan 2010 01:34:31 +0000 (02:34 +0100)]
dccp_recv: Kill non-btr code.

14 years agohttp_recv: Kill non-btr code.
Andre Noll [Wed, 13 Jan 2010 01:30:02 +0000 (02:30 +0100)]
http_recv: Kill non-btr code.

14 years agorecv: Use buffer tree API unconditionally.
Andre Noll [Wed, 13 Jan 2010 01:22:55 +0000 (02:22 +0100)]
recv: Use buffer tree API unconditionally.

This allows to kill the -B option.

14 years agoAdd btr support for the dccp receiver.
Andre Noll [Wed, 13 Jan 2010 01:17:30 +0000 (02:17 +0100)]
Add btr support for the dccp receiver.

14 years agoRemove ->shutdown of struct receiver.
Andre Noll [Tue, 12 Jan 2010 23:33:47 +0000 (00:33 +0100)]
Remove ->shutdown of struct receiver.

All three shutdown functions are stubs.

14 years agoaudiod: Make mode switching (on, off, sb) work again.
Andre Noll [Tue, 12 Jan 2010 23:23:54 +0000 (00:23 +0100)]
audiod: Make mode switching (on, off, sb) work again.

It is not sufficient to set the task status to an error value. We
also have to remove the btr node from the buffer tree.

14 years agofilter.h: Kill some unused fields of struct filter_node.
Andre Noll [Tue, 12 Jan 2010 07:14:19 +0000 (08:14 +0100)]
filter.h: Kill some unused fields of struct filter_node.

14 years agofilter: Remove allocation of filter buffers.
Andre Noll [Tue, 12 Jan 2010 07:12:44 +0000 (08:12 +0100)]
filter: Remove allocation of filter buffers.

fn->buf is not used any more.

14 years agofecdec: Kill some dead code.
Andre Noll [Tue, 12 Jan 2010 06:52:02 +0000 (07:52 +0100)]
fecdec: Kill some dead code.

fn->btrn is never NULL.

14 years agoKill unused filter_node->fc.
Andre Noll [Tue, 12 Jan 2010 06:30:59 +0000 (07:30 +0100)]
Kill unused filter_node->fc.

14 years agofilter/audiod: Be nice to filters without close method.
Andre Noll [Tue, 12 Jan 2010 06:25:40 +0000 (07:25 +0100)]
filter/audiod: Be nice to filters without close method.

14 years agoKill unused struct filter_chain.
Andre Noll [Tue, 12 Jan 2010 06:17:43 +0000 (07:17 +0100)]
Kill unused struct filter_chain.

14 years agoMore oggdec cleanups.
Andre Noll [Tue, 12 Jan 2010 06:12:58 +0000 (07:12 +0100)]
More oggdec cleanups.

14 years agoKill unused struct filter_callbacks.
Andre Noll [Tue, 12 Jan 2010 06:05:00 +0000 (07:05 +0100)]
Kill unused struct filter_callbacks.

Stream grabbing doesn't work with callbacks any more.

14 years agoKill global close_filters().
Andre Noll [Tue, 12 Jan 2010 06:03:18 +0000 (07:03 +0100)]
Kill global close_filters().

This allows to skip the leading underscore from audiod's
_close_filters().

14 years agoKill filter->convert.
Andre Noll [Tue, 12 Jan 2010 05:55:44 +0000 (06:55 +0100)]
Kill filter->convert.

Its last user was filter_postselect().

14 years agoKill unused filter_post_select().
Andre Noll [Tue, 12 Jan 2010 05:54:53 +0000 (06:54 +0100)]
Kill unused filter_post_select().

14 years agomp3dec: Kill non-btr code.
Andre Noll [Tue, 12 Jan 2010 05:43:48 +0000 (06:43 +0100)]
mp3dec: Kill non-btr code.

14 years agoaacdec: Kill non-btr code.
Andre Noll [Tue, 12 Jan 2010 05:37:13 +0000 (06:37 +0100)]
aacdec: Kill non-btr code.

14 years agooggdec: Kill non-btr code.
Andre Noll [Tue, 12 Jan 2010 05:31:44 +0000 (06:31 +0100)]
oggdec: Kill non-btr code.

14 years agoprebuffer: Use new sched helper functions.
Andre Noll [Tue, 12 Jan 2010 05:26:49 +0000 (06:26 +0100)]
prebuffer: Use new sched helper functions.

14 years agoPrebuffer: Kill non-btr code.
Andre Noll [Tue, 12 Jan 2010 05:25:52 +0000 (06:25 +0100)]
Prebuffer: Kill non-btr code.

14 years agowmadec: Kill non-btr code.
Andre Noll [Tue, 12 Jan 2010 03:36:37 +0000 (04:36 +0100)]
wmadec: Kill non-btr code.

14 years agoFecdec: Kill non-btr code.
Andre Noll [Tue, 12 Jan 2010 03:33:23 +0000 (04:33 +0100)]
Fecdec: Kill non-btr code.

14 years agofilter: Print meaningful error message if no filter options are given.
Andre Noll [Tue, 12 Jan 2010 03:28:02 +0000 (04:28 +0100)]
filter: Print meaningful error message if no filter options are given.

14 years agoamp: Kill non-btr code.
Andre Noll [Tue, 12 Jan 2010 03:11:09 +0000 (04:11 +0100)]
amp: Kill non-btr code.

14 years agowav_filter: Kill non-btr code.
Andre Noll [Tue, 12 Jan 2010 01:11:22 +0000 (02:11 +0100)]
wav_filter: Kill non-btr code.

14 years agocompress: Kill non-btr code.
Andre Noll [Tue, 12 Jan 2010 01:03:53 +0000 (02:03 +0100)]
compress: Kill non-btr code.

14 years agofilter: Remove non-btr code.
Andre Noll [Tue, 12 Jan 2010 00:47:47 +0000 (01:47 +0100)]
filter: Remove non-btr code.

This paves the street for further filter cleanups which will finally
result in the removal of struct filter_chain.

14 years agoaudiod.h: Remove unused slot_info->fc.
Andre Noll [Tue, 12 Jan 2010 00:43:30 +0000 (01:43 +0100)]
audiod.h: Remove unused slot_info->fc.

14 years agovss: Fix offset handling.
Andre Noll [Tue, 12 Jan 2010 00:10:36 +0000 (01:10 +0100)]
vss: Fix offset handling.

Commit fb6d93240 (vss: Update offset directly when setting the REPOS
flag.) was buggy. On pause/restart we miss to update mmd->offset,
hence the status items which are sent to the stat clients like audiod
did not contain the correct offset value either which messes up
the time string that audiod sends to its clients (para_gui).

We need to set the new offset both on repos requests and on restart,
do introduce a small helper function for this purpose.

14 years agoaudiod: Fix a bug in try_to_close_slot() for default config.
Andre Noll [Tue, 12 Jan 2010 00:01:34 +0000 (01:01 +0100)]
audiod: Fix a bug in try_to_close_slot() for default config.

If the default writer is used because no --writer option was given,
a->num_writers is zero although we have one (the default) writer.
Handle this case correctly to avoid starting the receiver too early.

14 years agoaudiod: Don't open the receiver too early.
Andre Noll [Mon, 11 Jan 2010 23:59:16 +0000 (00:59 +0100)]
audiod: Don't open the receiver too early.

Also use sched_request_timeout() instead of setting the timeout
directly.

14 years agoaudiod _close_filters(): Don't segfault if fn is NULL.
Andre Noll [Mon, 11 Jan 2010 23:57:24 +0000 (00:57 +0100)]
audiod _close_filters(): Don't segfault if fn is NULL.

14 years agoaudiod: Make writer_cleanup() accept NULL pointer argument.
Andre Noll [Mon, 11 Jan 2010 23:55:59 +0000 (00:55 +0100)]
audiod: Make writer_cleanup() accept NULL pointer argument.

14 years agoaudiod: Fix time string.
Andre Noll [Mon, 11 Jan 2010 01:51:08 +0000 (02:51 +0100)]
audiod: Fix time string.

Copy the data which is relevant for generating the string at writer
node start time, i.e. when the writer produced its first output.

14 years agoaudiod: Timing fixes.
Andre Noll [Mon, 11 Jan 2010 00:06:39 +0000 (01:06 +0100)]
audiod: Timing fixes.

14 years agoudp_recv: Loglevel adjustments.
Andre Noll [Mon, 11 Jan 2010 00:03:58 +0000 (01:03 +0100)]
udp_recv: Loglevel adjustments.

14 years agosched: Add some helper functions.
Andre Noll [Mon, 11 Jan 2010 00:03:11 +0000 (01:03 +0100)]
sched: Add some helper functions.

14 years ago[btr] Export btr_pool_size().
Andre Noll [Sun, 10 Jan 2010 18:53:22 +0000 (19:53 +0100)]
[btr] Export btr_pool_size().

14 years agograb: Implement -n option to specify the name of the btrn.
Andre Noll [Sun, 10 Jan 2010 18:52:19 +0000 (19:52 +0100)]
grab: Implement -n option to specify the name of the btrn.

14 years agoAdd E_STDIN_OVERRUN error code.
Andre Noll [Sun, 10 Jan 2010 18:50:56 +0000 (19:50 +0100)]
Add E_STDIN_OVERRUN error code.

14 years agostdout: Try to write as much as possible in one go.
Andre Noll [Sun, 10 Jan 2010 18:49:58 +0000 (19:49 +0100)]
stdout: Try to write as much as possible in one go.

14 years agostdin: Use buffer pools.
Andre Noll [Sun, 10 Jan 2010 17:40:40 +0000 (18:40 +0100)]
stdin: Use buffer pools.

This introduces a memory leak to be fixed in a subsequent patch (the
buffer pool can not be freed in post_select() because there might
still be references to its area).

14 years ago[btr]: Avoid large memcpy()s when creating the wrap buffers.
Andre Noll [Sun, 10 Jan 2010 17:22:49 +0000 (18:22 +0100)]
[btr]: Avoid large memcpy()s when creating the wrap buffers.

14 years agoMajor grab_client cleanups.
Andre Noll [Sun, 10 Jan 2010 04:07:59 +0000 (05:07 +0100)]
Major grab_client cleanups.

- Move struct declarations from grab_client.h to grab_client.c.

- Kill init_grabbing(). We can do this at compile time.

- Rename some functions and improve documentation.

14 years agoFix stream grabbing.
Andre Noll [Sun, 10 Jan 2010 03:30:45 +0000 (04:30 +0100)]
Fix stream grabbing.

The new code uses a buffer tree node which is inserted into an existing
buffer tree if possible, or put to the inactive list.

The grab command now takes the name of an existing parent node. The new
grab client node will be inserted as a child of this parent node.

14 years agobtr_node_status(): Do not segfault if btrn is NULL.
Andre Noll [Sun, 10 Jan 2010 03:25:16 +0000 (04:25 +0100)]
btr_node_status(): Do not segfault if btrn is NULL.

14 years agoMinor logging and documentation updates.
Andre Noll [Sat, 9 Jan 2010 21:34:22 +0000 (22:34 +0100)]
Minor logging and documentation updates.

14 years agoAdd btr pool support to the fecdec filter.
Andre Noll [Sat, 9 Jan 2010 21:25:17 +0000 (22:25 +0100)]
Add btr pool support to the fecdec filter.

The consumers of the output of fecdec are typically the decoders
which have requirements on the minimal amount of data available
in one chunk. Using a buffer pool minimizes the number of memcpy()
operations needed during btr_merge when the current buffer is too small.

To fit the needs of fecdec, a new function btr_copy() is introduced
which copies a data buffer into the btr pool area and generates
btr buffers and references. btr_add_output_pool() had to be adjusted
a bit and all callers have been changed to match.

The patch also adds a new field "name" to the buffer_pool structure.
This makes the log output more readable.

14 years agoudp_recv: Use buffer pool API.
Andre Noll [Sat, 9 Jan 2010 17:41:07 +0000 (18:41 +0100)]
udp_recv: Use buffer pool API.

Although fecdec, the filter receiving the output of the udp receiver,
does not strictly benefit from this change, using buffer pools in
receivers has the advantage that we don't need to guess the input
buffer size or call realloc() after the receive to shrink the buffer.

14 years agoImplement buffer tree pool support.
Andre Noll [Sat, 9 Jan 2010 01:28:15 +0000 (02:28 +0100)]
Implement buffer tree pool support.

Using a buffer pool avoids quite some uses of memcpy() and memmove().
This patch also switches over the http receiver to use buffer pools.

14 years agoaudiod: Kill noisy debug message.
Andre Noll [Sat, 9 Jan 2010 01:24:02 +0000 (02:24 +0100)]
audiod: Kill noisy debug message.

14 years agomp3dec: Improve error message.
Andre Noll [Sat, 9 Jan 2010 00:31:38 +0000 (01:31 +0100)]
mp3dec: Improve error message.

14 years agooggdec fixes.
Andre Noll [Sat, 9 Jan 2010 00:31:16 +0000 (01:31 +0100)]
oggdec fixes.

If opening the stream fails because the segment available is too small,
we must not consume this data, which is what cb_read_btr() does
unconditionally.

Make it store the number of consumed bytes in pod->converted and consume
from ogg_init() and ogg_post_select() instead.

14 years agoamp filter fixes.
Andre Noll [Fri, 8 Jan 2010 19:06:05 +0000 (20:06 +0100)]
amp filter fixes.

- Avoid double free.
- Print correct amplification value in log message.

14 years agoSwitch audiod over to the buffer tree API.
Andre Noll [Wed, 6 Jan 2010 23:48:47 +0000 (00:48 +0100)]
Switch audiod over to the buffer tree API.

Still a bit rough and there are too many btr merges.

14 years agovss: Update offset directly when setting the REPOS flag.
Andre Noll [Wed, 6 Jan 2010 23:45:25 +0000 (00:45 +0100)]
vss: Update offset directly when setting the REPOS flag.

This way, the new offset is used during the next announce period.

14 years agosched.h: Explicitely mention size of task status buffer.
Andre Noll [Wed, 6 Jan 2010 23:42:10 +0000 (00:42 +0100)]
sched.h: Explicitely mention size of task status buffer.

14 years agosched: Update "now" also after post_select.
Andre Noll [Wed, 6 Jan 2010 23:40:57 +0000 (00:40 +0100)]
sched: Update "now" also after post_select.

14 years agooggdec: Move init into a separate function.
Andre Noll [Wed, 6 Jan 2010 23:35:55 +0000 (00:35 +0100)]
oggdec: Move init into a separate function.

14 years agoaacdec: Reset "consumed" at each iteration.
Andre Noll [Wed, 6 Jan 2010 23:25:14 +0000 (00:25 +0100)]
aacdec: Reset "consumed" at each iteration.

14 years agobtr support for the fecdec filter.
Andre Noll [Tue, 5 Jan 2010 22:08:36 +0000 (23:08 +0100)]
btr support for the fecdec filter.