X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=audiod.c;h=668b0f744cf316d3c1b8ad916845831f3c88b2d0;hp=99b4c7df78ddfe2b48058726a5a3acc9ca18fd61;hb=7ff087268774d4bb7838a8575d2d9471ab52a27d;hpb=9bf4bc297a7cb88f4f886c6b8d600fd6c584139c diff --git a/audiod.c b/audiod.c index 99b4c7df..668b0f74 100644 --- a/audiod.c +++ b/audiod.c @@ -191,7 +191,7 @@ int get_audio_format_num(const char *name) * It has to to take into account that probably the stream was not started at * the beginning of the file, that the clock between the server and the client * host may differ and that playback of the stream was delayed, e.g. because - * the prebuffer filter is used in the filter chain of the given slot. + * the prebuffer filter is used in the filter configuration of the given slot. * * If no writer is active in the given slot, or \a slot_num is negative * (indicating that para_audiod runs in standby mode), an approximation based @@ -358,6 +358,8 @@ static void close_receiver(int slot_num) btr_free_node(s->receiver_node->btrn); free(s->receiver_node); s->receiver_node = NULL; + tv_add(now, &(struct timeval)EMBRACE(0, 200 * 1000), + &a->restart_barrier); } static void writer_cleanup(struct writer_node *wn) @@ -863,7 +865,8 @@ static int init_default_filters(void) * If udp is used to receive this audiod format, add fecdec as * the first filter. */ - if (strcmp(afi[i].receiver->name, "udp") == 0) { + if (strcmp(afi[i].receiver->name, "udp") == 0 || + strcmp(afi[i].receiver->name, "dccp") == 0) { tmp = para_strdup("fecdec"); add_filter(i, tmp); free(tmp); @@ -980,15 +983,11 @@ static void signal_pre_select(struct sched *s, struct task *t) para_fd_set(st->fd, &s->rfds, &s->max_fileno); } -static void signal_post_select(struct sched *s, struct task *t) +static void signal_post_select(struct sched *s, __a_unused struct task *t) { - struct signal_task *st = container_of(t, struct signal_task, task); int signum; - if (!FD_ISSET(st->fd, &s->rfds)) - return; - - signum = para_next_signal(); + signum = para_next_signal(&s->rfds); switch (signum) { case SIGINT: case SIGTERM: