X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=ortp_send.c;h=17f14d17618e6b4893a176838b16ec9c8880437d;hp=9095a8f87272a5d1ae26ae8c6f0a42cae0a4aa41;hb=d27b31524e1d60ad4fdbeb606bba31ba0ee54048;hpb=06e7fb50098513c14d08c82fa1579d7bd105dc5c diff --git a/ortp_send.c b/ortp_send.c index 9095a8f8..17f14d17 100644 --- a/ortp_send.c +++ b/ortp_send.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2007 Andre Noll + * Copyright (C) 2005-2008 Andre Noll * * Licensed under the GPL v2. For licencing details see COPYING. */ @@ -11,40 +11,42 @@ #include "server.cmdline.h" #include "para.h" +#include "error.h" +#include "string.h" #include "afh.h" +#include "afs.h" #include "server.h" #include "vss.h" -#include "send.h" #include "list.h" +#include "send.h" #include "ortp.h" -#include "string.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) { @@ -157,17 +159,19 @@ static int need_extra_header(long unsigned current_chunk) } 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); chunk_tv = vss_chunk_time(); if (!chunk_tv) return; @@ -186,7 +190,6 @@ static void ortp_send(long unsigned current_chunk, long unsigned chunks_sent, } 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; @@ -210,14 +213,14 @@ static void ortp_send(long unsigned current_chunk, long unsigned chunks_sent, 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; } @@ -264,10 +267,11 @@ static char *ortp_info(void) 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)" ); @@ -305,12 +309,6 @@ success: } } -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( @@ -334,7 +332,7 @@ void ortp_send_init(struct sender *s) 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; @@ -344,9 +342,9 @@ void ortp_send_init(struct sender *s) 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"); }