server: Cleanly shut down senders on exit. This introduces ->shutdown for struct sender. Each of the three senders implements the new method to close file descriptors and to deallocate the resources occupied by the sender. The method is only called on exit via the new vss_shutdown() from both server and command handler context after schedule() returns. We need to introduce another helper, process_is_command_handler(), to distinguish between the two callers.
Shorten copyright notice. The GPLv2 line does not add any additional information, so drop it. This leaves a single line of legalese text for most files, which is about the amount of screen real estate it deserves. This patch was created with the following script (plus some manual fixups): awk '{ if (NR <= 5) { gs = gensub(/.*Copyright.* ([0-9]+).*Andre Noll.*/, "\\1", "g") if (gs != $0) year = gs next } if (NR == 6 && year != "") printf("/* Copyright (C) %s Andre Noll <maan@tuebingen.mpg.de>, see file COPYING. */\n", year) print }'
server: Rename init_vss_task() to vss_init(). The function not only initializes the vss task but also the three senders. Moreover, all other public functions of vss.c are also prefixed with vss_. Finally, the new name is shorter.
Update year in copyright headers. Done with files=$(git grep -l 'Copyright (C) [0-9]\{4\}\(-2014\)* Andre Noll') sed --in-place= -e 's/Copyright (C) \([0-9]\{4\}\)-2014 Andre Noll/Copyright (C) \1 Andre Noll/1' $files In previous years we ran a similar script to set the second year in the range to the current year. This is kind of silly, so let's get rid of this useless information. This commit replaces "Copyright (C) A-B" by "Copyright (C) A" in all file headers, i.e. only the first year (A) is left in. Accurate information including time stamps for each change can be obtained from the git history.
doc: Change email address to maan@tuebingen.mpg.de The mail server on systemlinux.org was down for more than a week lately, so let's use an alternative official address. This commit changes all maan@systemlinux.org addresses to maan@tuebingen.mpg.de. Most .c and .h files contain the email address in the copyright header, so they must all be patched. Three other files contain the address for a different reason: * README lists email and git, gitweb and home page URLs * configure.ac needs it for configure -h * version.c contains it for the -V option of all commands
Change copyright year to 2014. This year, we're really on time. The changes in this patch were created by the following silly script: files=$(git grep -l 'Copyright (C) [0-9]\{4\}\(-2013\)* Andre Noll') sed --in-place= -e 's/Copyright (C) \([0-9]\{4\}\)-2013 Andre Noll/Copyright (C) \1-2014 Andre Noll/1' $files sed --in-place= -e 's/Copyright (C) 2013 Andre Noll/Copyright (C) 2013-2014 Andre Noll/1' $files
Change copyright year to 2013. Better late than never.
Change year in copyright message to 2012.
sched: Allow more than one running scheduler instance. The interactive completion code must be able to run a second, independent scheduler instance for generating the possible completions. This is currently not possible because the pre_select and post_select list heads of the scheduler are defined globally in sched.c. This patch moves these list heads from sched.c to struct sched. This leaves only the global "now" variable in sched.c, but it is OK to update this from all scheduler instances, so it can stay. Moving the two list heads to struct sched requires that several public functions, among them register_task(), grow an additional parameter. The (mostly trivial) changes that update all callers to provide the new argument make the patch rather invasive, unfortunately.
Replace 2010 in copyright message by 2011.
Kill supported_audio_formats(). It's kind of silly to have a function that just returns a constant string which is known at compile time. Even more silly is to contruct this string using an #ifdef for each optional audio format when we already constructed the space-separated list of supported audio formats during configure. So just use AC_DEFINE_UNQUOTED() in configure.ac to make the list of supported audio formats available via config.h and get rid of supported_audio_formats(). Rename it to SERVER_AUDIO_FORMATS and kill a useless space character while we're at it.
vss: unify calls to the FEC layer This reorganizes the internal vss data structures a bit to unify calls to the FEC layer across different senders: * each sender supplies its sender_client data via the 'sc' pointer; * the init_fec()/send_fec() function pointers are now parameters (so that a global variable is not needed); * both these functions then operate on the supplied sender_client data; * the transport layer can then interpret the sender_client data in specific ways, e.g. by accessing sc->private_data; * a new 'ready' flag has been added to track transport-layer state; * max_slice_size as paramter has been restored (for overriding MPS value). Note: this is one patch out of several. It comments out now-incompatible changes in the API for the sake of being able to compile. However, the new global API requires the whole set of patches to be applied.
Basic infrastructure changes for FEC/DCCP support. This patch allows to add a FEC client without specifying the FEC parameters. Instead, these parameters are set at stream start time via the new ->open() method of the senders. It is desirable to defer ssetting the FEC parameters to allow dynamic determination of the slice size. We need an established connection to find out the best value for the slice size, but the UDP sender currently has to fix the slice size at target add time, which is too early. The slice size for the UDP and the DCCP sender are currently hardcoded values; this will be fixed by subsequent patches.
Change year in COPYRIGHT to 2010. Hey, this is earlier than last year :)
vss.h: Kill unused VSS_CHANGE.
Add some more FEC source code documentation.
Add forward error correction code to the udp sender/receiver. This patch adds the first draft of a FEC implementation based on code by Luigi Rizzo. On the server side, the FEC encoding is done within the virtual streaming system which also contains the timing routines for sending a FEC-encoded audio stream. Senders my request such an encoded stream by calling vss_add_fec_client() with a fec_client_parms structure that contains the FEC parameters and a callback function which is used to actually send the data. On the receiver side, the new fecdec filter is introduced which must be used to decode a FEC-encoded stream. As the fec parameters are contained in the header of each data slice of the encoded stream, no options to this filter are necessary. ATM, FEC is only used by the udp sender/receiver, but other protocols can be easily changed to use FEC as well. This new code is still experimental, lacks documentation and the fec parameters can currently only be changed by editing the source code.
Change year of copyright from 2008 to 2009.
Make para_server use the generic scheduling code.
Make vss_send_chunk() static.