FreeCalypso > hg > themwi-rtp-lib
changeset 23:9e477a4b485a
endp: implement RTP Rx
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 07 Jul 2024 06:27:56 +0000 |
parents | 587437b62ed5 |
children | 84d427017d2f |
files | src/Makefile src/rtp_rx.c |
diffstat | 2 files changed, 44 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/Makefile Sun Jul 07 04:33:55 2024 +0000 +++ b/src/Makefile Sun Jul 07 06:27:56 2024 +0000 @@ -1,5 +1,5 @@ -OBJS= bind_fdpair.o endp_bind.o endp_create.o endp_register.o set_remote.o \ - twjit.o twjit_in.o twjit_out.o twjit_vty.o +OBJS= bind_fdpair.o endp_bind.o endp_create.o endp_register.o rtp_rx.o \ + set_remote.o twjit.o twjit_in.o twjit_out.o twjit_vty.o LIB= libtwrtp.a include ../config.defs
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/rtp_rx.c Sun Jul 07 06:27:56 2024 +0000 @@ -0,0 +1,42 @@ +/* + * Here we implement RTP Rx path via osmo_io callback. + */ + +#include <stdint.h> +#include <stdbool.h> + +#include <osmocom/core/msgb.h> +#include <osmocom/core/osmo_io.h> +#include <osmocom/core/socket.h> +#include <osmocom/core/utils.h> + +#include <themwi/rtp/endp.h> +#include <themwi/rtp/twjit.h> +#include "endp_internal.h" + +static void rtp_rx_cb(struct osmo_io_fd *iofd, int res, struct msgb *msg, + const struct osmo_sockaddr *saddr) +{ + struct twrtp_endp *endp = osmo_iofd_get_data(iofd); + + if (!msg) + return; + if (!endp->remote_set) { + msgb_free(msg); + return; + } + if (osmo_sockaddr_cmp(saddr, &endp->rtp_remote)) { + endp->stats.rx_rtp_badsrc++; + msgb_free(msg); + return; + } + endp->stats.rx_rtp_pkt++; + if (endp->rx_enable) + twrtp_jibuf_input(endp->twjit, msg); + else + msgb_free(msg); +} + +const struct osmo_io_ops _twrtp_endp_iops_rtp = { + .recvfrom_cb = rtp_rx_cb, +};