/*
- * Copyright (C) 2005-2007 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2008 Andre Noll <maan@systemlinux.org>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
#include "afs.h"
#include "server.h"
#include "vss.h"
-#include "send.h"
#include "list.h"
+#include "send.h"
#include "ortp.h"
-/** \cond convert in_addr to ascii */
+/** Convert in_addr to ascii. */
#define TARGET_ADDR(oc) inet_ntoa((oc)->addr)
-/** \endcond */
-/** describes one entry in the list of targets for the ortp sender */
+/** Describes one entry in the list of targets for the ortp sender. */
struct ortp_target {
-/** address info */
+ /** Address info. */
struct in_addr addr;
-/** whether the ortp sender is activated */
+ /** Whether the ortp sender is activated. */
int status;
-/** the ortp timestamp increases by this amount */
+ /** The ortp timestamp increases by this amount. */
uint32_t chunk_ts;
-/** the currently used timestamp for this target */
+ /** The currently used timestamp for this target. */
uint32_t last_ts;
-/** the position of this target in the list of targets */
+ /** The position of this target in the list of targets. */
struct list_head node;
-/** the UDP port */
+ /** The UDP port. */
int port;
-/** non-zero if at least one chunk has been sent to this target */
+ /** Non-zero if at least one chunk has been sent to this target. */
int streaming;
-/** the session pointer from libortp */
+ /** The session pointer from libortp. */
RtpSession *session;
};
static struct list_head targets;
static struct sender *self;
+static int sender_status;
static void ortp_delete_target(struct ortp_target *ot, const char *msg)
{
}
static void ortp_send(long unsigned current_chunk, long unsigned chunks_sent,
- const char *buf, size_t len)
+ const char *buf, size_t len, const char *header_buf,
+ size_t header_len)
{
struct ortp_target *ot, *tmp;
size_t sendbuf_len;
- unsigned header_len = 0;
int packet_type = ORTP_DATA;
- char *sendbuf, *header_buf = NULL;
+ char *sendbuf;
struct timeval *chunk_tv;
- if (self->status != SENDER_ON)
+ if (sender_status != SENDER_ON)
return;
// PARA_NOTICE_LOG("sending %lu\n", current_chunk);
}
if (list_empty(&targets))
return;
- header_buf = vss_get_header(&header_len);
if (!need_extra_header(current_chunk))
header_len = 0;
sendbuf_len = ORTP_AUDIO_HEADER_LEN + header_len + len;
static int ortp_com_on(__a_unused struct sender_command_data *scd)
{
- self->status = SENDER_ON;
+ sender_status = SENDER_ON;
return 1;
}
static int ortp_com_off(__a_unused struct sender_command_data *scd)
{
ortp_shutdown_targets();
- self->status = SENDER_OFF;
+ sender_status = SENDER_OFF;
return 1;
}
tgts = tmp;
}
ret = make_message(
- "ortp status: %s\n"
- "ortp default port: udp %d\n"
- "ortp targets: %s\n",
- (self->status == SENDER_ON)? "on" : "off",
+ "ortp sender:\n"
+ "\tstatus: %s\n"
+ "\tport: udp %d\n"
+ "\ttargets: %s\n",
+ (sender_status == SENDER_ON)? "on" : "off",
conf.ortp_default_port_arg,
tgts? tgts : "(none)"
);
}
}
-static void ortp_pre_select(__a_unused int *max_fileno, __a_unused fd_set *rfds,
- __a_unused fd_set *wfds)
-{
- return;
-}
-
static char *ortp_help(void)
{
return make_message(
s->info = ortp_info;
s->help = ortp_help;
s->send = ortp_send;
- s->pre_select = ortp_pre_select;
+ s->pre_select = NULL;
s->post_select = NULL;
s->shutdown_clients = ortp_shutdown_targets;
s->client_cmds[SENDER_ON] = ortp_com_on;
s->client_cmds[SENDER_ADD] = ortp_com_add;
s->client_cmds[SENDER_DELETE] = ortp_com_delete;
self = s;
- s->status = SENDER_OFF;
+ sender_status = SENDER_OFF;
ortp_init_target_list();
if (!conf.ortp_no_autostart_given)
- s->status = SENDER_ON;
- PARA_DEBUG_LOG("%s", "ortp sender init complete\n");
+ sender_status = SENDER_ON;
+ PARA_DEBUG_LOG("ortp sender init complete\n");
}