X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=ortp_send.c;h=18b5edd345fe66c048ee1dc0f2eaa4911e617fbe;hp=deb7d94763dfe53b6a58963bd0360175eda171de;hb=d36f1dae4e1ee0756fdd885c1596fa8df8990491;hpb=3525efa6cb3a08500ea4fe1e2874fa7a6d0ec5f4 diff --git a/ortp_send.c b/ortp_send.c index deb7d947..18b5edd3 100644 --- a/ortp_send.c +++ b/ortp_send.c @@ -1,28 +1,17 @@ /* - * Copyright (C) 2005-2006 Andre Noll + * Copyright (C) 2005-2007 Andre Noll * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + * Licensed under the GPL v2. For licencing details see COPYING. */ /** \file ortp_send.c para_server's ortp sender */ #include +#include #include "server.cmdline.h" #include "server.h" -#include "afs.h" +#include "vss.h" #include "send.h" #include "list.h" #include "ortp.h" @@ -39,9 +28,9 @@ struct ortp_target { /** whether the ortp sender is activated */ int status; /** the ortp timestamp increases by this amount */ - int chunk_ts; + uint32_t chunk_ts; /** the currently used timestamp for this target */ - int last_ts; + uint32_t last_ts; /** the position of this target in the list of targets */ struct list_head node; /** the UDP port */ @@ -67,22 +56,25 @@ static void ortp_delete_target(struct ortp_target *ot, const char *msg) free(ot); } -static void ortp_send_buf(char *buf, int len, long unsigned chunks_sent) +static void ortp_send_buf(char *buf, size_t len, long unsigned chunks_sent) { struct ortp_target *ot, *tmp; - int ret; + int ret, ortp_len = len; /* rtp_session_send_with_ts expects int */ + if (ortp_len < 0) + return; list_for_each_entry_safe(ot, tmp, &targets, node) { - int ts; + uint32_t ts; if (!ot->session) continue; WRITE_CHUNK_TS(buf, ot->chunk_ts); ts = ot->chunk_ts * chunks_sent; - ret = rtp_session_send_with_ts(ot->session, (unsigned char *)buf, len, ts); + ret = rtp_session_send_with_ts(ot->session, + (unsigned char*)buf, ortp_len, ts); ot->last_ts = ts; if (ret < 0) ortp_delete_target(ot, "send error"); - if (ret != len +12) + if (ret != len + 12) PARA_NOTICE_LOG("short write %d\n", ret); } } @@ -127,7 +119,7 @@ static void ortp_init_session(struct ortp_target *ot) set_multicast(s); } -/* called by afs */ +/* called by vss */ static void ortp_shutdown_targets(void) { unsigned char buf[ORTP_AUDIO_HEADER_LEN]; @@ -167,14 +159,14 @@ static void ortp_send(long unsigned current_chunk, long unsigned chunks_sent, { struct ortp_target *ot, *tmp; size_t sendbuf_len; - int header_len = 0; + unsigned header_len = 0; int packet_type = ORTP_DATA; char *sendbuf, *header_buf = NULL; struct timeval *chunk_tv; if (self->status != SENDER_ON) return; - chunk_tv = afs_chunk_time(); + chunk_tv = vss_chunk_time(); if (!chunk_tv) return; list_for_each_entry_safe(ot, tmp, &targets, node) { @@ -185,14 +177,14 @@ static void ortp_send(long unsigned current_chunk, long unsigned chunks_sent, } if (!ot->chunk_ts) ot->chunk_ts = rtp_session_time_to_ts(ot->session, - tv2ms(chunk_tv)); + (int)tv2ms(chunk_tv)); // PARA_DEBUG_LOG("len: %d, ts: %lu, ts: %d\n", // len, ot->chunk_ts * chunks_sent, ot->chunk_ts); ot->streaming = 1; } if (list_empty(&targets)) return; - header_buf = afs_get_header(&header_len); + 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; @@ -248,7 +240,7 @@ static void ortp_add_target(int port, struct in_addr *addr) ot->addr = *addr; PARA_INFO_LOG("adding to target list (%s:%d)\n", TARGET_ADDR(ot), ot->port); - list_add(&ot->node, &targets); + para_list_add(&ot->node, &targets); } static int ortp_com_add(struct sender_command_data *scd)