FreeCalypso > hg > themwi-rtp-lib
diff src/rtp_rx.c @ 23:9e477a4b485a
endp: implement RTP Rx
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 07 Jul 2024 06:27:56 +0000 |
parents | |
children |
line wrap: on
line diff
--- /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, +};