FreeCalypso > hg > themwi-system-sw
view sip-manual-out/rtp.c @ 187:258932879f8b
sip-manual-out: rework for internal RTP handling, using themwi-rtp-mgr
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 16 Mar 2023 23:46:17 -0800 |
parents | |
children | 6aecee01cf0a |
line wrap: on
line source
/* * In this module we implement our RTP handling: obtaining a PSTN-side * RTP endpoint from themwi-rtp-mgr, then handling read select on RTP * and RTCP UDP sockets. */ #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <strings.h> #include "../include/tmgw_const.h" #include "../librtpalloc/rtp_alloc_simple.h" struct sockaddr_in rtp_local_addr; int rtp_udp_fd, rtcp_udp_fd; static int got_some_rtp, got_some_rtcp; void obtain_rtp_endp() { int rc; struct rtp_alloc_simple res; rc = rtp_alloc_simple(TMGW_EP_TYPE_PSTN_ONLY, &res); if (rc < 0) exit(1); /* error msg already printed */ bcopy(&res.pstn_addr, &rtp_local_addr, sizeof(struct sockaddr_in)); rtp_udp_fd = res.pstn_rtp_fd; rtcp_udp_fd = res.pstn_rtcp_fd; } void rtp_rx_select() { u_char buf[512]; recv(rtp_udp_fd, buf, sizeof buf, 0); if (!got_some_rtp) { printf("Got some RTP\n"); got_some_rtp = 1; } } void rtcp_rx_select() { u_char buf[512]; recv(rtcp_udp_fd, buf, sizeof buf, 0); if (!got_some_rtcp) { printf("Got some RTCP\n"); got_some_rtcp = 1; } }