/*
- * Copyright (C) 2005-2013 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2014 Andre Noll <maan@systemlinux.org>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/** \file audiod.c The paraslash's audio daemon. */
+
+#include <netinet/in.h>
+#include <sys/socket.h>
#include <regex.h>
#include <sys/types.h>
+#include <arpa/inet.h>
+#include <sys/un.h>
+#include <netdb.h>
#include <signal.h>
#include "para.h"
* from the status items received from para_server and the start time of the
* (first) writer of the given slot.
*
- * It has to to take into account that probably the stream was not started at
+ * It has to take into account that the stream was probably 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 configuration of the given slot.
return true;
}
-static unsigned compute_time_diff(const struct timeval *status_time)
+static void compute_time_diff(const struct timeval *status_time)
{
struct timeval tmp, diff;
static unsigned count;
const struct timeval max_deviation = {0, 500 * 1000};
const int time_smooth = 5;
- if (!status_time)
- return count;
sign = tv_diff(status_time, now, &diff);
// PARA_NOTICE_LOG("%s: sign = %i, sa_time_diff_sign = %i\n", __func__,
// sign, sa_time_diff_sign);
);
out:
stat_task->sa_time_diff_sign = sa_time_diff_sign;
- return count;
}
static int update_item(int itemnum, char *buf)
*/
void __noreturn clean_exit(int status, const char *msg)
{
- int i;
-
if (socket_name)
unlink(socket_name);
close_stat_pipe();
- FOR_EACH_SLOT(i)
- close_slot(i);
+ close_unused_slots();
audiod_cmdline_parser_free(&conf);
close_stat_clients();
PARA_EMERG_LOG("%s\n", msg);
{
int ret;
struct slot_info *sl;
- struct audio_format_info *a;
close_unused_slots();
if (audiod_status != AUDIOD_ON ||
return;
}
sl = slot + ret;
- a = afi + sl->format;
- if (a->num_filters)
- open_filters(sl);
+ open_filters(sl);
open_writers(sl);
activate_grab_clients(&sched);
btr_log_tree(sl->receiver_node->btrn, LL_NOTICE);